Digital_project 57340500039 57340500070
Dependencies: mbed
Fork of Digital_project by
main.cpp@2:6b2526c99e5c, 2015-12-09 (annotated)
- Committer:
- 57340500039
- Date:
- Wed Dec 09 10:55:01 2015 +0000
- Revision:
- 2:6b2526c99e5c
- Parent:
- 1:a4c852d25ead
Digital project A06
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
57340500039 | 0:4585326daab4 | 1 | #include "mbed.h" |
57340500039 | 0:4585326daab4 | 2 | #include "LCD4884.h" |
57340500039 | 0:4585326daab4 | 3 | #include <string.h> |
57340500039 | 2:6b2526c99e5c | 4 | #include <time.h> |
57340500039 | 2:6b2526c99e5c | 5 | #include <stdlib.h> |
57340500039 | 2:6b2526c99e5c | 6 | #define maxLvl 3 |
57340500039 | 2:6b2526c99e5c | 7 | #define high 24 |
57340500039 | 2:6b2526c99e5c | 8 | #define width 24 |
57340500039 | 2:6b2526c99e5c | 9 | |
57340500039 | 2:6b2526c99e5c | 10 | Ticker t; |
57340500039 | 2:6b2526c99e5c | 11 | Timer me; |
57340500039 | 0:4585326daab4 | 12 | |
57340500039 | 0:4585326daab4 | 13 | DigitalOut myled(LED1); |
57340500039 | 2:6b2526c99e5c | 14 | DigitalOut buzz(PC_3); |
57340500039 | 2:6b2526c99e5c | 15 | AnalogIn LDR(A5); |
57340500039 | 2:6b2526c99e5c | 16 | Serial pc(PA_15, PB_7); |
57340500039 | 2:6b2526c99e5c | 17 | |
57340500039 | 2:6b2526c99e5c | 18 | /* |
57340500039 | 2:6b2526c99e5c | 19 | modeA = watch time |
57340500039 | 2:6b2526c99e5c | 20 | modeB = before alarm |
57340500039 | 2:6b2526c99e5c | 21 | modeC = set alarm |
57340500039 | 2:6b2526c99e5c | 22 | modeD = play games |
57340500039 | 2:6b2526c99e5c | 23 | modeE = watch Data |
57340500039 | 2:6b2526c99e5c | 24 | modeF = bluetooth |
57340500039 | 2:6b2526c99e5c | 25 | */ |
57340500039 | 2:6b2526c99e5c | 26 | |
57340500039 | 2:6b2526c99e5c | 27 | LCD4884 joy; |
57340500039 | 2:6b2526c99e5c | 28 | int sec=0; |
57340500039 | 2:6b2526c99e5c | 29 | int hourTime = 0; |
57340500039 | 2:6b2526c99e5c | 30 | int minTime = 0; |
57340500039 | 2:6b2526c99e5c | 31 | int hourAlarm = 1; |
57340500039 | 2:6b2526c99e5c | 32 | int minAlarm = 0; |
57340500039 | 2:6b2526c99e5c | 33 | int isAlarm = 0; |
57340500039 | 2:6b2526c99e5c | 34 | int timeNow = 0; |
57340500039 | 2:6b2526c99e5c | 35 | int level = 0; |
57340500039 | 2:6b2526c99e5c | 36 | |
57340500039 | 2:6b2526c99e5c | 37 | int wakeUp[3]={0,0,0}; |
57340500039 | 2:6b2526c99e5c | 38 | //0 late, 1 not late, 2 set |
57340500039 | 2:6b2526c99e5c | 39 | int addTime(int min); |
57340500039 | 2:6b2526c99e5c | 40 | void plusTime(); |
57340500039 | 2:6b2526c99e5c | 41 | int ring(int a); |
57340500039 | 2:6b2526c99e5c | 42 | int alarmNow(); |
57340500039 | 2:6b2526c99e5c | 43 | int menu(int n,char *input[]); |
57340500039 | 2:6b2526c99e5c | 44 | void print(int n,unsigned char X, unsigned char Y); |
57340500039 | 2:6b2526c99e5c | 45 | void win(); |
57340500039 | 2:6b2526c99e5c | 46 | void lose(); |
57340500039 | 2:6b2526c99e5c | 47 | int snake_game(); |
57340500039 | 2:6b2526c99e5c | 48 | int crossRoad_game(); |
57340500039 | 2:6b2526c99e5c | 49 | int modeA(); |
57340500039 | 2:6b2526c99e5c | 50 | int modeB(); |
57340500039 | 2:6b2526c99e5c | 51 | int modeC(); |
57340500039 | 2:6b2526c99e5c | 52 | int modeD(); |
57340500039 | 2:6b2526c99e5c | 53 | int modeE(); |
57340500039 | 2:6b2526c99e5c | 54 | int modeF(); |
57340500039 | 0:4585326daab4 | 55 | |
57340500039 | 0:4585326daab4 | 56 | int main() { |
57340500039 | 2:6b2526c99e5c | 57 | t.attach(&plusTime, 1.0); |
57340500039 | 2:6b2526c99e5c | 58 | |
57340500039 | 2:6b2526c99e5c | 59 | int mode = 0,temp; |
57340500039 | 2:6b2526c99e5c | 60 | char *str[6] = {"watch time","before alarm","set alarm","play games","watch Data","bluetooth"}; |
57340500039 | 2:6b2526c99e5c | 61 | joy.LCD_init(); |
57340500039 | 2:6b2526c99e5c | 62 | /* |
57340500039 | 2:6b2526c99e5c | 63 | while(1){ |
57340500039 | 2:6b2526c99e5c | 64 | joy.LCD_write_string(0x00,0x00,"aaaaaa",'0'); |
57340500039 | 2:6b2526c99e5c | 65 | //joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 66 | }*/ |
57340500039 | 2:6b2526c99e5c | 67 | |
57340500039 | 2:6b2526c99e5c | 68 | while(1) { |
57340500039 | 0:4585326daab4 | 69 | |
57340500039 | 2:6b2526c99e5c | 70 | temp = menu(6,str); |
57340500039 | 2:6b2526c99e5c | 71 | switch(temp){ |
57340500039 | 2:6b2526c99e5c | 72 | case 0: modeA();break; |
57340500039 | 2:6b2526c99e5c | 73 | case 1: modeB();break; |
57340500039 | 2:6b2526c99e5c | 74 | case 2: modeC();break; |
57340500039 | 2:6b2526c99e5c | 75 | case 3: modeD();break; |
57340500039 | 2:6b2526c99e5c | 76 | case 4: modeE();break; |
57340500039 | 2:6b2526c99e5c | 77 | case 5: modeF();break; |
57340500039 | 2:6b2526c99e5c | 78 | } |
57340500039 | 2:6b2526c99e5c | 79 | wait_ms(100); |
57340500039 | 2:6b2526c99e5c | 80 | } |
57340500039 | 2:6b2526c99e5c | 81 | //return 0; |
57340500039 | 2:6b2526c99e5c | 82 | } |
57340500039 | 2:6b2526c99e5c | 83 | |
57340500039 | 2:6b2526c99e5c | 84 | //time |
57340500039 | 2:6b2526c99e5c | 85 | int addTime(int min){ |
57340500039 | 2:6b2526c99e5c | 86 | minTime += min; |
57340500039 | 2:6b2526c99e5c | 87 | hourTime += minTime/60; |
57340500039 | 2:6b2526c99e5c | 88 | hourTime%=24; |
57340500039 | 2:6b2526c99e5c | 89 | minTime%=60; |
57340500039 | 2:6b2526c99e5c | 90 | return 0; |
57340500039 | 2:6b2526c99e5c | 91 | } |
57340500039 | 2:6b2526c99e5c | 92 | void plusTime(){ |
57340500039 | 2:6b2526c99e5c | 93 | sec++; |
57340500039 | 2:6b2526c99e5c | 94 | if(sec==60){ |
57340500039 | 2:6b2526c99e5c | 95 | sec = 0; |
57340500039 | 2:6b2526c99e5c | 96 | addTime(1); |
57340500039 | 2:6b2526c99e5c | 97 | } |
57340500039 | 2:6b2526c99e5c | 98 | if(hourTime==hourAlarm&&minTime==minAlarm){ |
57340500039 | 2:6b2526c99e5c | 99 | alarmNow(); |
57340500039 | 2:6b2526c99e5c | 100 | } |
57340500039 | 2:6b2526c99e5c | 101 | } |
57340500039 | 2:6b2526c99e5c | 102 | |
57340500039 | 2:6b2526c99e5c | 103 | //alarm |
57340500039 | 2:6b2526c99e5c | 104 | int isLight(){ |
57340500039 | 2:6b2526c99e5c | 105 | float a; |
57340500039 | 2:6b2526c99e5c | 106 | a = LDR.read(); |
57340500039 | 2:6b2526c99e5c | 107 | if(a<=0.5) return 1; //สว่าง |
57340500039 | 2:6b2526c99e5c | 108 | return 0; |
57340500039 | 2:6b2526c99e5c | 109 | } |
57340500039 | 2:6b2526c99e5c | 110 | int ring(int a){ |
57340500039 | 2:6b2526c99e5c | 111 | if(a==1) buzz = 1; |
57340500039 | 2:6b2526c99e5c | 112 | else buzz = 0; |
57340500039 | 2:6b2526c99e5c | 113 | } |
57340500039 | 2:6b2526c99e5c | 114 | int alarmNow(){ //เพิ่มเชคว่า เลท/ไม่เลท |
57340500039 | 2:6b2526c99e5c | 115 | me.start(); |
57340500039 | 2:6b2526c99e5c | 116 | int random,light=0,re=0; |
57340500039 | 2:6b2526c99e5c | 117 | srand(time(NULL)); |
57340500039 | 2:6b2526c99e5c | 118 | random = rand()%2; |
57340500039 | 2:6b2526c99e5c | 119 | ring(1); |
57340500039 | 2:6b2526c99e5c | 120 | if(random==1){ |
57340500039 | 2:6b2526c99e5c | 121 | while(!snake_game()); |
57340500039 | 2:6b2526c99e5c | 122 | }else{ |
57340500039 | 2:6b2526c99e5c | 123 | while(!crossRoad_game()); |
57340500039 | 2:6b2526c99e5c | 124 | } |
57340500039 | 2:6b2526c99e5c | 125 | while(!light){ |
57340500039 | 2:6b2526c99e5c | 126 | light =isLight(); |
57340500039 | 2:6b2526c99e5c | 127 | } |
57340500039 | 2:6b2526c99e5c | 128 | ring(0); |
57340500039 | 2:6b2526c99e5c | 129 | isAlarm = 0; |
57340500039 | 2:6b2526c99e5c | 130 | me.stop(); |
57340500039 | 2:6b2526c99e5c | 131 | if(me.read()>180) wakeUp[0]++; |
57340500039 | 2:6b2526c99e5c | 132 | else wakeUp[1]++; |
57340500039 | 2:6b2526c99e5c | 133 | } |
57340500039 | 2:6b2526c99e5c | 134 | |
57340500039 | 2:6b2526c99e5c | 135 | //modeA = watch time |
57340500039 | 2:6b2526c99e5c | 136 | int modeA(){ |
57340500039 | 2:6b2526c99e5c | 137 | char temp[6],c; |
57340500039 | 2:6b2526c99e5c | 138 | while(1){ |
57340500039 | 2:6b2526c99e5c | 139 | temp[0] = '0'+hourTime/10; |
57340500039 | 2:6b2526c99e5c | 140 | temp[1] = hourTime%10+'0'; |
57340500039 | 2:6b2526c99e5c | 141 | temp[2] = '.'; |
57340500039 | 2:6b2526c99e5c | 142 | temp[3] = '0'+minTime/10; |
57340500039 | 2:6b2526c99e5c | 143 | temp[4] = minTime%10+'0'; |
57340500039 | 2:6b2526c99e5c | 144 | temp[5] = '\0'; |
57340500039 | 2:6b2526c99e5c | 145 | |
57340500039 | 2:6b2526c99e5c | 146 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 147 | joy.LCD_write_string_big(10,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 148 | |
57340500039 | 2:6b2526c99e5c | 149 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 150 | if(c=='l') return -1; |
57340500039 | 2:6b2526c99e5c | 151 | wait_ms(100); |
57340500039 | 2:6b2526c99e5c | 152 | } |
57340500039 | 2:6b2526c99e5c | 153 | } |
57340500039 | 2:6b2526c99e5c | 154 | |
57340500039 | 2:6b2526c99e5c | 155 | //modeB = before alarm |
57340500039 | 2:6b2526c99e5c | 156 | int modeB(){ |
57340500039 | 2:6b2526c99e5c | 157 | char c,temp[7]; |
57340500039 | 2:6b2526c99e5c | 158 | int a=0,b=0,show; |
57340500039 | 2:6b2526c99e5c | 159 | |
57340500039 | 2:6b2526c99e5c | 160 | while(1){ |
57340500039 | 2:6b2526c99e5c | 161 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 162 | if(isAlarm){ |
57340500039 | 2:6b2526c99e5c | 163 | a = hourTime*60 + minTime; |
57340500039 | 2:6b2526c99e5c | 164 | b = hourAlarm*60 + minAlarm; |
57340500039 | 2:6b2526c99e5c | 165 | if(a>b){ |
57340500039 | 2:6b2526c99e5c | 166 | show = 24*60 - a + b; |
57340500039 | 2:6b2526c99e5c | 167 | }else if(a<b){ |
57340500039 | 2:6b2526c99e5c | 168 | show = b-a; |
57340500039 | 2:6b2526c99e5c | 169 | } |
57340500039 | 2:6b2526c99e5c | 170 | temp[0] = (show/60)/10 + '0'; |
57340500039 | 2:6b2526c99e5c | 171 | temp[1] = (show/60)%10 + '0'; |
57340500039 | 2:6b2526c99e5c | 172 | temp[2] = '.'; |
57340500039 | 2:6b2526c99e5c | 173 | temp[3] = (show%60)/10 + '0'; |
57340500039 | 2:6b2526c99e5c | 174 | temp[4] = (show%60)%10 + '0'; |
57340500039 | 2:6b2526c99e5c | 175 | temp[5] = '\0'; |
57340500039 | 2:6b2526c99e5c | 176 | joy.LCD_write_string_big(10,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 177 | }else joy.LCD_write_string_big(10,2,"--.--",0); |
57340500039 | 2:6b2526c99e5c | 178 | |
57340500039 | 2:6b2526c99e5c | 179 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 180 | if(c=='l') return -1; |
57340500039 | 2:6b2526c99e5c | 181 | wait_ms(100); |
57340500039 | 2:6b2526c99e5c | 182 | |
57340500039 | 2:6b2526c99e5c | 183 | } |
57340500039 | 2:6b2526c99e5c | 184 | } |
57340500039 | 2:6b2526c99e5c | 185 | |
57340500039 | 2:6b2526c99e5c | 186 | //modeC = set alarm |
57340500039 | 2:6b2526c99e5c | 187 | int modeC(){ |
57340500039 | 2:6b2526c99e5c | 188 | int mode=0; |
57340500039 | 2:6b2526c99e5c | 189 | int x[2]={0,0}; |
57340500039 | 2:6b2526c99e5c | 190 | char c,temp[6]; |
57340500039 | 2:6b2526c99e5c | 191 | |
57340500039 | 2:6b2526c99e5c | 192 | while(1){ |
57340500039 | 2:6b2526c99e5c | 193 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 194 | |
57340500039 | 2:6b2526c99e5c | 195 | if(mode==0){ |
57340500039 | 2:6b2526c99e5c | 196 | temp[0] = '0'+x[0]/10; |
57340500039 | 2:6b2526c99e5c | 197 | temp[1] = x[0]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 198 | temp[2] = '\0'; |
57340500039 | 2:6b2526c99e5c | 199 | joy.LCD_write_string_big(7,2,temp,1); |
57340500039 | 2:6b2526c99e5c | 200 | temp[0] = '0'+x[1]/10; |
57340500039 | 2:6b2526c99e5c | 201 | temp[1] = x[1]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 202 | temp[2] = '\0'; |
57340500039 | 2:6b2526c99e5c | 203 | joy.LCD_write_string_big(40,2,".",0); |
57340500039 | 2:6b2526c99e5c | 204 | joy.LCD_write_string_big(47,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 205 | }else if(mode==1){ |
57340500039 | 2:6b2526c99e5c | 206 | temp[0] = '0'+x[0]/10; |
57340500039 | 2:6b2526c99e5c | 207 | temp[1] = x[0]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 208 | temp[2] = '\0'; |
57340500039 | 2:6b2526c99e5c | 209 | joy.LCD_write_string_big(7,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 210 | temp[0] = '0'+x[1]/10; |
57340500039 | 2:6b2526c99e5c | 211 | temp[1] = x[1]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 212 | temp[2] = '\0'; |
57340500039 | 2:6b2526c99e5c | 213 | joy.LCD_write_string_big(40,2,".",0); |
57340500039 | 2:6b2526c99e5c | 214 | joy.LCD_write_string_big(47,2,temp,1); |
57340500039 | 2:6b2526c99e5c | 215 | } |
57340500039 | 2:6b2526c99e5c | 216 | |
57340500039 | 2:6b2526c99e5c | 217 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 218 | switch (c){ |
57340500039 | 2:6b2526c99e5c | 219 | case 'l': |
57340500039 | 2:6b2526c99e5c | 220 | if(mode==1) mode=0; |
57340500039 | 2:6b2526c99e5c | 221 | else{ |
57340500039 | 2:6b2526c99e5c | 222 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 223 | joy.LCD_write_string(0,1,"back to menu?",0); |
57340500039 | 2:6b2526c99e5c | 224 | joy.LCD_write_string(0,2,"(Y) move Right",0); |
57340500039 | 2:6b2526c99e5c | 225 | joy.LCD_write_string(0,3,"(N) move Left",0); |
57340500039 | 2:6b2526c99e5c | 226 | while(1){ |
57340500039 | 2:6b2526c99e5c | 227 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 228 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 229 | if(c=='l'){ |
57340500039 | 2:6b2526c99e5c | 230 | break; |
57340500039 | 2:6b2526c99e5c | 231 | }else if(c=='r'){ |
57340500039 | 2:6b2526c99e5c | 232 | return -1; |
57340500039 | 2:6b2526c99e5c | 233 | } |
57340500039 | 2:6b2526c99e5c | 234 | } |
57340500039 | 2:6b2526c99e5c | 235 | } |
57340500039 | 2:6b2526c99e5c | 236 | break; |
57340500039 | 2:6b2526c99e5c | 237 | case 'r': |
57340500039 | 2:6b2526c99e5c | 238 | if(mode==0) mode=1; |
57340500039 | 2:6b2526c99e5c | 239 | else{ |
57340500039 | 2:6b2526c99e5c | 240 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 241 | joy.LCD_write_string(0,0,"set alarm at",0); |
57340500039 | 2:6b2526c99e5c | 242 | |
57340500039 | 2:6b2526c99e5c | 243 | temp[0] = '0'+x[0]/10; |
57340500039 | 2:6b2526c99e5c | 244 | temp[1] = x[0]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 245 | temp[2] = '.'; |
57340500039 | 2:6b2526c99e5c | 246 | temp[3] = '0'+x[1]/10; |
57340500039 | 2:6b2526c99e5c | 247 | temp[4] = x[1]%10+'0'; |
57340500039 | 2:6b2526c99e5c | 248 | temp[5] = '\0'; |
57340500039 | 2:6b2526c99e5c | 249 | joy.LCD_write_string(20,1,temp,0); |
57340500039 | 2:6b2526c99e5c | 250 | |
57340500039 | 2:6b2526c99e5c | 251 | joy.LCD_write_string(0,3,"confirm?",0); |
57340500039 | 2:6b2526c99e5c | 252 | joy.LCD_write_string(0,4,"(Y) move Right",0); |
57340500039 | 2:6b2526c99e5c | 253 | joy.LCD_write_string(0,5,"(N) move Left",0); |
57340500039 | 2:6b2526c99e5c | 254 | while(1){ |
57340500039 | 2:6b2526c99e5c | 255 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 256 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 257 | if(c=='r'){ |
57340500039 | 2:6b2526c99e5c | 258 | isAlarm = 1; |
57340500039 | 2:6b2526c99e5c | 259 | wakeUp[2]++; |
57340500039 | 2:6b2526c99e5c | 260 | hourAlarm = (temp[0]-'0')*10+(temp[1]-'0'); |
57340500039 | 2:6b2526c99e5c | 261 | minAlarm = (temp[3]-'0')*10+(temp[4]-'0'); |
57340500039 | 2:6b2526c99e5c | 262 | return 0; |
57340500039 | 2:6b2526c99e5c | 263 | }else if(c=='l'){ |
57340500039 | 2:6b2526c99e5c | 264 | break; |
57340500039 | 2:6b2526c99e5c | 265 | } |
57340500039 | 2:6b2526c99e5c | 266 | } |
57340500039 | 2:6b2526c99e5c | 267 | } |
57340500039 | 2:6b2526c99e5c | 268 | break; |
57340500039 | 2:6b2526c99e5c | 269 | case 'u': |
57340500039 | 2:6b2526c99e5c | 270 | switch(mode){ |
57340500039 | 2:6b2526c99e5c | 271 | case 0: x[0] = (x[0]+1)%24; break; |
57340500039 | 2:6b2526c99e5c | 272 | case 1: x[1] = (x[1]+1)%60; break; |
57340500039 | 2:6b2526c99e5c | 273 | } |
57340500039 | 2:6b2526c99e5c | 274 | break; |
57340500039 | 2:6b2526c99e5c | 275 | case 'd': |
57340500039 | 2:6b2526c99e5c | 276 | switch(mode){ |
57340500039 | 2:6b2526c99e5c | 277 | case 0: x[0] = (x[0]+23)%24; break; |
57340500039 | 2:6b2526c99e5c | 278 | case 1: x[1] = (x[1]+23)%60; break; |
57340500039 | 2:6b2526c99e5c | 279 | } |
57340500039 | 2:6b2526c99e5c | 280 | break; |
57340500039 | 2:6b2526c99e5c | 281 | } |
57340500039 | 2:6b2526c99e5c | 282 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 283 | } |
57340500039 | 2:6b2526c99e5c | 284 | } |
57340500039 | 2:6b2526c99e5c | 285 | |
57340500039 | 2:6b2526c99e5c | 286 | //modeD = play games |
57340500039 | 2:6b2526c99e5c | 287 | int modeD(){ |
57340500039 | 2:6b2526c99e5c | 288 | int mode; |
57340500039 | 2:6b2526c99e5c | 289 | char *data[2]; |
57340500039 | 2:6b2526c99e5c | 290 | data[0] = "Snake"; |
57340500039 | 2:6b2526c99e5c | 291 | data[1] = "Cross Road"; |
57340500039 | 2:6b2526c99e5c | 292 | |
57340500039 | 2:6b2526c99e5c | 293 | mode = menu(2,data); |
57340500039 | 2:6b2526c99e5c | 294 | wait_ms(100); |
57340500039 | 2:6b2526c99e5c | 295 | if(mode==0) snake_game(); |
57340500039 | 2:6b2526c99e5c | 296 | else if(mode==1) crossRoad_game(); |
57340500039 | 2:6b2526c99e5c | 297 | return 0; |
57340500039 | 2:6b2526c99e5c | 298 | } |
57340500039 | 2:6b2526c99e5c | 299 | |
57340500039 | 2:6b2526c99e5c | 300 | //modeE = watch Data |
57340500039 | 2:6b2526c99e5c | 301 | int modeE(){ |
57340500039 | 2:6b2526c99e5c | 302 | char c,temp[15]; |
57340500039 | 2:6b2526c99e5c | 303 | int check=0; |
57340500039 | 2:6b2526c99e5c | 304 | |
57340500039 | 2:6b2526c99e5c | 305 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 306 | sprintf(temp,"Late : %d",wakeUp[0]); |
57340500039 | 2:6b2526c99e5c | 307 | joy.LCD_write_string(0,0,temp,0); |
57340500039 | 2:6b2526c99e5c | 308 | sprintf(temp,"Not Late : %d",wakeUp[1]); |
57340500039 | 2:6b2526c99e5c | 309 | joy.LCD_write_string(0,1,temp,0); |
57340500039 | 2:6b2526c99e5c | 310 | sprintf(temp,"Set Alarm : %d",wakeUp[2]); |
57340500039 | 2:6b2526c99e5c | 311 | joy.LCD_write_string(0,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 312 | |
57340500039 | 2:6b2526c99e5c | 313 | sprintf(temp,"reset move joy"); |
57340500039 | 2:6b2526c99e5c | 314 | joy.LCD_write_string(0,4,temp,0); |
57340500039 | 2:6b2526c99e5c | 315 | sprintf(temp,"down 2 times."); |
57340500039 | 2:6b2526c99e5c | 316 | joy.LCD_write_string(0,5,temp,0); |
57340500039 | 2:6b2526c99e5c | 317 | while(1){ |
57340500039 | 2:6b2526c99e5c | 318 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 319 | if(check==1){ |
57340500039 | 2:6b2526c99e5c | 320 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 321 | joy.LCD_write_string(0,0,"data reset",0); |
57340500039 | 2:6b2526c99e5c | 322 | wait(2); |
57340500039 | 2:6b2526c99e5c | 323 | for(check=0;check<3;check++) wakeUp[check] = 0; |
57340500039 | 2:6b2526c99e5c | 324 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 325 | sprintf(temp,"Late : %d",wakeUp[0]); |
57340500039 | 2:6b2526c99e5c | 326 | joy.LCD_write_string(0,0,temp,0); |
57340500039 | 2:6b2526c99e5c | 327 | sprintf(temp,"Not Late : %d",wakeUp[1]); |
57340500039 | 2:6b2526c99e5c | 328 | joy.LCD_write_string(0,1,temp,0); |
57340500039 | 2:6b2526c99e5c | 329 | sprintf(temp,"Set Alarm : %d",wakeUp[2]); |
57340500039 | 2:6b2526c99e5c | 330 | joy.LCD_write_string(0,2,temp,0); |
57340500039 | 2:6b2526c99e5c | 331 | |
57340500039 | 2:6b2526c99e5c | 332 | sprintf(temp,"reset move joy"); |
57340500039 | 2:6b2526c99e5c | 333 | joy.LCD_write_string(0,4,temp,0); |
57340500039 | 2:6b2526c99e5c | 334 | sprintf(temp,"down 2 times."); |
57340500039 | 2:6b2526c99e5c | 335 | joy.LCD_write_string(0,5,temp,0); |
57340500039 | 2:6b2526c99e5c | 336 | } |
57340500039 | 2:6b2526c99e5c | 337 | check = 0; |
57340500039 | 2:6b2526c99e5c | 338 | if(c=='l') return -1; |
57340500039 | 2:6b2526c99e5c | 339 | if(c=='d') check++; |
57340500039 | 2:6b2526c99e5c | 340 | wait_ms(200); |
57340500039 | 0:4585326daab4 | 341 | } |
57340500039 | 0:4585326daab4 | 342 | } |
57340500039 | 2:6b2526c99e5c | 343 | |
57340500039 | 2:6b2526c99e5c | 344 | //modeF = bluetooth |
57340500039 | 2:6b2526c99e5c | 345 | int modeF(){ //bluetooth mode here |
57340500039 | 2:6b2526c99e5c | 346 | char input[6],temp[15]; |
57340500039 | 2:6b2526c99e5c | 347 | input[0] = pc.getc(); |
57340500039 | 2:6b2526c99e5c | 348 | input[1] = pc.getc(); |
57340500039 | 2:6b2526c99e5c | 349 | input[2] = pc.getc(); |
57340500039 | 2:6b2526c99e5c | 350 | input[3] = pc.getc(); |
57340500039 | 2:6b2526c99e5c | 351 | input[4] = pc.getc(); |
57340500039 | 2:6b2526c99e5c | 352 | input[5] = '\0'; |
57340500039 | 2:6b2526c99e5c | 353 | |
57340500039 | 2:6b2526c99e5c | 354 | switch(input[0]){ |
57340500039 | 2:6b2526c99e5c | 355 | case '0': |
57340500039 | 2:6b2526c99e5c | 356 | hourTime = (input[1]-'0')*10+(input[2]-'0'); |
57340500039 | 2:6b2526c99e5c | 357 | minTime = (input[3]-'0')*10+(input[4]-'0'); |
57340500039 | 2:6b2526c99e5c | 358 | break; |
57340500039 | 2:6b2526c99e5c | 359 | case '1': |
57340500039 | 2:6b2526c99e5c | 360 | isAlarm = 1; |
57340500039 | 2:6b2526c99e5c | 361 | wakeUp[2]++; |
57340500039 | 2:6b2526c99e5c | 362 | hourAlarm = (input[1]-'0')*10+(input[2]-'0'); |
57340500039 | 2:6b2526c99e5c | 363 | minAlarm = (input[3]-'0')*10+(input[4]-'0'); |
57340500039 | 2:6b2526c99e5c | 364 | break; |
57340500039 | 2:6b2526c99e5c | 365 | case '2': |
57340500039 | 2:6b2526c99e5c | 366 | level = input[1]-'0'; |
57340500039 | 2:6b2526c99e5c | 367 | break; |
57340500039 | 2:6b2526c99e5c | 368 | case '3': |
57340500039 | 2:6b2526c99e5c | 369 | sprintf(temp,"%02d%02d%02d",wakeUp[0],wakeUp[1],wakeUp[2]); |
57340500039 | 2:6b2526c99e5c | 370 | pc.printf(temp); |
57340500039 | 2:6b2526c99e5c | 371 | break; |
57340500039 | 2:6b2526c99e5c | 372 | default : //do some thing |
57340500039 | 2:6b2526c99e5c | 373 | } |
57340500039 | 2:6b2526c99e5c | 374 | |
57340500039 | 2:6b2526c99e5c | 375 | } |
57340500039 | 2:6b2526c99e5c | 376 | |
57340500039 | 2:6b2526c99e5c | 377 | // game |
57340500039 | 2:6b2526c99e5c | 378 | void print(int n,unsigned char x, unsigned char y){ |
57340500039 | 2:6b2526c99e5c | 379 | if(n!=0) joy.LCD_pixel(x,y); |
57340500039 | 2:6b2526c99e5c | 380 | } |
57340500039 | 2:6b2526c99e5c | 381 | void win(){ |
57340500039 | 2:6b2526c99e5c | 382 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 383 | joy.LCD_write_string(20,2,"WIN!",0); |
57340500039 | 2:6b2526c99e5c | 384 | } |
57340500039 | 2:6b2526c99e5c | 385 | void lose(){ |
57340500039 | 2:6b2526c99e5c | 386 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 387 | joy.LCD_write_string(20,2,"LOSE!",1); |
57340500039 | 2:6b2526c99e5c | 388 | } |
57340500039 | 2:6b2526c99e5c | 389 | |
57340500039 | 2:6b2526c99e5c | 390 | int snake_game(){ |
57340500039 | 2:6b2526c99e5c | 391 | wait(0.5); |
57340500039 | 2:6b2526c99e5c | 392 | int map[24][24],num = high*width; |
57340500039 | 2:6b2526c99e5c | 393 | |
57340500039 | 2:6b2526c99e5c | 394 | int k,p=0,i,j; |
57340500039 | 2:6b2526c99e5c | 395 | int pScore,lvl=level,walk,path=1,temp,now; |
57340500039 | 2:6b2526c99e5c | 396 | int score = 4,food=0; |
57340500039 | 2:6b2526c99e5c | 397 | char c; |
57340500039 | 2:6b2526c99e5c | 398 | int input[high][width]; |
57340500039 | 2:6b2526c99e5c | 399 | unsigned char output[num/8]; |
57340500039 | 2:6b2526c99e5c | 400 | |
57340500039 | 2:6b2526c99e5c | 401 | srand(time(NULL)); |
57340500039 | 2:6b2526c99e5c | 402 | pScore = (rand()%10)+7; //pass score here! |
57340500039 | 2:6b2526c99e5c | 403 | |
57340500039 | 2:6b2526c99e5c | 404 | for(i=0;i<high;i++){ |
57340500039 | 2:6b2526c99e5c | 405 | for(j=0;j<width;j++){ |
57340500039 | 2:6b2526c99e5c | 406 | if(j==0||i==0||i==high-1||j==width-1) map[i][j] = -1; |
57340500039 | 2:6b2526c99e5c | 407 | else map[i][j] = 0; |
57340500039 | 2:6b2526c99e5c | 408 | } |
57340500039 | 2:6b2526c99e5c | 409 | } |
57340500039 | 2:6b2526c99e5c | 410 | |
57340500039 | 2:6b2526c99e5c | 411 | map[high/2][width/3] = 1; |
57340500039 | 2:6b2526c99e5c | 412 | map[high/2][(width/3)+1] = 2; |
57340500039 | 2:6b2526c99e5c | 413 | map[high/2][(width/3)+2] = 3; |
57340500039 | 2:6b2526c99e5c | 414 | map[high/2][(width/3)+3] = 4; |
57340500039 | 2:6b2526c99e5c | 415 | now = ((high/2))*width + (width/3)+3; |
57340500039 | 2:6b2526c99e5c | 416 | while(map[food/width][food%width]!=0){ |
57340500039 | 2:6b2526c99e5c | 417 | food = rand()%num; //random food |
57340500039 | 2:6b2526c99e5c | 418 | } |
57340500039 | 2:6b2526c99e5c | 419 | |
57340500039 | 2:6b2526c99e5c | 420 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 421 | joy.LCD_write_string(10,1,"move joy to",0); |
57340500039 | 2:6b2526c99e5c | 422 | joy.LCD_write_string(10,2,">> START <<",0); |
57340500039 | 2:6b2526c99e5c | 423 | |
57340500039 | 2:6b2526c99e5c | 424 | while(1){ |
57340500039 | 2:6b2526c99e5c | 425 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 426 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 427 | if(c=='u'||c=='d'||c=='l'||c=='r') break; |
57340500039 | 2:6b2526c99e5c | 428 | } |
57340500039 | 2:6b2526c99e5c | 429 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 430 | //start game! |
57340500039 | 2:6b2526c99e5c | 431 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 432 | while(1){ |
57340500039 | 2:6b2526c99e5c | 433 | //print map[][] to 0,1 |
57340500039 | 2:6b2526c99e5c | 434 | |
57340500039 | 2:6b2526c99e5c | 435 | for(i=0;i<high;i++){ |
57340500039 | 2:6b2526c99e5c | 436 | for(j=0;j<width;j++){ |
57340500039 | 2:6b2526c99e5c | 437 | if((i*width + j)==food) input[i][j] = 1; |
57340500039 | 2:6b2526c99e5c | 438 | else if(map[i][j]!=0) input[i][j] = 1; |
57340500039 | 2:6b2526c99e5c | 439 | else input[i][j] = 0; |
57340500039 | 2:6b2526c99e5c | 440 | } |
57340500039 | 2:6b2526c99e5c | 441 | } |
57340500039 | 2:6b2526c99e5c | 442 | |
57340500039 | 2:6b2526c99e5c | 443 | //change to new Map |
57340500039 | 2:6b2526c99e5c | 444 | |
57340500039 | 2:6b2526c99e5c | 445 | p = 0; |
57340500039 | 2:6b2526c99e5c | 446 | for(i=0;i<72;i++) output[i] = 0; |
57340500039 | 2:6b2526c99e5c | 447 | |
57340500039 | 2:6b2526c99e5c | 448 | for(i=0;i<3;i++){ |
57340500039 | 2:6b2526c99e5c | 449 | for(j=0;j<24;j++){ |
57340500039 | 2:6b2526c99e5c | 450 | for(k=7;k>=0;k--){ |
57340500039 | 2:6b2526c99e5c | 451 | output[p] = output[p]*2 + input[i*8+k][j]; |
57340500039 | 2:6b2526c99e5c | 452 | //printf("%d ",input[i*8+7-k][j]); |
57340500039 | 2:6b2526c99e5c | 453 | } |
57340500039 | 2:6b2526c99e5c | 454 | p++; |
57340500039 | 2:6b2526c99e5c | 455 | } |
57340500039 | 2:6b2526c99e5c | 456 | } |
57340500039 | 2:6b2526c99e5c | 457 | |
57340500039 | 2:6b2526c99e5c | 458 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 459 | joy.LCD_draw_bmp_pixel(0,0,output,high,width); |
57340500039 | 2:6b2526c99e5c | 460 | |
57340500039 | 2:6b2526c99e5c | 461 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 462 | //find path |
57340500039 | 2:6b2526c99e5c | 463 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 464 | switch (c){ |
57340500039 | 2:6b2526c99e5c | 465 | case 'l': temp=-1; break; |
57340500039 | 2:6b2526c99e5c | 466 | case 'r': temp=1; break; |
57340500039 | 2:6b2526c99e5c | 467 | case 'u': temp=-width; break; |
57340500039 | 2:6b2526c99e5c | 468 | case 'd': temp=width; break; |
57340500039 | 2:6b2526c99e5c | 469 | default : temp=path; |
57340500039 | 2:6b2526c99e5c | 470 | } |
57340500039 | 2:6b2526c99e5c | 471 | if(temp!=-path)path=temp; |
57340500039 | 2:6b2526c99e5c | 472 | |
57340500039 | 2:6b2526c99e5c | 473 | if(map[(now+path)/width][(now+path)%width]!=0) break; //eat !food |
57340500039 | 2:6b2526c99e5c | 474 | |
57340500039 | 2:6b2526c99e5c | 475 | now+=path; |
57340500039 | 2:6b2526c99e5c | 476 | temp = 1; |
57340500039 | 2:6b2526c99e5c | 477 | |
57340500039 | 2:6b2526c99e5c | 478 | if(now==food){ |
57340500039 | 2:6b2526c99e5c | 479 | score+=1; |
57340500039 | 2:6b2526c99e5c | 480 | temp = food; |
57340500039 | 2:6b2526c99e5c | 481 | while(map[food/width][food%width]!=0||food==temp){ |
57340500039 | 2:6b2526c99e5c | 482 | food = rand()%num; //random food |
57340500039 | 2:6b2526c99e5c | 483 | } |
57340500039 | 2:6b2526c99e5c | 484 | map[food/width][food%width] = 1; |
57340500039 | 2:6b2526c99e5c | 485 | temp=0; |
57340500039 | 2:6b2526c99e5c | 486 | } |
57340500039 | 2:6b2526c99e5c | 487 | map[now/width][now%width]=score+1; |
57340500039 | 2:6b2526c99e5c | 488 | for(i=0;i<num;i++) if(map[i/width][i%width]>0) map[i/width][i%width]-=temp; |
57340500039 | 2:6b2526c99e5c | 489 | |
57340500039 | 2:6b2526c99e5c | 490 | |
57340500039 | 2:6b2526c99e5c | 491 | wait_ms((maxLvl - lvl+1)*200); |
57340500039 | 2:6b2526c99e5c | 492 | } |
57340500039 | 2:6b2526c99e5c | 493 | |
57340500039 | 2:6b2526c99e5c | 494 | if((score*lvl)-4>=pScore){ |
57340500039 | 2:6b2526c99e5c | 495 | win(); |
57340500039 | 2:6b2526c99e5c | 496 | wait(2); |
57340500039 | 2:6b2526c99e5c | 497 | return 1; |
57340500039 | 2:6b2526c99e5c | 498 | } |
57340500039 | 2:6b2526c99e5c | 499 | |
57340500039 | 2:6b2526c99e5c | 500 | lose(); |
57340500039 | 2:6b2526c99e5c | 501 | wait(2); |
57340500039 | 2:6b2526c99e5c | 502 | |
57340500039 | 2:6b2526c99e5c | 503 | return 0; |
57340500039 | 2:6b2526c99e5c | 504 | } |
57340500039 | 2:6b2526c99e5c | 505 | int crossRoad_game(){ |
57340500039 | 2:6b2526c99e5c | 506 | wait(0.5); |
57340500039 | 2:6b2526c99e5c | 507 | int car[high][width],num = high*width; |
57340500039 | 2:6b2526c99e5c | 508 | unsigned char i,j; |
57340500039 | 2:6b2526c99e5c | 509 | int k,p; |
57340500039 | 2:6b2526c99e5c | 510 | int pScore,lvl=level,walk,path=0,temp,now; |
57340500039 | 2:6b2526c99e5c | 511 | int score = 4,isWin=0; |
57340500039 | 2:6b2526c99e5c | 512 | char c; |
57340500039 | 2:6b2526c99e5c | 513 | int input[high][width]; |
57340500039 | 2:6b2526c99e5c | 514 | unsigned char output[num/8]; |
57340500039 | 2:6b2526c99e5c | 515 | |
57340500039 | 2:6b2526c99e5c | 516 | now = ((high-2))*width + (width/2); |
57340500039 | 2:6b2526c99e5c | 517 | srand(time(NULL)); |
57340500039 | 2:6b2526c99e5c | 518 | pScore = (rand()%10)+7; //pass score here! |
57340500039 | 2:6b2526c99e5c | 519 | |
57340500039 | 2:6b2526c99e5c | 520 | for(i=0;i<high;i++){ |
57340500039 | 2:6b2526c99e5c | 521 | for(j=0;j<width;j++){ |
57340500039 | 2:6b2526c99e5c | 522 | if(i==high-1) car[i][j] = -1; |
57340500039 | 2:6b2526c99e5c | 523 | else if(i==0) car[i][j] = -2; |
57340500039 | 2:6b2526c99e5c | 524 | else car[i][j] = 0; |
57340500039 | 2:6b2526c99e5c | 525 | } |
57340500039 | 2:6b2526c99e5c | 526 | }//set no car |
57340500039 | 2:6b2526c99e5c | 527 | |
57340500039 | 2:6b2526c99e5c | 528 | for(i=1;i<high-2;i++){ |
57340500039 | 2:6b2526c99e5c | 529 | for(j=0;j<((width*((i%2)+1))/10);j++){ |
57340500039 | 2:6b2526c99e5c | 530 | temp = rand()%(width); |
57340500039 | 2:6b2526c99e5c | 531 | car[i][temp] = 1; |
57340500039 | 2:6b2526c99e5c | 532 | } |
57340500039 | 2:6b2526c99e5c | 533 | }//set car |
57340500039 | 2:6b2526c99e5c | 534 | |
57340500039 | 2:6b2526c99e5c | 535 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 536 | joy.LCD_write_string(10,1,"move joy to",0); |
57340500039 | 2:6b2526c99e5c | 537 | joy.LCD_write_string(10,2,">> START <<",0); |
57340500039 | 2:6b2526c99e5c | 538 | while(1){ |
57340500039 | 2:6b2526c99e5c | 539 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 540 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 541 | if(c=='u'||c=='d'||c=='l'||c=='r') break; |
57340500039 | 2:6b2526c99e5c | 542 | } |
57340500039 | 2:6b2526c99e5c | 543 | |
57340500039 | 2:6b2526c99e5c | 544 | //start game! |
57340500039 | 2:6b2526c99e5c | 545 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 546 | while(1){ |
57340500039 | 2:6b2526c99e5c | 547 | |
57340500039 | 2:6b2526c99e5c | 548 | //print map[][] to 0,1 |
57340500039 | 2:6b2526c99e5c | 549 | for(i=0;i<num;i++){ |
57340500039 | 2:6b2526c99e5c | 550 | if(i==now) input[i/width][i%width] = 1; |
57340500039 | 2:6b2526c99e5c | 551 | else if(car[i/width][i%width]!=0) input[i/width][i%width] = 1; |
57340500039 | 2:6b2526c99e5c | 552 | else input[i/width][i%width] = 0; |
57340500039 | 2:6b2526c99e5c | 553 | } |
57340500039 | 2:6b2526c99e5c | 554 | |
57340500039 | 2:6b2526c99e5c | 555 | //change to new Map |
57340500039 | 2:6b2526c99e5c | 556 | p = 0; |
57340500039 | 2:6b2526c99e5c | 557 | for(i=0;i<72;i++) output[i] = 0; |
57340500039 | 2:6b2526c99e5c | 558 | for(i=0;i<3;i++){ |
57340500039 | 2:6b2526c99e5c | 559 | for(j=0;j<24;j++){ |
57340500039 | 2:6b2526c99e5c | 560 | for(k=7;k>=0;k--){ |
57340500039 | 2:6b2526c99e5c | 561 | output[p] = output[p]*2 + input[i*8+k][j]; |
57340500039 | 2:6b2526c99e5c | 562 | printf("%d ",input[i*8+7-k][j]); |
57340500039 | 2:6b2526c99e5c | 563 | } |
57340500039 | 2:6b2526c99e5c | 564 | p++; |
57340500039 | 2:6b2526c99e5c | 565 | } |
57340500039 | 2:6b2526c99e5c | 566 | } |
57340500039 | 2:6b2526c99e5c | 567 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 568 | joy.LCD_draw_bmp_pixel(0,0,output,high,width); |
57340500039 | 2:6b2526c99e5c | 569 | |
57340500039 | 2:6b2526c99e5c | 570 | |
57340500039 | 2:6b2526c99e5c | 571 | //find path |
57340500039 | 2:6b2526c99e5c | 572 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 573 | switch (c){ |
57340500039 | 2:6b2526c99e5c | 574 | case 'a': path=-1; break; |
57340500039 | 2:6b2526c99e5c | 575 | case 'd': path=1; break; |
57340500039 | 2:6b2526c99e5c | 576 | case 'w': path=-width; break; |
57340500039 | 2:6b2526c99e5c | 577 | case 's': path=width; break; |
57340500039 | 2:6b2526c99e5c | 578 | default : path=0; |
57340500039 | 2:6b2526c99e5c | 579 | } |
57340500039 | 2:6b2526c99e5c | 580 | |
57340500039 | 2:6b2526c99e5c | 581 | for(i=1;i<high-2;i++){ |
57340500039 | 2:6b2526c99e5c | 582 | if(i%2==0){ // <<< |
57340500039 | 2:6b2526c99e5c | 583 | temp = car[i][0]; |
57340500039 | 2:6b2526c99e5c | 584 | for(j=0;j<width-1;j++) car[i][j] = car[i][j+1]; |
57340500039 | 2:6b2526c99e5c | 585 | car[i][width-1] = temp; |
57340500039 | 2:6b2526c99e5c | 586 | }else{ // >>> |
57340500039 | 2:6b2526c99e5c | 587 | temp = car[i][width-1]; |
57340500039 | 2:6b2526c99e5c | 588 | for(j=width-1;j>0;j--) car[i][j] = car[i][j-1]; |
57340500039 | 2:6b2526c99e5c | 589 | car[i][0] = temp; |
57340500039 | 2:6b2526c99e5c | 590 | } |
57340500039 | 2:6b2526c99e5c | 591 | }//car walk |
57340500039 | 2:6b2526c99e5c | 592 | |
57340500039 | 2:6b2526c99e5c | 593 | if(path*path==1){ //L,R |
57340500039 | 2:6b2526c99e5c | 594 | if(now+path<0){ |
57340500039 | 2:6b2526c99e5c | 595 | if((now+width)/width < (now+width+path)/width) now -= width; |
57340500039 | 2:6b2526c99e5c | 596 | else if((now+width)/width>(now+width+path)/width) now += width; |
57340500039 | 2:6b2526c99e5c | 597 | }else{ |
57340500039 | 2:6b2526c99e5c | 598 | if((now)/width<(now+path)/width) now -= width; |
57340500039 | 2:6b2526c99e5c | 599 | else if((now)/width>(now+path)/width) now += width; |
57340500039 | 2:6b2526c99e5c | 600 | } |
57340500039 | 2:6b2526c99e5c | 601 | } |
57340500039 | 2:6b2526c99e5c | 602 | |
57340500039 | 2:6b2526c99e5c | 603 | now+=path; |
57340500039 | 2:6b2526c99e5c | 604 | |
57340500039 | 2:6b2526c99e5c | 605 | if(isWin==1) break; |
57340500039 | 2:6b2526c99e5c | 606 | if(car[now/width][now%width]==-2) isWin = 1; |
57340500039 | 2:6b2526c99e5c | 607 | else if(car[now/width][now%width]==-1) now-=path; |
57340500039 | 2:6b2526c99e5c | 608 | else if(car[now/width][now%width]==1) break; |
57340500039 | 2:6b2526c99e5c | 609 | |
57340500039 | 2:6b2526c99e5c | 610 | path = 0; |
57340500039 | 2:6b2526c99e5c | 611 | |
57340500039 | 2:6b2526c99e5c | 612 | |
57340500039 | 2:6b2526c99e5c | 613 | wait_ms((maxLvl - lvl+1)*200); |
57340500039 | 2:6b2526c99e5c | 614 | } |
57340500039 | 2:6b2526c99e5c | 615 | if(isWin){ |
57340500039 | 2:6b2526c99e5c | 616 | win(); |
57340500039 | 2:6b2526c99e5c | 617 | wait(2); |
57340500039 | 2:6b2526c99e5c | 618 | return 1; |
57340500039 | 2:6b2526c99e5c | 619 | } |
57340500039 | 2:6b2526c99e5c | 620 | |
57340500039 | 2:6b2526c99e5c | 621 | lose(); |
57340500039 | 2:6b2526c99e5c | 622 | wait(2); |
57340500039 | 2:6b2526c99e5c | 623 | |
57340500039 | 2:6b2526c99e5c | 624 | return 0; |
57340500039 | 2:6b2526c99e5c | 625 | } |
57340500039 | 2:6b2526c99e5c | 626 | int menu(int n, char *input[]){ |
57340500039 | 2:6b2526c99e5c | 627 | wait_ms(100); |
57340500039 | 2:6b2526c99e5c | 628 | int i; |
57340500039 | 2:6b2526c99e5c | 629 | int mode = 0; |
57340500039 | 2:6b2526c99e5c | 630 | char c; |
57340500039 | 2:6b2526c99e5c | 631 | while(1){ |
57340500039 | 2:6b2526c99e5c | 632 | joy.LCD_clear(); |
57340500039 | 2:6b2526c99e5c | 633 | for(i=0;i<n;i++){ |
57340500039 | 2:6b2526c99e5c | 634 | if(mode==i){ |
57340500039 | 2:6b2526c99e5c | 635 | joy.LCD_write_string(0,i,input[i],1); |
57340500039 | 2:6b2526c99e5c | 636 | }else{ |
57340500039 | 2:6b2526c99e5c | 637 | joy.LCD_write_string(0,i,input[i],0); |
57340500039 | 2:6b2526c99e5c | 638 | } |
57340500039 | 2:6b2526c99e5c | 639 | } |
57340500039 | 2:6b2526c99e5c | 640 | |
57340500039 | 2:6b2526c99e5c | 641 | |
57340500039 | 2:6b2526c99e5c | 642 | c=joy.LCD_joystick(); |
57340500039 | 2:6b2526c99e5c | 643 | if(c=='r') break; |
57340500039 | 2:6b2526c99e5c | 644 | switch(c){ |
57340500039 | 2:6b2526c99e5c | 645 | case 'u': if(mode!=0) mode--; |
57340500039 | 2:6b2526c99e5c | 646 | break; |
57340500039 | 2:6b2526c99e5c | 647 | case 'd': if(mode!=n-1) mode++; |
57340500039 | 2:6b2526c99e5c | 648 | break; |
57340500039 | 2:6b2526c99e5c | 649 | case 'l': return -1; |
57340500039 | 2:6b2526c99e5c | 650 | break; |
57340500039 | 2:6b2526c99e5c | 651 | } |
57340500039 | 2:6b2526c99e5c | 652 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 653 | } |
57340500039 | 2:6b2526c99e5c | 654 | wait_ms(200); |
57340500039 | 2:6b2526c99e5c | 655 | return mode; |
57340500039 | 2:6b2526c99e5c | 656 | } |