The final(?) edition of el14jbed's ELEC2645 project

Dependencies:   N5110 SDFileSystem mbed

Jacob Markl 200852678

Committer:
horizontalwolf
Date:
Thu May 05 13:33:38 2016 +0000
Revision:
0:cba7494d5dff
Final(?) version of ELEC2645 project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
horizontalwolf 0:cba7494d5dff 1 /*
horizontalwolf 0:cba7494d5dff 2 ELEC2645 Project Jacob Markl 200852678
horizontalwolf 0:cba7494d5dff 3
horizontalwolf 0:cba7494d5dff 4 Week 19 - Tested display, started writing arrays
horizontalwolf 0:cba7494d5dff 5
horizontalwolf 0:cba7494d5dff 6 Week 20 - More arrays, started writing map builders
horizontalwolf 0:cba7494d5dff 7
horizontalwolf 0:cba7494d5dff 8 Week 21 - nothing, did PCB
horizontalwolf 0:cba7494d5dff 9
horizontalwolf 0:cba7494d5dff 10 Sometime During Easter - reworked some bits, More Sprites, Map builder, Map writer, started on player builder and player movement
horizontalwolf 0:cba7494d5dff 11
horizontalwolf 0:cba7494d5dff 12 Week 22 - Reworked player builder and movement. added map interaction
horizontalwolf 0:cba7494d5dff 13
horizontalwolf 0:cba7494d5dff 14 Week 23 - added mobs, music, saving highscores, reading music from the sd card, added a tutorial, added settings, fixed up some bits and bobs.
horizontalwolf 0:cba7494d5dff 15
horizontalwolf 0:cba7494d5dff 16 Week 24 - rounded off all parts of the code, expanded game slightly.
horizontalwolf 0:cba7494d5dff 17 */
horizontalwolf 0:cba7494d5dff 18 #include "mbed.h"
horizontalwolf 0:cba7494d5dff 19 #include "N5110.h"
horizontalwolf 0:cba7494d5dff 20 #include "Arrays.h"
horizontalwolf 0:cba7494d5dff 21 #include "Variables.h"
horizontalwolf 0:cba7494d5dff 22 #include "Mobs.h"
horizontalwolf 0:cba7494d5dff 23 #include "Tickersandmore.h"
horizontalwolf 0:cba7494d5dff 24 #include "SDcard.h"
horizontalwolf 0:cba7494d5dff 25 #include <vector>
horizontalwolf 0:cba7494d5dff 26
horizontalwolf 0:cba7494d5dff 27
horizontalwolf 0:cba7494d5dff 28
horizontalwolf 0:cba7494d5dff 29 void init_K64F();
horizontalwolf 0:cba7494d5dff 30 void BUI_isr();
horizontalwolf 0:cba7494d5dff 31 void BRI_isr();
horizontalwolf 0:cba7494d5dff 32 void BDI_isr();
horizontalwolf 0:cba7494d5dff 33 void BLI_isr();
horizontalwolf 0:cba7494d5dff 34 void BAI_isr();
horizontalwolf 0:cba7494d5dff 35 void BBI_isr();
horizontalwolf 0:cba7494d5dff 36 void map_builder(int mapnumber);
horizontalwolf 0:cba7494d5dff 37 void player_builder();
horizontalwolf 0:cba7494d5dff 38 void screen_builder();
horizontalwolf 0:cba7494d5dff 39 void player_movement();
horizontalwolf 0:cba7494d5dff 40 void Attack();
horizontalwolf 0:cba7494d5dff 41 void stats();
horizontalwolf 0:cba7494d5dff 42 void timer1_isr();
horizontalwolf 0:cba7494d5dff 43 void timer2_isr();
horizontalwolf 0:cba7494d5dff 44 void buttons();
horizontalwolf 0:cba7494d5dff 45 void init_game();
horizontalwolf 0:cba7494d5dff 46 void outidle();
horizontalwolf 0:cba7494d5dff 47 void win();
horizontalwolf 0:cba7494d5dff 48 void lose();
horizontalwolf 0:cba7494d5dff 49 void main_menu();
horizontalwolf 0:cba7494d5dff 50 void game();
horizontalwolf 0:cba7494d5dff 51 void settings();
horizontalwolf 0:cba7494d5dff 52 void addtopscore();
horizontalwolf 0:cba7494d5dff 53 void highscores();
horizontalwolf 0:cba7494d5dff 54 void tutorial();
horizontalwolf 0:cba7494d5dff 55 void timeoutsound();
horizontalwolf 0:cba7494d5dff 56 void startscreen();
horizontalwolf 0:cba7494d5dff 57 void drawlines();
horizontalwolf 0:cba7494d5dff 58 void level2screen();
horizontalwolf 0:cba7494d5dff 59
horizontalwolf 0:cba7494d5dff 60 //###################### CODE #####################
horizontalwolf 0:cba7494d5dff 61
horizontalwolf 0:cba7494d5dff 62 int main()
horizontalwolf 0:cba7494d5dff 63 {
horizontalwolf 0:cba7494d5dff 64 while(1) {
horizontalwolf 0:cba7494d5dff 65 init_K64F();
horizontalwolf 0:cba7494d5dff 66 lcd.init();
horizontalwolf 0:cba7494d5dff 67 startscreen();
horizontalwolf 0:cba7494d5dff 68 main_menu();
horizontalwolf 0:cba7494d5dff 69 }
horizontalwolf 0:cba7494d5dff 70 }
horizontalwolf 0:cba7494d5dff 71
horizontalwolf 0:cba7494d5dff 72
horizontalwolf 0:cba7494d5dff 73 void init_K64F()
horizontalwolf 0:cba7494d5dff 74 {
horizontalwolf 0:cba7494d5dff 75 BUI.fall(&BUI_isr);
horizontalwolf 0:cba7494d5dff 76 BUI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 77 BRI.fall(&BRI_isr);
horizontalwolf 0:cba7494d5dff 78 BRI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 79 BDI.fall(&BDI_isr);
horizontalwolf 0:cba7494d5dff 80 BDI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 81 BLI.fall(&BLI_isr);
horizontalwolf 0:cba7494d5dff 82 BLI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 83 BAI.fall(&BAI_isr);
horizontalwolf 0:cba7494d5dff 84 BAI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 85 BBI.fall(&BBI_isr);
horizontalwolf 0:cba7494d5dff 86 BBI.mode(PullDown);
horizontalwolf 0:cba7494d5dff 87
horizontalwolf 0:cba7494d5dff 88 g_BUI_flag = 0;
horizontalwolf 0:cba7494d5dff 89 g_BRI_flag = 0;
horizontalwolf 0:cba7494d5dff 90 g_BDI_flag = 0;
horizontalwolf 0:cba7494d5dff 91 g_BLI_flag = 0;
horizontalwolf 0:cba7494d5dff 92 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 93 g_BBI_flag = 0;
horizontalwolf 0:cba7494d5dff 94 g_timer1_flag = 0;
horizontalwolf 0:cba7494d5dff 95 g_timer2_flag = 0;
horizontalwolf 0:cba7494d5dff 96
horizontalwolf 0:cba7494d5dff 97 }
horizontalwolf 0:cba7494d5dff 98
horizontalwolf 0:cba7494d5dff 99
horizontalwolf 0:cba7494d5dff 100 void BUI_isr()
horizontalwolf 0:cba7494d5dff 101 {
horizontalwolf 0:cba7494d5dff 102 g_BUI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 103 }
horizontalwolf 0:cba7494d5dff 104
horizontalwolf 0:cba7494d5dff 105 void BRI_isr()
horizontalwolf 0:cba7494d5dff 106 {
horizontalwolf 0:cba7494d5dff 107 g_BRI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 108 }
horizontalwolf 0:cba7494d5dff 109
horizontalwolf 0:cba7494d5dff 110 void BDI_isr()
horizontalwolf 0:cba7494d5dff 111 {
horizontalwolf 0:cba7494d5dff 112 g_BDI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 113 }
horizontalwolf 0:cba7494d5dff 114
horizontalwolf 0:cba7494d5dff 115 void BLI_isr()
horizontalwolf 0:cba7494d5dff 116 {
horizontalwolf 0:cba7494d5dff 117 g_BLI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 118 }
horizontalwolf 0:cba7494d5dff 119
horizontalwolf 0:cba7494d5dff 120 void BAI_isr()
horizontalwolf 0:cba7494d5dff 121 {
horizontalwolf 0:cba7494d5dff 122 g_BAI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 123 }
horizontalwolf 0:cba7494d5dff 124
horizontalwolf 0:cba7494d5dff 125 void BBI_isr()
horizontalwolf 0:cba7494d5dff 126 {
horizontalwolf 0:cba7494d5dff 127 g_BBI_flag = 1; // set flag in ISR
horizontalwolf 0:cba7494d5dff 128 }
horizontalwolf 0:cba7494d5dff 129
horizontalwolf 0:cba7494d5dff 130 void map_builder(int mapnumber)
horizontalwolf 0:cba7494d5dff 131 {
horizontalwolf 0:cba7494d5dff 132 int mapx = 0;
horizontalwolf 0:cba7494d5dff 133 int mapy = 0;
horizontalwolf 0:cba7494d5dff 134 int spritex = 0;
horizontalwolf 0:cba7494d5dff 135 int spritey = 0;
horizontalwolf 0:cba7494d5dff 136
horizontalwolf 0:cba7494d5dff 137 switch(mapnumber) {
horizontalwolf 0:cba7494d5dff 138 case 1:
horizontalwolf 0:cba7494d5dff 139 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 140 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 141 g_layout[x][y] = g_map_1[x][y];
horizontalwolf 0:cba7494d5dff 142 }
horizontalwolf 0:cba7494d5dff 143 }
horizontalwolf 0:cba7494d5dff 144 break;
horizontalwolf 0:cba7494d5dff 145 case 2:
horizontalwolf 0:cba7494d5dff 146 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 147 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 148 g_layout[x][y] = g_map_2[x][y];
horizontalwolf 0:cba7494d5dff 149 }
horizontalwolf 0:cba7494d5dff 150 }
horizontalwolf 0:cba7494d5dff 151 break;
horizontalwolf 0:cba7494d5dff 152 case 3:
horizontalwolf 0:cba7494d5dff 153 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 154 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 155 g_layout[x][y] = g_map_3[x][y];
horizontalwolf 0:cba7494d5dff 156 }
horizontalwolf 0:cba7494d5dff 157 }
horizontalwolf 0:cba7494d5dff 158 break;
horizontalwolf 0:cba7494d5dff 159 case 4:
horizontalwolf 0:cba7494d5dff 160 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 161 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 162 g_layout[x][y] = g_map_4[x][y];
horizontalwolf 0:cba7494d5dff 163 }
horizontalwolf 0:cba7494d5dff 164 }
horizontalwolf 0:cba7494d5dff 165 break;
horizontalwolf 0:cba7494d5dff 166 case 5:
horizontalwolf 0:cba7494d5dff 167 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 168 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 169 g_layout[x][y] = g_map_5[x][y];
horizontalwolf 0:cba7494d5dff 170 }
horizontalwolf 0:cba7494d5dff 171 }
horizontalwolf 0:cba7494d5dff 172 break;
horizontalwolf 0:cba7494d5dff 173 case 6:
horizontalwolf 0:cba7494d5dff 174 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 175 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 176 g_layout[x][y] = g_map_6[x][y];
horizontalwolf 0:cba7494d5dff 177 }
horizontalwolf 0:cba7494d5dff 178 }
horizontalwolf 0:cba7494d5dff 179 break;
horizontalwolf 0:cba7494d5dff 180 case 7:
horizontalwolf 0:cba7494d5dff 181 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 182 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 183 g_layout[x][y] = g_map_7[x][y];
horizontalwolf 0:cba7494d5dff 184 }
horizontalwolf 0:cba7494d5dff 185 }
horizontalwolf 0:cba7494d5dff 186 break;
horizontalwolf 0:cba7494d5dff 187 case 8:
horizontalwolf 0:cba7494d5dff 188 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 189 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 190 g_layout[x][y] = g_map_8[x][y];
horizontalwolf 0:cba7494d5dff 191 }
horizontalwolf 0:cba7494d5dff 192 }
horizontalwolf 0:cba7494d5dff 193 break;
horizontalwolf 0:cba7494d5dff 194 case 9:
horizontalwolf 0:cba7494d5dff 195 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 196 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 197 g_layout[x][y] = g_map_9[x][y];
horizontalwolf 0:cba7494d5dff 198 }
horizontalwolf 0:cba7494d5dff 199 }
horizontalwolf 0:cba7494d5dff 200 break;
horizontalwolf 0:cba7494d5dff 201 case 10:
horizontalwolf 0:cba7494d5dff 202 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 203 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 204 g_layout[x][y] = g_map_10[x][y];
horizontalwolf 0:cba7494d5dff 205 }
horizontalwolf 0:cba7494d5dff 206 }
horizontalwolf 0:cba7494d5dff 207 break;
horizontalwolf 0:cba7494d5dff 208 case 11:
horizontalwolf 0:cba7494d5dff 209 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 210 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 211 g_layout[x][y] = g_map_11[x][y];
horizontalwolf 0:cba7494d5dff 212 }
horizontalwolf 0:cba7494d5dff 213 }
horizontalwolf 0:cba7494d5dff 214 break;
horizontalwolf 0:cba7494d5dff 215 case 12:
horizontalwolf 0:cba7494d5dff 216 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 217 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 218 g_layout[x][y] = g_map_12[x][y];
horizontalwolf 0:cba7494d5dff 219 }
horizontalwolf 0:cba7494d5dff 220 }
horizontalwolf 0:cba7494d5dff 221 break;
horizontalwolf 0:cba7494d5dff 222 case 13:
horizontalwolf 0:cba7494d5dff 223 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 224 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 225 g_layout[x][y] = g_map_13[x][y];
horizontalwolf 0:cba7494d5dff 226 }
horizontalwolf 0:cba7494d5dff 227 }
horizontalwolf 0:cba7494d5dff 228 break;
horizontalwolf 0:cba7494d5dff 229 default:
horizontalwolf 0:cba7494d5dff 230 for(int x = 0; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 231 for (int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 232 g_layout[x][y] = g_map_1[x][y];
horizontalwolf 0:cba7494d5dff 233 }
horizontalwolf 0:cba7494d5dff 234 }
horizontalwolf 0:cba7494d5dff 235 break;
horizontalwolf 0:cba7494d5dff 236 }
horizontalwolf 0:cba7494d5dff 237
horizontalwolf 0:cba7494d5dff 238 for(int x = 0 ; x < 8; x++) {
horizontalwolf 0:cba7494d5dff 239 mapy = 0;
horizontalwolf 0:cba7494d5dff 240 for ( int y = 0; y < 8 ; y++) {
horizontalwolf 0:cba7494d5dff 241 switch(g_layout[x][y]) {
horizontalwolf 0:cba7494d5dff 242 case 0:
horizontalwolf 0:cba7494d5dff 243 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 244 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 245 g_screen[mapy+spritey][mapx+spritex] = 0;
horizontalwolf 0:cba7494d5dff 246 }
horizontalwolf 0:cba7494d5dff 247 }
horizontalwolf 0:cba7494d5dff 248
horizontalwolf 0:cba7494d5dff 249 break;
horizontalwolf 0:cba7494d5dff 250 case 1:
horizontalwolf 0:cba7494d5dff 251 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 252 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 253 g_screen[mapy+spritey][mapx+spritex] = g_rock[spritex][spritey];
horizontalwolf 0:cba7494d5dff 254 }
horizontalwolf 0:cba7494d5dff 255 }
horizontalwolf 0:cba7494d5dff 256 break;
horizontalwolf 0:cba7494d5dff 257 case 2:
horizontalwolf 0:cba7494d5dff 258 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 259 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 260 g_screen[mapy+spritey][mapx+spritex] = 2+g_exit[spritex][spritey];
horizontalwolf 0:cba7494d5dff 261 }
horizontalwolf 0:cba7494d5dff 262 }
horizontalwolf 0:cba7494d5dff 263
horizontalwolf 0:cba7494d5dff 264 break;
horizontalwolf 0:cba7494d5dff 265 case 4:
horizontalwolf 0:cba7494d5dff 266 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 267 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 268 g_screen[mapy+spritey][mapx+spritex] = 4+g_door[spritex][spritey];
horizontalwolf 0:cba7494d5dff 269 }
horizontalwolf 0:cba7494d5dff 270 }
horizontalwolf 0:cba7494d5dff 271
horizontalwolf 0:cba7494d5dff 272 break;
horizontalwolf 0:cba7494d5dff 273 case 5:
horizontalwolf 0:cba7494d5dff 274 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 275 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 276 g_screen[mapy+spritey][mapx+spritex] = 6+g_door[spritex][spritey];
horizontalwolf 0:cba7494d5dff 277 }
horizontalwolf 0:cba7494d5dff 278 }
horizontalwolf 0:cba7494d5dff 279 break;
horizontalwolf 0:cba7494d5dff 280 case 6:
horizontalwolf 0:cba7494d5dff 281 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 282 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 283 g_screen[mapy+spritey][mapx+spritex] = 8+g_door[spritex][spritey];
horizontalwolf 0:cba7494d5dff 284 }
horizontalwolf 0:cba7494d5dff 285 }
horizontalwolf 0:cba7494d5dff 286 break;
horizontalwolf 0:cba7494d5dff 287 case 7:
horizontalwolf 0:cba7494d5dff 288 for(spritex = 0; spritex < 6; spritex++) {
horizontalwolf 0:cba7494d5dff 289 for (spritey = 0; spritey < 6 ; spritey++) {
horizontalwolf 0:cba7494d5dff 290 g_screen[mapy+spritey][mapx+spritex] = 10+g_door[spritex][spritey];
horizontalwolf 0:cba7494d5dff 291 }
horizontalwolf 0:cba7494d5dff 292 }
horizontalwolf 0:cba7494d5dff 293 break;
horizontalwolf 0:cba7494d5dff 294 }
horizontalwolf 0:cba7494d5dff 295 mapy = mapy + 6;
horizontalwolf 0:cba7494d5dff 296 }
horizontalwolf 0:cba7494d5dff 297 mapx = mapx + 6;
horizontalwolf 0:cba7494d5dff 298 }
horizontalwolf 0:cba7494d5dff 299
horizontalwolf 0:cba7494d5dff 300 }
horizontalwolf 0:cba7494d5dff 301
horizontalwolf 0:cba7494d5dff 302 void screen_builder()
horizontalwolf 0:cba7494d5dff 303 {
horizontalwolf 0:cba7494d5dff 304 for( int x = 0; x < 48; x++) {
horizontalwolf 0:cba7494d5dff 305 for (int y = 0; y < 48 ; y++) {
horizontalwolf 0:cba7494d5dff 306 if (((g_screen[x][y])%2)==0) {
horizontalwolf 0:cba7494d5dff 307 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 308 } else {
horizontalwolf 0:cba7494d5dff 309 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 310 }
horizontalwolf 0:cba7494d5dff 311 }
horizontalwolf 0:cba7494d5dff 312 }
horizontalwolf 0:cba7494d5dff 313 }
horizontalwolf 0:cba7494d5dff 314
horizontalwolf 0:cba7494d5dff 315 void player_builder()
horizontalwolf 0:cba7494d5dff 316 {
horizontalwolf 0:cba7494d5dff 317 int mapx = g_playerlocationy*6;
horizontalwolf 0:cba7494d5dff 318 int mapy = g_playerlocationx*6;
horizontalwolf 0:cba7494d5dff 319 int csprite[6][6];
horizontalwolf 0:cba7494d5dff 320 int player[6][6];
horizontalwolf 0:cba7494d5dff 321 if (g_playersprite == true) {
horizontalwolf 0:cba7494d5dff 322 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 323 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 324 csprite[x][y] = g_playerA[x][y];
horizontalwolf 0:cba7494d5dff 325 }
horizontalwolf 0:cba7494d5dff 326 }
horizontalwolf 0:cba7494d5dff 327 } else {
horizontalwolf 0:cba7494d5dff 328 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 329 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 330 csprite[x][y] = g_player[x][y];
horizontalwolf 0:cba7494d5dff 331 }
horizontalwolf 0:cba7494d5dff 332 }
horizontalwolf 0:cba7494d5dff 333 }
horizontalwolf 0:cba7494d5dff 334 switch (g_playerfacing) {
horizontalwolf 0:cba7494d5dff 335 case 0:
horizontalwolf 0:cba7494d5dff 336 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 337 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 338 player[x][y] = csprite[y][5-x];
horizontalwolf 0:cba7494d5dff 339 }
horizontalwolf 0:cba7494d5dff 340 }
horizontalwolf 0:cba7494d5dff 341
horizontalwolf 0:cba7494d5dff 342 break;
horizontalwolf 0:cba7494d5dff 343
horizontalwolf 0:cba7494d5dff 344 case 1:
horizontalwolf 0:cba7494d5dff 345 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 346 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 347 player[x][y] = csprite[x][y];
horizontalwolf 0:cba7494d5dff 348 }
horizontalwolf 0:cba7494d5dff 349 }
horizontalwolf 0:cba7494d5dff 350 break;
horizontalwolf 0:cba7494d5dff 351
horizontalwolf 0:cba7494d5dff 352 case 2:
horizontalwolf 0:cba7494d5dff 353 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 354 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 355 player[x][y] = csprite[5-y][x];
horizontalwolf 0:cba7494d5dff 356 }
horizontalwolf 0:cba7494d5dff 357 }
horizontalwolf 0:cba7494d5dff 358
horizontalwolf 0:cba7494d5dff 359 break;
horizontalwolf 0:cba7494d5dff 360 case 3:
horizontalwolf 0:cba7494d5dff 361 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 362 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 363 player[x][y] = csprite[5-x][5-y];
horizontalwolf 0:cba7494d5dff 364 }
horizontalwolf 0:cba7494d5dff 365 }
horizontalwolf 0:cba7494d5dff 366 break;
horizontalwolf 0:cba7494d5dff 367
horizontalwolf 0:cba7494d5dff 368 }
horizontalwolf 0:cba7494d5dff 369 for(int x = 0; x < 6; x++) {
horizontalwolf 0:cba7494d5dff 370 for (int y = 0; y < 6 ; y++) {
horizontalwolf 0:cba7494d5dff 371 g_screen[mapy+y][mapx+x] = 12+player[x][y];
horizontalwolf 0:cba7494d5dff 372
horizontalwolf 0:cba7494d5dff 373 }
horizontalwolf 0:cba7494d5dff 374 }
horizontalwolf 0:cba7494d5dff 375 }
horizontalwolf 0:cba7494d5dff 376
horizontalwolf 0:cba7494d5dff 377 void player_movement()
horizontalwolf 0:cba7494d5dff 378 {
horizontalwolf 0:cba7494d5dff 379 bool stop = false;
horizontalwolf 0:cba7494d5dff 380 switch(g_playerdirection) {
horizontalwolf 0:cba7494d5dff 381 case 0:
horizontalwolf 0:cba7494d5dff 382 g_playerfacing = 0;
horizontalwolf 0:cba7494d5dff 383 for(int y = 0; y < 6; y++) {
horizontalwolf 0:cba7494d5dff 384 if ((g_playerlocationy-1 == g_mobs[y][2])and(g_playerlocationx== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 385 stop=true;
horizontalwolf 0:cba7494d5dff 386 }
horizontalwolf 0:cba7494d5dff 387 }
horizontalwolf 0:cba7494d5dff 388 if (g_layout[g_playerlocationy-1][g_playerlocationx]==4) {
horizontalwolf 0:cba7494d5dff 389 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 390 g_playerlocationx=3;
horizontalwolf 0:cba7494d5dff 391 g_playerlocationy=6;
horizontalwolf 0:cba7494d5dff 392 g_state = cfsm[g_state].next_state[0];
horizontalwolf 0:cba7494d5dff 393 mobs();
horizontalwolf 0:cba7494d5dff 394 }
horizontalwolf 0:cba7494d5dff 395 } else if (stop==true ) {
horizontalwolf 0:cba7494d5dff 396 } else if (g_layout[g_playerlocationy-1][g_playerlocationx]==2) {
horizontalwolf 0:cba7494d5dff 397 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 398 g_playerlocationx=3;
horizontalwolf 0:cba7494d5dff 399 g_playerlocationy=6;
horizontalwolf 0:cba7494d5dff 400 g_gamewon = true;
horizontalwolf 0:cba7494d5dff 401 }
horizontalwolf 0:cba7494d5dff 402 } else if (g_layout[g_playerlocationy-1][g_playerlocationx]!=1) {
horizontalwolf 0:cba7494d5dff 403 g_playerlocationy--;
horizontalwolf 0:cba7494d5dff 404 }
horizontalwolf 0:cba7494d5dff 405 break;
horizontalwolf 0:cba7494d5dff 406
horizontalwolf 0:cba7494d5dff 407 case 1:
horizontalwolf 0:cba7494d5dff 408 g_playerfacing = 1;
horizontalwolf 0:cba7494d5dff 409 for(int y = 0;
horizontalwolf 0:cba7494d5dff 410 y < 6;
horizontalwolf 0:cba7494d5dff 411 y++) {
horizontalwolf 0:cba7494d5dff 412 if ((g_playerlocationy == g_mobs[y][2])and(g_playerlocationx+1== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 413 stop=true;
horizontalwolf 0:cba7494d5dff 414 }
horizontalwolf 0:cba7494d5dff 415 }
horizontalwolf 0:cba7494d5dff 416 if (g_layout[g_playerlocationy][g_playerlocationx+1]==5) {
horizontalwolf 0:cba7494d5dff 417 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 418 g_playerlocationx=1;
horizontalwolf 0:cba7494d5dff 419 g_playerlocationy=4;
horizontalwolf 0:cba7494d5dff 420 g_state = cfsm[g_state].next_state[1];
horizontalwolf 0:cba7494d5dff 421 mobs();
horizontalwolf 0:cba7494d5dff 422 }
horizontalwolf 0:cba7494d5dff 423 } else if (stop==true ) {
horizontalwolf 0:cba7494d5dff 424 } else if (g_layout[g_playerlocationy][g_playerlocationx+1]==2) {
horizontalwolf 0:cba7494d5dff 425 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 426 g_playerlocationx=1;
horizontalwolf 0:cba7494d5dff 427 g_playerlocationy=4;
horizontalwolf 0:cba7494d5dff 428 g_gamewon = true;
horizontalwolf 0:cba7494d5dff 429 }
horizontalwolf 0:cba7494d5dff 430 } else if (g_layout[g_playerlocationy][g_playerlocationx+1]!=1) {
horizontalwolf 0:cba7494d5dff 431 g_playerlocationx++;
horizontalwolf 0:cba7494d5dff 432 }
horizontalwolf 0:cba7494d5dff 433
horizontalwolf 0:cba7494d5dff 434 break;
horizontalwolf 0:cba7494d5dff 435
horizontalwolf 0:cba7494d5dff 436 case 2:
horizontalwolf 0:cba7494d5dff 437 g_playerfacing = 2;
horizontalwolf 0:cba7494d5dff 438 for(int y = 0; y < 6; y++) {
horizontalwolf 0:cba7494d5dff 439 if ((g_playerlocationy+1 == g_mobs[y][2])and(g_playerlocationx== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 440 stop=true;
horizontalwolf 0:cba7494d5dff 441 }
horizontalwolf 0:cba7494d5dff 442 }
horizontalwolf 0:cba7494d5dff 443 if (g_layout[g_playerlocationy+1][g_playerlocationx]==6) {
horizontalwolf 0:cba7494d5dff 444 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 445 g_playerlocationx=3;
horizontalwolf 0:cba7494d5dff 446 g_playerlocationy=1;
horizontalwolf 0:cba7494d5dff 447 g_state = cfsm[g_state].next_state[2];
horizontalwolf 0:cba7494d5dff 448 mobs();
horizontalwolf 0:cba7494d5dff 449 }
horizontalwolf 0:cba7494d5dff 450 } else if (stop==true ) {
horizontalwolf 0:cba7494d5dff 451 } else if (g_layout[g_playerlocationy+1][g_playerlocationx]==2) {
horizontalwolf 0:cba7494d5dff 452 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 453 g_gamewon = true;
horizontalwolf 0:cba7494d5dff 454 g_playerlocationx=3;
horizontalwolf 0:cba7494d5dff 455 g_playerlocationy=1;
horizontalwolf 0:cba7494d5dff 456 }
horizontalwolf 0:cba7494d5dff 457 } else if (g_layout[g_playerlocationy+1][g_playerlocationx]!=1) {
horizontalwolf 0:cba7494d5dff 458 g_playerlocationy++;
horizontalwolf 0:cba7494d5dff 459 }
horizontalwolf 0:cba7494d5dff 460
horizontalwolf 0:cba7494d5dff 461 break;
horizontalwolf 0:cba7494d5dff 462
horizontalwolf 0:cba7494d5dff 463 case 3:
horizontalwolf 0:cba7494d5dff 464 g_playerfacing = 3;
horizontalwolf 0:cba7494d5dff 465 for(int y = 0; y < 6; y++) {
horizontalwolf 0:cba7494d5dff 466 if ((g_playerlocationy == g_mobs[y][2])and(g_playerlocationx-1== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 467 stop=true;
horizontalwolf 0:cba7494d5dff 468 }
horizontalwolf 0:cba7494d5dff 469 }
horizontalwolf 0:cba7494d5dff 470 if (g_layout[g_playerlocationy][g_playerlocationx-1]==7) {
horizontalwolf 0:cba7494d5dff 471 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 472 g_playerlocationx=6;
horizontalwolf 0:cba7494d5dff 473 g_playerlocationy=4;
horizontalwolf 0:cba7494d5dff 474 g_state = cfsm[g_state].next_state[3];
horizontalwolf 0:cba7494d5dff 475 mobs();
horizontalwolf 0:cba7494d5dff 476 }
horizontalwolf 0:cba7494d5dff 477 } else if (stop==true ) {
horizontalwolf 0:cba7494d5dff 478 } else if (g_layout[g_playerlocationy][g_playerlocationx-1]==2) {
horizontalwolf 0:cba7494d5dff 479 if (cfsm[g_state].cleared==1) {
horizontalwolf 0:cba7494d5dff 480 g_gamewon = true;
horizontalwolf 0:cba7494d5dff 481 g_playerlocationx=6;
horizontalwolf 0:cba7494d5dff 482 g_playerlocationy=4;
horizontalwolf 0:cba7494d5dff 483 }
horizontalwolf 0:cba7494d5dff 484 } else if (g_layout[g_playerlocationy][g_playerlocationx-1]!=1) {
horizontalwolf 0:cba7494d5dff 485 g_playerlocationx--;
horizontalwolf 0:cba7494d5dff 486 }
horizontalwolf 0:cba7494d5dff 487
horizontalwolf 0:cba7494d5dff 488
horizontalwolf 0:cba7494d5dff 489 break;
horizontalwolf 0:cba7494d5dff 490
horizontalwolf 0:cba7494d5dff 491 case 4:
horizontalwolf 0:cba7494d5dff 492 break;
horizontalwolf 0:cba7494d5dff 493 }
horizontalwolf 0:cba7494d5dff 494 }
horizontalwolf 0:cba7494d5dff 495
horizontalwolf 0:cba7494d5dff 496 void Attack()
horizontalwolf 0:cba7494d5dff 497 {
horizontalwolf 0:cba7494d5dff 498 g_playersprite= true;
horizontalwolf 0:cba7494d5dff 499 switch(g_playerfacing) {
horizontalwolf 0:cba7494d5dff 500
horizontalwolf 0:cba7494d5dff 501 case 0:
horizontalwolf 0:cba7494d5dff 502 for(int y = 0; y < 5; y++) {
horizontalwolf 0:cba7494d5dff 503 if ((g_playerlocationy-1 == g_mobs[y][2])and(g_playerlocationx== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 504 if (g_mobs[y][0] == 6 ) {
horizontalwolf 0:cba7494d5dff 505 g_playerhp++;
horizontalwolf 0:cba7494d5dff 506 }
horizontalwolf 0:cba7494d5dff 507 g_mobs[y][0]=0;
horizontalwolf 0:cba7494d5dff 508 g_mobs[y][1]=0;
horizontalwolf 0:cba7494d5dff 509 g_mobs[y][2]=0;
horizontalwolf 0:cba7494d5dff 510 g_mobs[y][3]=0;
horizontalwolf 0:cba7494d5dff 511 g_score= g_score+10;
horizontalwolf 0:cba7494d5dff 512 }
horizontalwolf 0:cba7494d5dff 513 }
horizontalwolf 0:cba7494d5dff 514 break;
horizontalwolf 0:cba7494d5dff 515 case 1:
horizontalwolf 0:cba7494d5dff 516 for(int y = 0; y < 5; y++) {
horizontalwolf 0:cba7494d5dff 517 if ((g_playerlocationy == g_mobs[y][2])and(g_playerlocationx+1== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 518 if (g_mobs[y][0] == 6 ) {
horizontalwolf 0:cba7494d5dff 519 g_playerhp++;
horizontalwolf 0:cba7494d5dff 520 }
horizontalwolf 0:cba7494d5dff 521 g_mobs[y][0]=0;
horizontalwolf 0:cba7494d5dff 522 g_mobs[y][1]=0;
horizontalwolf 0:cba7494d5dff 523 g_mobs[y][2]=0;
horizontalwolf 0:cba7494d5dff 524 g_mobs[y][3]=0;
horizontalwolf 0:cba7494d5dff 525 g_score= g_score+10;
horizontalwolf 0:cba7494d5dff 526 }
horizontalwolf 0:cba7494d5dff 527 }
horizontalwolf 0:cba7494d5dff 528 break;
horizontalwolf 0:cba7494d5dff 529 case 2:
horizontalwolf 0:cba7494d5dff 530 for(int y = 0; y < 5; y++) {
horizontalwolf 0:cba7494d5dff 531 if ((g_playerlocationy+1 == g_mobs[y][2])and(g_playerlocationx== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 532 if (g_mobs[y][0] == 6 ) {
horizontalwolf 0:cba7494d5dff 533 g_playerhp++;
horizontalwolf 0:cba7494d5dff 534 }
horizontalwolf 0:cba7494d5dff 535 g_mobs[y][0]=0;
horizontalwolf 0:cba7494d5dff 536 g_mobs[y][1]=0;
horizontalwolf 0:cba7494d5dff 537 g_mobs[y][2]=0;
horizontalwolf 0:cba7494d5dff 538 g_mobs[y][3]=0;
horizontalwolf 0:cba7494d5dff 539 g_score= g_score+10;
horizontalwolf 0:cba7494d5dff 540 }
horizontalwolf 0:cba7494d5dff 541 }
horizontalwolf 0:cba7494d5dff 542 break;
horizontalwolf 0:cba7494d5dff 543 case 3:
horizontalwolf 0:cba7494d5dff 544 for(int y = 0; y < 5; y++) {
horizontalwolf 0:cba7494d5dff 545 if ((g_playerlocationy == g_mobs[y][2])and(g_playerlocationx-1== g_mobs[y][1])) {
horizontalwolf 0:cba7494d5dff 546 if (g_mobs[y][0] == 6 ) {
horizontalwolf 0:cba7494d5dff 547 g_playerhp++;
horizontalwolf 0:cba7494d5dff 548 }
horizontalwolf 0:cba7494d5dff 549 g_mobs[y][0]=0;
horizontalwolf 0:cba7494d5dff 550 g_mobs[y][1]=0;
horizontalwolf 0:cba7494d5dff 551 g_mobs[y][2]=0;
horizontalwolf 0:cba7494d5dff 552 g_mobs[y][3]=0;
horizontalwolf 0:cba7494d5dff 553 g_score= g_score+10;
horizontalwolf 0:cba7494d5dff 554 }
horizontalwolf 0:cba7494d5dff 555 }
horizontalwolf 0:cba7494d5dff 556 break;
horizontalwolf 0:cba7494d5dff 557
horizontalwolf 0:cba7494d5dff 558 }
horizontalwolf 0:cba7494d5dff 559 int clear = 0;
horizontalwolf 0:cba7494d5dff 560 for(int y = 0; y < 5; y++) {
horizontalwolf 0:cba7494d5dff 561 if (g_mobs[y][0]!=0) {
horizontalwolf 0:cba7494d5dff 562 clear++;
horizontalwolf 0:cba7494d5dff 563 }
horizontalwolf 0:cba7494d5dff 564 }
horizontalwolf 0:cba7494d5dff 565 if (clear == 0) {
horizontalwolf 0:cba7494d5dff 566 cfsm[g_state].cleared=1;
horizontalwolf 0:cba7494d5dff 567 }
horizontalwolf 0:cba7494d5dff 568
horizontalwolf 0:cba7494d5dff 569
horizontalwolf 0:cba7494d5dff 570 }
horizontalwolf 0:cba7494d5dff 571
horizontalwolf 0:cba7494d5dff 572 void stats()
horizontalwolf 0:cba7494d5dff 573 {
horizontalwolf 0:cba7494d5dff 574 int startx = 51;
horizontalwolf 0:cba7494d5dff 575 int starty = 8;
horizontalwolf 0:cba7494d5dff 576 int nx = 0;
horizontalwolf 0:cba7494d5dff 577 int ny = 0;
horizontalwolf 0:cba7494d5dff 578 for(int H = 0; H < g_playerhp; H++) {
horizontalwolf 0:cba7494d5dff 579 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 580 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 581 if (((g_heart[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 582 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 583 } else {
horizontalwolf 0:cba7494d5dff 584 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 585 }
horizontalwolf 0:cba7494d5dff 586 ny++;
horizontalwolf 0:cba7494d5dff 587 }
horizontalwolf 0:cba7494d5dff 588 ny=0;
horizontalwolf 0:cba7494d5dff 589 nx++;
horizontalwolf 0:cba7494d5dff 590 }
horizontalwolf 0:cba7494d5dff 591 nx=0;
horizontalwolf 0:cba7494d5dff 592 startx=startx+6;
horizontalwolf 0:cba7494d5dff 593 }
horizontalwolf 0:cba7494d5dff 594 lcd.printString("Health",48,0);
horizontalwolf 0:cba7494d5dff 595 lcd.printString("Time",54,2);
horizontalwolf 0:cba7494d5dff 596 char buffer[14];
horizontalwolf 0:cba7494d5dff 597 sprintf(buffer,"%d",g_playtime);
horizontalwolf 0:cba7494d5dff 598
horizontalwolf 0:cba7494d5dff 599 int newx=63;
horizontalwolf 0:cba7494d5dff 600 if (g_playtime>9) {
horizontalwolf 0:cba7494d5dff 601 newx= 60;
horizontalwolf 0:cba7494d5dff 602 }
horizontalwolf 0:cba7494d5dff 603 if (g_playtime>99) {
horizontalwolf 0:cba7494d5dff 604 newx= 57;
horizontalwolf 0:cba7494d5dff 605 }
horizontalwolf 0:cba7494d5dff 606 lcd.printString(buffer,newx,3);
horizontalwolf 0:cba7494d5dff 607
horizontalwolf 0:cba7494d5dff 608 }
horizontalwolf 0:cba7494d5dff 609
horizontalwolf 0:cba7494d5dff 610 void timer1_isr()
horizontalwolf 0:cba7494d5dff 611 {
horizontalwolf 0:cba7494d5dff 612 g_timer1_flag++;
horizontalwolf 0:cba7494d5dff 613 }
horizontalwolf 0:cba7494d5dff 614
horizontalwolf 0:cba7494d5dff 615 void timer2_isr()
horizontalwolf 0:cba7494d5dff 616 {
horizontalwolf 0:cba7494d5dff 617 g_timer2_flag++;
horizontalwolf 0:cba7494d5dff 618 }
horizontalwolf 0:cba7494d5dff 619
horizontalwolf 0:cba7494d5dff 620 void buttons()
horizontalwolf 0:cba7494d5dff 621 {
horizontalwolf 0:cba7494d5dff 622 if (g_BUI_flag == 1) {
horizontalwolf 0:cba7494d5dff 623 g_BUI_flag = 0;
horizontalwolf 0:cba7494d5dff 624 g_playerdirection=0;
horizontalwolf 0:cba7494d5dff 625 idle.detach();
horizontalwolf 0:cba7494d5dff 626 g_isidle = 0;
horizontalwolf 0:cba7494d5dff 627 } else if (g_BRI_flag == 1) {
horizontalwolf 0:cba7494d5dff 628 g_BRI_flag = 0;
horizontalwolf 0:cba7494d5dff 629 g_playerdirection=1;
horizontalwolf 0:cba7494d5dff 630 idle.detach();
horizontalwolf 0:cba7494d5dff 631 g_isidle = 0;
horizontalwolf 0:cba7494d5dff 632 } else if (g_BDI_flag == 1) {
horizontalwolf 0:cba7494d5dff 633 g_BDI_flag = 0;
horizontalwolf 0:cba7494d5dff 634 g_playerdirection=2;
horizontalwolf 0:cba7494d5dff 635 idle.detach();
horizontalwolf 0:cba7494d5dff 636 g_isidle = 0;
horizontalwolf 0:cba7494d5dff 637 } else if (g_BLI_flag == 1) {
horizontalwolf 0:cba7494d5dff 638 g_BLI_flag = 0;
horizontalwolf 0:cba7494d5dff 639 g_playerdirection=3;
horizontalwolf 0:cba7494d5dff 640 idle.detach();
horizontalwolf 0:cba7494d5dff 641 g_isidle = 0;
horizontalwolf 0:cba7494d5dff 642 } else if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 643 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 644 g_playerdirection=4;
horizontalwolf 0:cba7494d5dff 645 idle.detach();
horizontalwolf 0:cba7494d5dff 646 g_isidle = 0;
horizontalwolf 0:cba7494d5dff 647 Attack();
horizontalwolf 0:cba7494d5dff 648 } else {
horizontalwolf 0:cba7494d5dff 649 g_playerdirection=4;
horizontalwolf 0:cba7494d5dff 650 }
horizontalwolf 0:cba7494d5dff 651 }
horizontalwolf 0:cba7494d5dff 652
horizontalwolf 0:cba7494d5dff 653 void init_game()
horizontalwolf 0:cba7494d5dff 654 {
horizontalwolf 0:cba7494d5dff 655 g_playersprite = false;
horizontalwolf 0:cba7494d5dff 656 g_gamewon = false;
horizontalwolf 0:cba7494d5dff 657
horizontalwolf 0:cba7494d5dff 658 g_level = 1;
horizontalwolf 0:cba7494d5dff 659 g_score = 0;
horizontalwolf 0:cba7494d5dff 660 g_playerfacing = 0;
horizontalwolf 0:cba7494d5dff 661 g_playerhp=3;
horizontalwolf 0:cba7494d5dff 662 g_playtime=0;
horizontalwolf 0:cba7494d5dff 663 g_direction = 0;
horizontalwolf 0:cba7494d5dff 664 g_playerinvun = 0;
horizontalwolf 0:cba7494d5dff 665 g_playerdirection = 4;
horizontalwolf 0:cba7494d5dff 666 g_playerlocationy = 4;
horizontalwolf 0:cba7494d5dff 667 g_playerlocationx = 2;
horizontalwolf 0:cba7494d5dff 668 g_state = 0;
horizontalwolf 0:cba7494d5dff 669 g_isidle=0;
horizontalwolf 0:cba7494d5dff 670 g_BBI_flag=0;
horizontalwolf 0:cba7494d5dff 671 g_BAI_flag=0;
horizontalwolf 0:cba7494d5dff 672 for(int x = 0; x < 4; x++) {
horizontalwolf 0:cba7494d5dff 673 for (int y = 0; y < 5 ; y++) {
horizontalwolf 0:cba7494d5dff 674 g_mobs[y][x] = 0;
horizontalwolf 0:cba7494d5dff 675 }
horizontalwolf 0:cba7494d5dff 676 }
horizontalwolf 0:cba7494d5dff 677 memcpy(cfsm,fsm,sizeof(cfsm));
horizontalwolf 0:cba7494d5dff 678 readsong();
horizontalwolf 0:cba7494d5dff 679
horizontalwolf 0:cba7494d5dff 680 }
horizontalwolf 0:cba7494d5dff 681
horizontalwolf 0:cba7494d5dff 682 void win()
horizontalwolf 0:cba7494d5dff 683 {
horizontalwolf 0:cba7494d5dff 684 int newx=36;
horizontalwolf 0:cba7494d5dff 685 lcd.clear();
horizontalwolf 0:cba7494d5dff 686 for (int y = 0; y < g_playerhp ; y++) {
horizontalwolf 0:cba7494d5dff 687 g_score=g_score+20;
horizontalwolf 0:cba7494d5dff 688 }
horizontalwolf 0:cba7494d5dff 689 if (g_playtime>250) {
horizontalwolf 0:cba7494d5dff 690 } else {
horizontalwolf 0:cba7494d5dff 691 g_score=g_score+(250-g_playtime);
horizontalwolf 0:cba7494d5dff 692 }
horizontalwolf 0:cba7494d5dff 693
horizontalwolf 0:cba7494d5dff 694 char buffer[14];
horizontalwolf 0:cba7494d5dff 695 sprintf(buffer,"%d",g_score);
horizontalwolf 0:cba7494d5dff 696 addtopscore();
horizontalwolf 0:cba7494d5dff 697 writesd();
horizontalwolf 0:cba7494d5dff 698 lcd.printString("You Won!",18,1);
horizontalwolf 0:cba7494d5dff 699 lcd.printString("Score",27,2);
horizontalwolf 0:cba7494d5dff 700 if (g_score>99) {
horizontalwolf 0:cba7494d5dff 701 newx= 30;
horizontalwolf 0:cba7494d5dff 702 }
horizontalwolf 0:cba7494d5dff 703 lcd.printString(buffer,newx,3);
horizontalwolf 0:cba7494d5dff 704 lcd.refresh();
horizontalwolf 0:cba7494d5dff 705
horizontalwolf 0:cba7494d5dff 706
horizontalwolf 0:cba7494d5dff 707 }
horizontalwolf 0:cba7494d5dff 708
horizontalwolf 0:cba7494d5dff 709 void lose()
horizontalwolf 0:cba7494d5dff 710 {
horizontalwolf 0:cba7494d5dff 711 int newx=36;
horizontalwolf 0:cba7494d5dff 712 lcd.clear();
horizontalwolf 0:cba7494d5dff 713 char buffer[14];
horizontalwolf 0:cba7494d5dff 714 sprintf(buffer,"%d",g_score);
horizontalwolf 0:cba7494d5dff 715 lcd.printString("You Died!",15,1);
horizontalwolf 0:cba7494d5dff 716 lcd.printString("Score",27,2);
horizontalwolf 0:cba7494d5dff 717 if (g_score>99) {
horizontalwolf 0:cba7494d5dff 718 newx= 30;
horizontalwolf 0:cba7494d5dff 719 }
horizontalwolf 0:cba7494d5dff 720 lcd.printString(buffer,newx,3);
horizontalwolf 0:cba7494d5dff 721 lcd.printString("Try Again",15,5);
horizontalwolf 0:cba7494d5dff 722 lcd.refresh();
horizontalwolf 0:cba7494d5dff 723 addtopscore();
horizontalwolf 0:cba7494d5dff 724 writesd();
horizontalwolf 0:cba7494d5dff 725 }
horizontalwolf 0:cba7494d5dff 726
horizontalwolf 0:cba7494d5dff 727 void main_menu()
horizontalwolf 0:cba7494d5dff 728 {
horizontalwolf 0:cba7494d5dff 729 ticker1.detach();
horizontalwolf 0:cba7494d5dff 730 lcd.clear();
horizontalwolf 0:cba7494d5dff 731 g_options = 4;
horizontalwolf 0:cba7494d5dff 732 g_select = 0;
horizontalwolf 0:cba7494d5dff 733 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 734
horizontalwolf 0:cba7494d5dff 735 while(1) {
horizontalwolf 0:cba7494d5dff 736 lcd.clear();
horizontalwolf 0:cba7494d5dff 737 for(int x = 0; x < 84; x++) {
horizontalwolf 0:cba7494d5dff 738 for (int y = 0; y < 15 ; y++) {
horizontalwolf 0:cba7494d5dff 739 if (((g_menuscreen[y][x])%2)==0) {
horizontalwolf 0:cba7494d5dff 740 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 741 } else {
horizontalwolf 0:cba7494d5dff 742 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 743 }
horizontalwolf 0:cba7494d5dff 744 }
horizontalwolf 0:cba7494d5dff 745 }
horizontalwolf 0:cba7494d5dff 746 lcd.printString("LoZ",33,0);
horizontalwolf 0:cba7494d5dff 747 lcd.printString("Play",30,2);
horizontalwolf 0:cba7494d5dff 748 lcd.printString("Settings",18,3);
horizontalwolf 0:cba7494d5dff 749 lcd.printString("Tutorial",18,4);
horizontalwolf 0:cba7494d5dff 750 lcd.printString("Highscores",12,5);
horizontalwolf 0:cba7494d5dff 751 if (g_BUI_flag == 1) {
horizontalwolf 0:cba7494d5dff 752 g_BUI_flag = 0;
horizontalwolf 0:cba7494d5dff 753 if (g_select>0) {
horizontalwolf 0:cba7494d5dff 754 g_select--;
horizontalwolf 0:cba7494d5dff 755 }
horizontalwolf 0:cba7494d5dff 756 } else if (g_BDI_flag == 1) {
horizontalwolf 0:cba7494d5dff 757 g_BDI_flag = 0;
horizontalwolf 0:cba7494d5dff 758 if (g_select<g_options-1) {
horizontalwolf 0:cba7494d5dff 759 g_select++;
horizontalwolf 0:cba7494d5dff 760 }
horizontalwolf 0:cba7494d5dff 761 } else {
horizontalwolf 0:cba7494d5dff 762 }
horizontalwolf 0:cba7494d5dff 763
horizontalwolf 0:cba7494d5dff 764 int nx = 0;
horizontalwolf 0:cba7494d5dff 765 int ny = 0;
horizontalwolf 0:cba7494d5dff 766
horizontalwolf 0:cba7494d5dff 767 for(int x = 3; x < 9; x++) {
horizontalwolf 0:cba7494d5dff 768 for (int y = (g_select*8)+17; y < ((g_select*8)+23);
horizontalwolf 0:cba7494d5dff 769 y++) {
horizontalwolf 0:cba7494d5dff 770 if (((g_sword[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 771 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 772 } else {
horizontalwolf 0:cba7494d5dff 773 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 774 }
horizontalwolf 0:cba7494d5dff 775
horizontalwolf 0:cba7494d5dff 776 ny++;
horizontalwolf 0:cba7494d5dff 777 }
horizontalwolf 0:cba7494d5dff 778 ny=0;
horizontalwolf 0:cba7494d5dff 779 nx++;
horizontalwolf 0:cba7494d5dff 780
horizontalwolf 0:cba7494d5dff 781 }
horizontalwolf 0:cba7494d5dff 782 nx=0;
horizontalwolf 0:cba7494d5dff 783 lcd.refresh();
horizontalwolf 0:cba7494d5dff 784 sleep();
horizontalwolf 0:cba7494d5dff 785 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 786 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 787 wait(0.1);
horizontalwolf 0:cba7494d5dff 788
horizontalwolf 0:cba7494d5dff 789 switch(g_select) {
horizontalwolf 0:cba7494d5dff 790 case 0:
horizontalwolf 0:cba7494d5dff 791 init_game();
horizontalwolf 0:cba7494d5dff 792 game();
horizontalwolf 0:cba7494d5dff 793 break;
horizontalwolf 0:cba7494d5dff 794
horizontalwolf 0:cba7494d5dff 795 case 1:
horizontalwolf 0:cba7494d5dff 796 settings();
horizontalwolf 0:cba7494d5dff 797 break;
horizontalwolf 0:cba7494d5dff 798
horizontalwolf 0:cba7494d5dff 799 case 2:
horizontalwolf 0:cba7494d5dff 800 tutorial();
horizontalwolf 0:cba7494d5dff 801 break;
horizontalwolf 0:cba7494d5dff 802
horizontalwolf 0:cba7494d5dff 803 case 3:
horizontalwolf 0:cba7494d5dff 804 highscores();
horizontalwolf 0:cba7494d5dff 805 break;
horizontalwolf 0:cba7494d5dff 806
horizontalwolf 0:cba7494d5dff 807 default:
horizontalwolf 0:cba7494d5dff 808
horizontalwolf 0:cba7494d5dff 809 break;
horizontalwolf 0:cba7494d5dff 810 }
horizontalwolf 0:cba7494d5dff 811 return;
horizontalwolf 0:cba7494d5dff 812 }
horizontalwolf 0:cba7494d5dff 813 }
horizontalwolf 0:cba7494d5dff 814 }
horizontalwolf 0:cba7494d5dff 815
horizontalwolf 0:cba7494d5dff 816 void game()
horizontalwolf 0:cba7494d5dff 817 {
horizontalwolf 0:cba7494d5dff 818 int n=1;
horizontalwolf 0:cba7494d5dff 819 ticker1.attach(&timer1_isr,0.5);
horizontalwolf 0:cba7494d5dff 820 ticker2.attach(&timer2_isr,g_musicarray[0]);
horizontalwolf 0:cba7494d5dff 821 while (1) {
horizontalwolf 0:cba7494d5dff 822
horizontalwolf 0:cba7494d5dff 823
horizontalwolf 0:cba7494d5dff 824 lcd.clear();
horizontalwolf 0:cba7494d5dff 825 if (g_playerhp !=0) {
horizontalwolf 0:cba7494d5dff 826 if (g_playerinvun > 0) {
horizontalwolf 0:cba7494d5dff 827 g_playerinvun--;
horizontalwolf 0:cba7494d5dff 828 }
horizontalwolf 0:cba7494d5dff 829 g_playersprite= false;
horizontalwolf 0:cba7494d5dff 830 buttons();
horizontalwolf 0:cba7494d5dff 831 player_movement();
horizontalwolf 0:cba7494d5dff 832 map_builder(cfsm[g_state].mapno);
horizontalwolf 0:cba7494d5dff 833 player_builder();
horizontalwolf 0:cba7494d5dff 834 mobturn();
horizontalwolf 0:cba7494d5dff 835 screen_builder();
horizontalwolf 0:cba7494d5dff 836 stats();
horizontalwolf 0:cba7494d5dff 837 lcd.refresh();
horizontalwolf 0:cba7494d5dff 838
horizontalwolf 0:cba7494d5dff 839 //############################ ATTACK ONLY ###########
horizontalwolf 0:cba7494d5dff 840 // if the player has attacked, this section will run and the players attack will be animated.
horizontalwolf 0:cba7494d5dff 841
horizontalwolf 0:cba7494d5dff 842 if (g_playersprite==true) {
horizontalwolf 0:cba7494d5dff 843 lcd.clear();
horizontalwolf 0:cba7494d5dff 844 player_builder();
horizontalwolf 0:cba7494d5dff 845 screen_builder();
horizontalwolf 0:cba7494d5dff 846 stats();
horizontalwolf 0:cba7494d5dff 847 lcd.refresh();
horizontalwolf 0:cba7494d5dff 848 g_playersprite = false;
horizontalwolf 0:cba7494d5dff 849 }
horizontalwolf 0:cba7494d5dff 850 //#####################################################
horizontalwolf 0:cba7494d5dff 851
horizontalwolf 0:cba7494d5dff 852
horizontalwolf 0:cba7494d5dff 853 if (g_timer1_flag) {
horizontalwolf 0:cba7494d5dff 854 g_timer1_flag = 0;
horizontalwolf 0:cba7494d5dff 855 g_playtime++;
horizontalwolf 0:cba7494d5dff 856 }
horizontalwolf 0:cba7494d5dff 857 if (g_timer2_flag) {
horizontalwolf 0:cba7494d5dff 858 g_timer2_flag = 0;
horizontalwolf 0:cba7494d5dff 859 if (g_music) {
horizontalwolf 0:cba7494d5dff 860
horizontalwolf 0:cba7494d5dff 861 tout.attach(&timeoutsound, (g_musicarray[0]/2));
horizontalwolf 0:cba7494d5dff 862 Buzz.period(1.0/1000);
horizontalwolf 0:cba7494d5dff 863 Buzz.write(0.0);
horizontalwolf 0:cba7494d5dff 864 if (g_musicarray[n]!=0) {
horizontalwolf 0:cba7494d5dff 865 Buzz.period(1/(g_musicarray[n]));
horizontalwolf 0:cba7494d5dff 866 Buzz.write(0.5);
horizontalwolf 0:cba7494d5dff 867 }
horizontalwolf 0:cba7494d5dff 868
horizontalwolf 0:cba7494d5dff 869 if (n==(g_musicarray.size()-1)) {
horizontalwolf 0:cba7494d5dff 870 n=1;
horizontalwolf 0:cba7494d5dff 871 } else {
horizontalwolf 0:cba7494d5dff 872 n++;
horizontalwolf 0:cba7494d5dff 873 }
horizontalwolf 0:cba7494d5dff 874
horizontalwolf 0:cba7494d5dff 875
horizontalwolf 0:cba7494d5dff 876 }
horizontalwolf 0:cba7494d5dff 877 }
horizontalwolf 0:cba7494d5dff 878 if (g_gamewon) {
horizontalwolf 0:cba7494d5dff 879 if (g_level == 1) {
horizontalwolf 0:cba7494d5dff 880 level2screen();
horizontalwolf 0:cba7494d5dff 881 g_gamewon = 0;
horizontalwolf 0:cba7494d5dff 882 g_level++;
horizontalwolf 0:cba7494d5dff 883 memcpy(cfsm,lvl2fsm,sizeof(cfsm));
horizontalwolf 0:cba7494d5dff 884 g_state = 0;
horizontalwolf 0:cba7494d5dff 885 } else {
horizontalwolf 0:cba7494d5dff 886 win();
horizontalwolf 0:cba7494d5dff 887 ticker1.detach();
horizontalwolf 0:cba7494d5dff 888 ticker2.detach();
horizontalwolf 0:cba7494d5dff 889 tout.detach();
horizontalwolf 0:cba7494d5dff 890 idle.detach();
horizontalwolf 0:cba7494d5dff 891 while(1) {
horizontalwolf 0:cba7494d5dff 892 if (g_BAI_flag==1) {
horizontalwolf 0:cba7494d5dff 893 g_BAI_flag==0;
horizontalwolf 0:cba7494d5dff 894 break;
horizontalwolf 0:cba7494d5dff 895 }
horizontalwolf 0:cba7494d5dff 896 sleep();
horizontalwolf 0:cba7494d5dff 897 }
horizontalwolf 0:cba7494d5dff 898 return;
horizontalwolf 0:cba7494d5dff 899 }
horizontalwolf 0:cba7494d5dff 900 }
horizontalwolf 0:cba7494d5dff 901 if (g_BBI_flag) {
horizontalwolf 0:cba7494d5dff 902 g_BBI_flag = 0;
horizontalwolf 0:cba7494d5dff 903 lcd.clear();
horizontalwolf 0:cba7494d5dff 904 lcd.printString("Are you sure",6,0);
horizontalwolf 0:cba7494d5dff 905 lcd.printString("you want to",9,1);
horizontalwolf 0:cba7494d5dff 906 lcd.printString("quit?",27,2);
horizontalwolf 0:cba7494d5dff 907 lcd.printString(" No Yes ",0,5);
horizontalwolf 0:cba7494d5dff 908 lcd.refresh();
horizontalwolf 0:cba7494d5dff 909 while(1) {
horizontalwolf 0:cba7494d5dff 910 if (g_BAI_flag==1) {
horizontalwolf 0:cba7494d5dff 911 g_BAI_flag=0;
horizontalwolf 0:cba7494d5dff 912 g_playerhp=0;
horizontalwolf 0:cba7494d5dff 913 break;
horizontalwolf 0:cba7494d5dff 914 } else if (g_BBI_flag==1) {
horizontalwolf 0:cba7494d5dff 915 g_BBI_flag=0;
horizontalwolf 0:cba7494d5dff 916 break;
horizontalwolf 0:cba7494d5dff 917
horizontalwolf 0:cba7494d5dff 918 }
horizontalwolf 0:cba7494d5dff 919 sleep();
horizontalwolf 0:cba7494d5dff 920 }
horizontalwolf 0:cba7494d5dff 921 }
horizontalwolf 0:cba7494d5dff 922 } else {
horizontalwolf 0:cba7494d5dff 923 lose();
horizontalwolf 0:cba7494d5dff 924 ticker1.detach();
horizontalwolf 0:cba7494d5dff 925 ticker2.detach();
horizontalwolf 0:cba7494d5dff 926 tout.detach();
horizontalwolf 0:cba7494d5dff 927 idle.detach();
horizontalwolf 0:cba7494d5dff 928
horizontalwolf 0:cba7494d5dff 929 while(1) {
horizontalwolf 0:cba7494d5dff 930 if (g_BAI_flag==1) {
horizontalwolf 0:cba7494d5dff 931 g_BAI_flag==0;
horizontalwolf 0:cba7494d5dff 932 break;
horizontalwolf 0:cba7494d5dff 933 }
horizontalwolf 0:cba7494d5dff 934 sleep();
horizontalwolf 0:cba7494d5dff 935 }
horizontalwolf 0:cba7494d5dff 936 return;
horizontalwolf 0:cba7494d5dff 937 }
horizontalwolf 0:cba7494d5dff 938 if (g_idle_flag) {
horizontalwolf 0:cba7494d5dff 939 g_idle_flag=0;
horizontalwolf 0:cba7494d5dff 940 lose();
horizontalwolf 0:cba7494d5dff 941 ticker1.detach();
horizontalwolf 0:cba7494d5dff 942 ticker2.detach();
horizontalwolf 0:cba7494d5dff 943 tout.detach();
horizontalwolf 0:cba7494d5dff 944 idle.detach();
horizontalwolf 0:cba7494d5dff 945 while(1) {
horizontalwolf 0:cba7494d5dff 946 if (g_BAI_flag==1) {
horizontalwolf 0:cba7494d5dff 947 g_BAI_flag==0;
horizontalwolf 0:cba7494d5dff 948 break;
horizontalwolf 0:cba7494d5dff 949 }
horizontalwolf 0:cba7494d5dff 950 sleep();
horizontalwolf 0:cba7494d5dff 951 }
horizontalwolf 0:cba7494d5dff 952 return;
horizontalwolf 0:cba7494d5dff 953 }
horizontalwolf 0:cba7494d5dff 954 if (g_isidle==0) {
horizontalwolf 0:cba7494d5dff 955 g_isidle=1;
horizontalwolf 0:cba7494d5dff 956 idle.attach(&outidle,100);
horizontalwolf 0:cba7494d5dff 957 }
horizontalwolf 0:cba7494d5dff 958 sleep();
horizontalwolf 0:cba7494d5dff 959 }
horizontalwolf 0:cba7494d5dff 960 }
horizontalwolf 0:cba7494d5dff 961
horizontalwolf 0:cba7494d5dff 962 void settings()
horizontalwolf 0:cba7494d5dff 963 {
horizontalwolf 0:cba7494d5dff 964 lcd.clear();
horizontalwolf 0:cba7494d5dff 965 g_options = 2;
horizontalwolf 0:cba7494d5dff 966 g_select = 0;
horizontalwolf 0:cba7494d5dff 967 while(1) {
horizontalwolf 0:cba7494d5dff 968 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 969 g_BBI_flag = 0;
horizontalwolf 0:cba7494d5dff 970 lcd.clear();
horizontalwolf 0:cba7494d5dff 971 lcd.printString("Settings",18,0);
horizontalwolf 0:cba7494d5dff 972 lcd.printString("Music",27,2);
horizontalwolf 0:cba7494d5dff 973 lcd.printString("Reset",27,3);
horizontalwolf 0:cba7494d5dff 974 if (g_BUI_flag == 1) {
horizontalwolf 0:cba7494d5dff 975 g_BUI_flag = 0;
horizontalwolf 0:cba7494d5dff 976 if (g_select>0) {
horizontalwolf 0:cba7494d5dff 977 g_select--;
horizontalwolf 0:cba7494d5dff 978 }
horizontalwolf 0:cba7494d5dff 979 } else if (g_BDI_flag == 1) {
horizontalwolf 0:cba7494d5dff 980 g_BDI_flag = 0;
horizontalwolf 0:cba7494d5dff 981 if (g_select<g_options-1) {
horizontalwolf 0:cba7494d5dff 982 g_select++;
horizontalwolf 0:cba7494d5dff 983 }
horizontalwolf 0:cba7494d5dff 984 } else {
horizontalwolf 0:cba7494d5dff 985 }
horizontalwolf 0:cba7494d5dff 986
horizontalwolf 0:cba7494d5dff 987 int nx = 0;
horizontalwolf 0:cba7494d5dff 988 int ny = 0;
horizontalwolf 0:cba7494d5dff 989
horizontalwolf 0:cba7494d5dff 990 for(int x = 3; x < 9; x++) {
horizontalwolf 0:cba7494d5dff 991 for (int y = (g_select*8)+17; y < ((g_select*8)+23);
horizontalwolf 0:cba7494d5dff 992 y++) {
horizontalwolf 0:cba7494d5dff 993 if (((g_sword[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 994 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 995 } else {
horizontalwolf 0:cba7494d5dff 996 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 997 }
horizontalwolf 0:cba7494d5dff 998
horizontalwolf 0:cba7494d5dff 999 ny++;
horizontalwolf 0:cba7494d5dff 1000 }
horizontalwolf 0:cba7494d5dff 1001 ny=0;
horizontalwolf 0:cba7494d5dff 1002 nx++;
horizontalwolf 0:cba7494d5dff 1003
horizontalwolf 0:cba7494d5dff 1004 }
horizontalwolf 0:cba7494d5dff 1005 nx=0;
horizontalwolf 0:cba7494d5dff 1006 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1007 sleep();
horizontalwolf 0:cba7494d5dff 1008 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1009 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1010 switch(g_select) {
horizontalwolf 0:cba7494d5dff 1011 case 0:
horizontalwolf 0:cba7494d5dff 1012 g_music=!g_music;
horizontalwolf 0:cba7494d5dff 1013 if (g_music == 1) {
horizontalwolf 0:cba7494d5dff 1014 lcd.clear();
horizontalwolf 0:cba7494d5dff 1015 lcd.printString("Music On",18,3);
horizontalwolf 0:cba7494d5dff 1016 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1017 wait(1);
horizontalwolf 0:cba7494d5dff 1018 } else {
horizontalwolf 0:cba7494d5dff 1019 lcd.clear();
horizontalwolf 0:cba7494d5dff 1020 lcd.printString("Music Off",15,3);
horizontalwolf 0:cba7494d5dff 1021 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1022 wait(1);
horizontalwolf 0:cba7494d5dff 1023 }
horizontalwolf 0:cba7494d5dff 1024
horizontalwolf 0:cba7494d5dff 1025 break;
horizontalwolf 0:cba7494d5dff 1026
horizontalwolf 0:cba7494d5dff 1027 case 1:
horizontalwolf 0:cba7494d5dff 1028 while(1) {
horizontalwolf 0:cba7494d5dff 1029 lcd.clear();
horizontalwolf 0:cba7494d5dff 1030 lcd.printString("Are",33,1);
horizontalwolf 0:cba7494d5dff 1031 lcd.printString("You",33,2);
horizontalwolf 0:cba7494d5dff 1032 lcd.printString("Sure?",27,3);
horizontalwolf 0:cba7494d5dff 1033 lcd.printString(" No Yes ",0,5);
horizontalwolf 0:cba7494d5dff 1034 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1035 sleep();
horizontalwolf 0:cba7494d5dff 1036 if (g_BAI_flag==1) {
horizontalwolf 0:cba7494d5dff 1037 g_BAI_flag=0;
horizontalwolf 0:cba7494d5dff 1038 clearsd();
horizontalwolf 0:cba7494d5dff 1039 break;
horizontalwolf 0:cba7494d5dff 1040 } else if (g_BBI_flag==1) {
horizontalwolf 0:cba7494d5dff 1041 g_BBI_flag=0;
horizontalwolf 0:cba7494d5dff 1042 break;
horizontalwolf 0:cba7494d5dff 1043
horizontalwolf 0:cba7494d5dff 1044 }
horizontalwolf 0:cba7494d5dff 1045 }
horizontalwolf 0:cba7494d5dff 1046
horizontalwolf 0:cba7494d5dff 1047 }
horizontalwolf 0:cba7494d5dff 1048 break;
horizontalwolf 0:cba7494d5dff 1049
horizontalwolf 0:cba7494d5dff 1050 }
horizontalwolf 0:cba7494d5dff 1051 if (g_BBI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1052 g_BBI_flag =0;
horizontalwolf 0:cba7494d5dff 1053 return;
horizontalwolf 0:cba7494d5dff 1054 }
horizontalwolf 0:cba7494d5dff 1055 }
horizontalwolf 0:cba7494d5dff 1056 }
horizontalwolf 0:cba7494d5dff 1057
horizontalwolf 0:cba7494d5dff 1058
horizontalwolf 0:cba7494d5dff 1059
horizontalwolf 0:cba7494d5dff 1060 void addtopscore()
horizontalwolf 0:cba7494d5dff 1061 {
horizontalwolf 0:cba7494d5dff 1062 for(int i = 0; i <= 2; i++) {
horizontalwolf 0:cba7494d5dff 1063 if (g_score>=g_topscores[i]) {
horizontalwolf 0:cba7494d5dff 1064 if (i<2) {
horizontalwolf 0:cba7494d5dff 1065 if (i==0) {
horizontalwolf 0:cba7494d5dff 1066 g_topscores[i+2]=g_topscores[i+1];
horizontalwolf 0:cba7494d5dff 1067 }
horizontalwolf 0:cba7494d5dff 1068 g_topscores[i+1]=g_topscores[i];
horizontalwolf 0:cba7494d5dff 1069 }
horizontalwolf 0:cba7494d5dff 1070 g_topscores[i]=g_score;
horizontalwolf 0:cba7494d5dff 1071
horizontalwolf 0:cba7494d5dff 1072 return;
horizontalwolf 0:cba7494d5dff 1073 }
horizontalwolf 0:cba7494d5dff 1074 }
horizontalwolf 0:cba7494d5dff 1075 }
horizontalwolf 0:cba7494d5dff 1076
horizontalwolf 0:cba7494d5dff 1077
horizontalwolf 0:cba7494d5dff 1078 void highscores()
horizontalwolf 0:cba7494d5dff 1079 {
horizontalwolf 0:cba7494d5dff 1080 readsd();
horizontalwolf 0:cba7494d5dff 1081 while(1) {
horizontalwolf 0:cba7494d5dff 1082 char score1[14];
horizontalwolf 0:cba7494d5dff 1083 char score2[14];
horizontalwolf 0:cba7494d5dff 1084 char score3[14];
horizontalwolf 0:cba7494d5dff 1085 sprintf(score1,"1st %d",g_topscores[0]);
horizontalwolf 0:cba7494d5dff 1086 sprintf(score2,"2nd %d",g_topscores[1]);
horizontalwolf 0:cba7494d5dff 1087 sprintf(score3,"3rd %d",g_topscores[2]);
horizontalwolf 0:cba7494d5dff 1088 lcd.clear();
horizontalwolf 0:cba7494d5dff 1089 lcd.printString("Highscores",12,0);
horizontalwolf 0:cba7494d5dff 1090 lcd.printString(score1,21,2);
horizontalwolf 0:cba7494d5dff 1091 lcd.printString(score2,21,3);
horizontalwolf 0:cba7494d5dff 1092 lcd.printString(score3,21,4);
horizontalwolf 0:cba7494d5dff 1093 lcd.printString("back",60,5);
horizontalwolf 0:cba7494d5dff 1094 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1095 sleep();
horizontalwolf 0:cba7494d5dff 1096 if (g_BBI_flag==1) {
horizontalwolf 0:cba7494d5dff 1097 g_BBI_flag=0;
horizontalwolf 0:cba7494d5dff 1098 break;
horizontalwolf 0:cba7494d5dff 1099 }
horizontalwolf 0:cba7494d5dff 1100 }
horizontalwolf 0:cba7494d5dff 1101 }
horizontalwolf 0:cba7494d5dff 1102
horizontalwolf 0:cba7494d5dff 1103 void tutorial()
horizontalwolf 0:cba7494d5dff 1104 {
horizontalwolf 0:cba7494d5dff 1105 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1106 lcd.clear();
horizontalwolf 0:cba7494d5dff 1107 drawlines();
horizontalwolf 0:cba7494d5dff 1108 lcd.printString("Use the D-pad",3,0);
horizontalwolf 0:cba7494d5dff 1109 lcd.printString("to control",12,1);
horizontalwolf 0:cba7494d5dff 1110 lcd.printString("Zordo",27,2);
horizontalwolf 0:cba7494d5dff 1111
horizontalwolf 0:cba7494d5dff 1112 ticker1.attach(&timer1_isr,0.5);
horizontalwolf 0:cba7494d5dff 1113 int startx=39;
horizontalwolf 0:cba7494d5dff 1114 int starty=30;
horizontalwolf 0:cba7494d5dff 1115 int ny=0;
horizontalwolf 0:cba7494d5dff 1116 int nx=0;
horizontalwolf 0:cba7494d5dff 1117 int loop=0;
horizontalwolf 0:cba7494d5dff 1118 while(1) {
horizontalwolf 0:cba7494d5dff 1119
horizontalwolf 0:cba7494d5dff 1120 if (g_timer1_flag == 1) {
horizontalwolf 0:cba7494d5dff 1121 g_timer1_flag = 0;
horizontalwolf 0:cba7494d5dff 1122 switch(loop) {
horizontalwolf 0:cba7494d5dff 1123
horizontalwolf 0:cba7494d5dff 1124 case 0:
horizontalwolf 0:cba7494d5dff 1125 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1126 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1127 if (((g_player[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 1128 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1129 } else {
horizontalwolf 0:cba7494d5dff 1130 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1131 }
horizontalwolf 0:cba7494d5dff 1132 ny++;
horizontalwolf 0:cba7494d5dff 1133 }
horizontalwolf 0:cba7494d5dff 1134 ny=0;
horizontalwolf 0:cba7494d5dff 1135 nx++;
horizontalwolf 0:cba7494d5dff 1136 }
horizontalwolf 0:cba7494d5dff 1137 nx=0;
horizontalwolf 0:cba7494d5dff 1138 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1139 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1140 loop++;
horizontalwolf 0:cba7494d5dff 1141 break;
horizontalwolf 0:cba7494d5dff 1142
horizontalwolf 0:cba7494d5dff 1143 case 1:
horizontalwolf 0:cba7494d5dff 1144 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1145 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1146 if (((g_player[5-nx][ny])%2)==0) {
horizontalwolf 0:cba7494d5dff 1147 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1148 } else {
horizontalwolf 0:cba7494d5dff 1149 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1150 }
horizontalwolf 0:cba7494d5dff 1151 ny++;
horizontalwolf 0:cba7494d5dff 1152 }
horizontalwolf 0:cba7494d5dff 1153 ny=0;
horizontalwolf 0:cba7494d5dff 1154 nx++;
horizontalwolf 0:cba7494d5dff 1155 }
horizontalwolf 0:cba7494d5dff 1156 nx=0;
horizontalwolf 0:cba7494d5dff 1157 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1158 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1159 loop++;
horizontalwolf 0:cba7494d5dff 1160 break;
horizontalwolf 0:cba7494d5dff 1161
horizontalwolf 0:cba7494d5dff 1162 case 2:
horizontalwolf 0:cba7494d5dff 1163 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1164 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1165 if (((g_player[5-ny][5-nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 1166 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1167 } else {
horizontalwolf 0:cba7494d5dff 1168 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1169 }
horizontalwolf 0:cba7494d5dff 1170 ny++;
horizontalwolf 0:cba7494d5dff 1171 }
horizontalwolf 0:cba7494d5dff 1172 ny=0;
horizontalwolf 0:cba7494d5dff 1173 nx++;
horizontalwolf 0:cba7494d5dff 1174 }
horizontalwolf 0:cba7494d5dff 1175 nx=0;
horizontalwolf 0:cba7494d5dff 1176 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1177 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1178 loop++;
horizontalwolf 0:cba7494d5dff 1179 break;
horizontalwolf 0:cba7494d5dff 1180
horizontalwolf 0:cba7494d5dff 1181 case 3:
horizontalwolf 0:cba7494d5dff 1182 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1183 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1184 if (((g_player[nx][5-ny])%2)==0) {
horizontalwolf 0:cba7494d5dff 1185 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1186 } else {
horizontalwolf 0:cba7494d5dff 1187 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1188 }
horizontalwolf 0:cba7494d5dff 1189 ny++;
horizontalwolf 0:cba7494d5dff 1190 }
horizontalwolf 0:cba7494d5dff 1191 ny=0;
horizontalwolf 0:cba7494d5dff 1192 nx++;
horizontalwolf 0:cba7494d5dff 1193 }
horizontalwolf 0:cba7494d5dff 1194 nx=0;
horizontalwolf 0:cba7494d5dff 1195 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1196 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1197 loop=0;
horizontalwolf 0:cba7494d5dff 1198 break;
horizontalwolf 0:cba7494d5dff 1199 }
horizontalwolf 0:cba7494d5dff 1200 }
horizontalwolf 0:cba7494d5dff 1201 sleep();
horizontalwolf 0:cba7494d5dff 1202 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1203 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1204 wait(0.1);
horizontalwolf 0:cba7494d5dff 1205 break;
horizontalwolf 0:cba7494d5dff 1206 }
horizontalwolf 0:cba7494d5dff 1207 }
horizontalwolf 0:cba7494d5dff 1208 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1209 lcd.clear();
horizontalwolf 0:cba7494d5dff 1210 drawlines();
horizontalwolf 0:cba7494d5dff 1211 lcd.printString("The A button",6,0);
horizontalwolf 0:cba7494d5dff 1212 lcd.printString("will attack",9,1);
horizontalwolf 0:cba7494d5dff 1213 lcd.printString("with Zordo's",6,2);
horizontalwolf 0:cba7494d5dff 1214 lcd.printString("Sword",27,3);
horizontalwolf 0:cba7494d5dff 1215
horizontalwolf 0:cba7494d5dff 1216 startx=39;
horizontalwolf 0:cba7494d5dff 1217 starty=36;
horizontalwolf 0:cba7494d5dff 1218 loop = 0;
horizontalwolf 0:cba7494d5dff 1219 while(1) {
horizontalwolf 0:cba7494d5dff 1220 if (g_timer1_flag == 1) {
horizontalwolf 0:cba7494d5dff 1221 g_timer1_flag = 0;
horizontalwolf 0:cba7494d5dff 1222 switch(loop) {
horizontalwolf 0:cba7494d5dff 1223 case 0:
horizontalwolf 0:cba7494d5dff 1224 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1225 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1226 if (((g_player[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 1227 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1228 } else {
horizontalwolf 0:cba7494d5dff 1229 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1230 }
horizontalwolf 0:cba7494d5dff 1231 ny++;
horizontalwolf 0:cba7494d5dff 1232 }
horizontalwolf 0:cba7494d5dff 1233 ny=0;
horizontalwolf 0:cba7494d5dff 1234 nx++;
horizontalwolf 0:cba7494d5dff 1235 }
horizontalwolf 0:cba7494d5dff 1236 nx=0;
horizontalwolf 0:cba7494d5dff 1237 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1238 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1239 loop++;
horizontalwolf 0:cba7494d5dff 1240 break;
horizontalwolf 0:cba7494d5dff 1241
horizontalwolf 0:cba7494d5dff 1242 case 1:
horizontalwolf 0:cba7494d5dff 1243 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1244 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1245 if (((g_playerA[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 1246 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1247 } else {
horizontalwolf 0:cba7494d5dff 1248 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1249 }
horizontalwolf 0:cba7494d5dff 1250 ny++;
horizontalwolf 0:cba7494d5dff 1251 }
horizontalwolf 0:cba7494d5dff 1252 ny=0;
horizontalwolf 0:cba7494d5dff 1253 nx++;
horizontalwolf 0:cba7494d5dff 1254 }
horizontalwolf 0:cba7494d5dff 1255 nx=0;
horizontalwolf 0:cba7494d5dff 1256 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1257 lcd.drawRect(startx,starty,6,6,2);
horizontalwolf 0:cba7494d5dff 1258 loop=0;
horizontalwolf 0:cba7494d5dff 1259 break;
horizontalwolf 0:cba7494d5dff 1260
horizontalwolf 0:cba7494d5dff 1261 }
horizontalwolf 0:cba7494d5dff 1262 }
horizontalwolf 0:cba7494d5dff 1263 sleep();
horizontalwolf 0:cba7494d5dff 1264 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1265 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1266 wait(0.1);
horizontalwolf 0:cba7494d5dff 1267 break;
horizontalwolf 0:cba7494d5dff 1268 }
horizontalwolf 0:cba7494d5dff 1269 }
horizontalwolf 0:cba7494d5dff 1270 lcd.clear();
horizontalwolf 0:cba7494d5dff 1271 drawlines();
horizontalwolf 0:cba7494d5dff 1272 lcd.printString("You must kill",3,0);
horizontalwolf 0:cba7494d5dff 1273 lcd.printString("all hostiles",6,1);
horizontalwolf 0:cba7494d5dff 1274 lcd.printString("on a map to",9,2);
horizontalwolf 0:cba7494d5dff 1275 lcd.printString("go through",12,3);
horizontalwolf 0:cba7494d5dff 1276 lcd.printString("the door",18,4);
horizontalwolf 0:cba7494d5dff 1277
horizontalwolf 0:cba7494d5dff 1278 startx=39;
horizontalwolf 0:cba7494d5dff 1279 starty=41;
horizontalwolf 0:cba7494d5dff 1280 while(1) {
horizontalwolf 0:cba7494d5dff 1281 for( int x = startx; x < startx+6; x++) {
horizontalwolf 0:cba7494d5dff 1282 for (int y = starty; y < starty+6 ; y++) {
horizontalwolf 0:cba7494d5dff 1283 if (((g_door[ny][nx])%2)==0) {
horizontalwolf 0:cba7494d5dff 1284 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1285 } else {
horizontalwolf 0:cba7494d5dff 1286 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1287 }
horizontalwolf 0:cba7494d5dff 1288 ny++;
horizontalwolf 0:cba7494d5dff 1289 }
horizontalwolf 0:cba7494d5dff 1290 ny=0;
horizontalwolf 0:cba7494d5dff 1291 nx++;
horizontalwolf 0:cba7494d5dff 1292 }
horizontalwolf 0:cba7494d5dff 1293 nx=0;
horizontalwolf 0:cba7494d5dff 1294 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1295 sleep();
horizontalwolf 0:cba7494d5dff 1296 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1297 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1298 wait(0.1);
horizontalwolf 0:cba7494d5dff 1299 break;
horizontalwolf 0:cba7494d5dff 1300 }
horizontalwolf 0:cba7494d5dff 1301
horizontalwolf 0:cba7494d5dff 1302 }
horizontalwolf 0:cba7494d5dff 1303 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1304 lcd.clear();
horizontalwolf 0:cba7494d5dff 1305 lcd.printString("Be Swift,",15,0);
horizontalwolf 0:cba7494d5dff 1306 lcd.printString("Be Brave,",15,1);
horizontalwolf 0:cba7494d5dff 1307 lcd.printString("Dont Die.",15,2);
horizontalwolf 0:cba7494d5dff 1308 lcd.printString("Praise the sun",0,3);
horizontalwolf 0:cba7494d5dff 1309 lcd.printString("love from",15,4);
horizontalwolf 0:cba7494d5dff 1310 lcd.printString("-Prince Lonk",6,5);
horizontalwolf 0:cba7494d5dff 1311 while(1) {
horizontalwolf 0:cba7494d5dff 1312 if (g_BAI_flag == 1) {
horizontalwolf 0:cba7494d5dff 1313 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1314 wait(0.1);
horizontalwolf 0:cba7494d5dff 1315 break;
horizontalwolf 0:cba7494d5dff 1316 }
horizontalwolf 0:cba7494d5dff 1317 }
horizontalwolf 0:cba7494d5dff 1318 ticker1.detach();
horizontalwolf 0:cba7494d5dff 1319 }
horizontalwolf 0:cba7494d5dff 1320 void timeoutsound()
horizontalwolf 0:cba7494d5dff 1321 {
horizontalwolf 0:cba7494d5dff 1322 Buzz.write(0.0);
horizontalwolf 0:cba7494d5dff 1323 }
horizontalwolf 0:cba7494d5dff 1324
horizontalwolf 0:cba7494d5dff 1325
horizontalwolf 0:cba7494d5dff 1326 void outidle()
horizontalwolf 0:cba7494d5dff 1327 {
horizontalwolf 0:cba7494d5dff 1328 g_idle_flag = 1;
horizontalwolf 0:cba7494d5dff 1329 }
horizontalwolf 0:cba7494d5dff 1330
horizontalwolf 0:cba7494d5dff 1331 void startscreen()
horizontalwolf 0:cba7494d5dff 1332 {
horizontalwolf 0:cba7494d5dff 1333 for( int x = 0; x < 84; x++) {
horizontalwolf 0:cba7494d5dff 1334 for (int y = 0; y < 48 ; y++) {
horizontalwolf 0:cba7494d5dff 1335 if (((g_LoZ[y][x])%2)==0) {
horizontalwolf 0:cba7494d5dff 1336 lcd.clearPixel(x,y);
horizontalwolf 0:cba7494d5dff 1337 } else {
horizontalwolf 0:cba7494d5dff 1338 lcd.setPixel(x,y);
horizontalwolf 0:cba7494d5dff 1339 }
horizontalwolf 0:cba7494d5dff 1340 }
horizontalwolf 0:cba7494d5dff 1341 }
horizontalwolf 0:cba7494d5dff 1342 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1343 wait(2);
horizontalwolf 0:cba7494d5dff 1344
horizontalwolf 0:cba7494d5dff 1345 }
horizontalwolf 0:cba7494d5dff 1346 void drawlines()
horizontalwolf 0:cba7494d5dff 1347 {
horizontalwolf 0:cba7494d5dff 1348 lcd.drawLine(0,0,0,47,1);
horizontalwolf 0:cba7494d5dff 1349 lcd.drawLine(1,4,1,43,1);
horizontalwolf 0:cba7494d5dff 1350 lcd.drawLine(2,10,2,37,1);
horizontalwolf 0:cba7494d5dff 1351 lcd.drawLine(3,17,3,30,1);
horizontalwolf 0:cba7494d5dff 1352 lcd.drawLine(83,0,83,47,1);
horizontalwolf 0:cba7494d5dff 1353 lcd.drawLine(82,4,82,43,1);
horizontalwolf 0:cba7494d5dff 1354 lcd.drawLine(81,10,81,37,1);
horizontalwolf 0:cba7494d5dff 1355 lcd.drawLine(80,17,80,30,1);
horizontalwolf 0:cba7494d5dff 1356 }
horizontalwolf 0:cba7494d5dff 1357
horizontalwolf 0:cba7494d5dff 1358 void level2screen()
horizontalwolf 0:cba7494d5dff 1359 {
horizontalwolf 0:cba7494d5dff 1360 while(1) {
horizontalwolf 0:cba7494d5dff 1361 lcd.clear();
horizontalwolf 0:cba7494d5dff 1362 lcd.printString("Level 2",21,1);
horizontalwolf 0:cba7494d5dff 1363 lcd.printString("Press A",21,4);
horizontalwolf 0:cba7494d5dff 1364 lcd.refresh();
horizontalwolf 0:cba7494d5dff 1365 if (g_BAI_flag) {
horizontalwolf 0:cba7494d5dff 1366 g_BAI_flag = 0;
horizontalwolf 0:cba7494d5dff 1367 break;
horizontalwolf 0:cba7494d5dff 1368 }
horizontalwolf 0:cba7494d5dff 1369 sleep();
horizontalwolf 0:cba7494d5dff 1370 }
horizontalwolf 0:cba7494d5dff 1371 }