UCSC-final project
Dependencies: C12832_lcd Debounced mbed
Fork of Bootcamp-Timers by
main.cpp@1:8da0d969aa18, 2014-05-31 (annotated)
- Committer:
- shuyunzh
- Date:
- Sat May 31 21:17:47 2014 +0000
- Revision:
- 1:8da0d969aa18
- Parent:
- 0:27e1de20d3cb
UCSC - Final Project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shuyunzh | 1:8da0d969aa18 | 1 | /* Project Name: Mbed Game Console |
shuyunzh | 1:8da0d969aa18 | 2 | Date: 05/26/2014 |
shuyunzh | 1:8da0d969aa18 | 3 | Project Content: The Game Console has two games: Hangman and Bingo |
shuyunzh | 1:8da0d969aa18 | 4 | (AB guess number game). User uses joystick to selct the game to play and type letters and numbers through PC keyboard. LCD screen prints out the game status. |
shuyunzh | 1:8da0d969aa18 | 5 | */ |
mbed_official | 0:27e1de20d3cb | 6 | #include "mbed.h" |
shuyunzh | 1:8da0d969aa18 | 7 | #include "C12832_lcd.h" |
shuyunzh | 1:8da0d969aa18 | 8 | #include "DebouncedIn.h" |
shuyunzh | 1:8da0d969aa18 | 9 | #include <stdio.h> |
shuyunzh | 1:8da0d969aa18 | 10 | #include <string.h> |
shuyunzh | 1:8da0d969aa18 | 11 | #include <stdlib.h> |
shuyunzh | 1:8da0d969aa18 | 12 | #include <time.h> |
shuyunzh | 1:8da0d969aa18 | 13 | Serial pc(USBTX, USBRX); |
shuyunzh | 1:8da0d969aa18 | 14 | DebouncedIn top(p15); |
shuyunzh | 1:8da0d969aa18 | 15 | DebouncedIn bottom(p12); |
shuyunzh | 1:8da0d969aa18 | 16 | DebouncedIn left(p13); |
shuyunzh | 1:8da0d969aa18 | 17 | DebouncedIn right(p16); |
shuyunzh | 1:8da0d969aa18 | 18 | DebouncedIn center(p14); |
shuyunzh | 1:8da0d969aa18 | 19 | C12832_LCD lcd; |
shuyunzh | 1:8da0d969aa18 | 20 | PwmOut spkr(p26); |
shuyunzh | 1:8da0d969aa18 | 21 | PwmOut r (p23); |
shuyunzh | 1:8da0d969aa18 | 22 | PwmOut g (p24); |
shuyunzh | 1:8da0d969aa18 | 23 | PwmOut b (p25); |
shuyunzh | 1:8da0d969aa18 | 24 | |
shuyunzh | 1:8da0d969aa18 | 25 | Ticker time0; |
shuyunzh | 1:8da0d969aa18 | 26 | float i; |
shuyunzh | 1:8da0d969aa18 | 27 | |
shuyunzh | 1:8da0d969aa18 | 28 | int game; |
shuyunzh | 1:8da0d969aa18 | 29 | bool start; |
shuyunzh | 1:8da0d969aa18 | 30 | int hangman_win; |
shuyunzh | 1:8da0d969aa18 | 31 | int bingo_win; |
shuyunzh | 1:8da0d969aa18 | 32 | |
shuyunzh | 1:8da0d969aa18 | 33 | void game_choice(); |
shuyunzh | 1:8da0d969aa18 | 34 | void display(); |
shuyunzh | 1:8da0d969aa18 | 35 | void winning_sound(); |
shuyunzh | 1:8da0d969aa18 | 36 | void losing_sound(); |
shuyunzh | 1:8da0d969aa18 | 37 | void rgb_flash(int rgb_type); |
shuyunzh | 1:8da0d969aa18 | 38 | void hangman(); |
shuyunzh | 1:8da0d969aa18 | 39 | void bingo(); |
shuyunzh | 1:8da0d969aa18 | 40 | |
shuyunzh | 1:8da0d969aa18 | 41 | enum states {INIT_ST,STOP_ST,GAME0_ST,GAME1_ST,GAME_OVER_ST,DISPLAY_ST}; |
shuyunzh | 1:8da0d969aa18 | 42 | enum states state=INIT_ST; |
shuyunzh | 1:8da0d969aa18 | 43 | |
shuyunzh | 1:8da0d969aa18 | 44 | // dictionary of words to play with |
shuyunzh | 1:8da0d969aa18 | 45 | char *list[12] ={ |
shuyunzh | 1:8da0d969aa18 | 46 | "banana", "programmer", |
shuyunzh | 1:8da0d969aa18 | 47 | "tongue", "favourite", |
shuyunzh | 1:8da0d969aa18 | 48 | "serendipity", "sportman", |
shuyunzh | 1:8da0d969aa18 | 49 | "harmony", "goalkeeper", |
shuyunzh | 1:8da0d969aa18 | 50 | "operation", "hamstring", |
shuyunzh | 1:8da0d969aa18 | 51 | "vibration", "wonderful" |
shuyunzh | 1:8da0d969aa18 | 52 | }; |
shuyunzh | 1:8da0d969aa18 | 53 | |
shuyunzh | 1:8da0d969aa18 | 54 | int main() |
shuyunzh | 1:8da0d969aa18 | 55 | { |
shuyunzh | 1:8da0d969aa18 | 56 | pc.printf("Game ON\r\n"); |
shuyunzh | 1:8da0d969aa18 | 57 | time0.attach(&game_choice,0.01); |
shuyunzh | 1:8da0d969aa18 | 58 | while(1){ |
shuyunzh | 1:8da0d969aa18 | 59 | switch(state){ |
shuyunzh | 1:8da0d969aa18 | 60 | case INIT_ST: |
shuyunzh | 1:8da0d969aa18 | 61 | rgb_flash(0); |
shuyunzh | 1:8da0d969aa18 | 62 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 63 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 64 | lcd.printf("UP:Hangman\n"); |
shuyunzh | 1:8da0d969aa18 | 65 | lcd.printf("DOWN:Bingo\r\n"); |
shuyunzh | 1:8da0d969aa18 | 66 | lcd.printf("Center: List history score\r\n"); |
shuyunzh | 1:8da0d969aa18 | 67 | if (center.rising()) |
shuyunzh | 1:8da0d969aa18 | 68 | state=DISPLAY_ST; |
shuyunzh | 1:8da0d969aa18 | 69 | if (game==1) |
shuyunzh | 1:8da0d969aa18 | 70 | state=GAME0_ST; |
shuyunzh | 1:8da0d969aa18 | 71 | if (game==2) |
shuyunzh | 1:8da0d969aa18 | 72 | state=GAME1_ST; |
shuyunzh | 1:8da0d969aa18 | 73 | break; |
shuyunzh | 1:8da0d969aa18 | 74 | |
shuyunzh | 1:8da0d969aa18 | 75 | case GAME0_ST: |
shuyunzh | 1:8da0d969aa18 | 76 | game=0; |
shuyunzh | 1:8da0d969aa18 | 77 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 78 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 79 | lcd.printf("Hangman Game Start\r\n"); |
shuyunzh | 1:8da0d969aa18 | 80 | lcd.printf("Enter the letter:\r\n"); |
shuyunzh | 1:8da0d969aa18 | 81 | hangman(); |
shuyunzh | 1:8da0d969aa18 | 82 | wait(5); |
shuyunzh | 1:8da0d969aa18 | 83 | state=GAME_OVER_ST; |
shuyunzh | 1:8da0d969aa18 | 84 | break; |
shuyunzh | 1:8da0d969aa18 | 85 | case GAME1_ST: |
shuyunzh | 1:8da0d969aa18 | 86 | game=0; |
shuyunzh | 1:8da0d969aa18 | 87 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 88 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 89 | lcd.printf("Bingo Game Start\r\n"); |
shuyunzh | 1:8da0d969aa18 | 90 | lcd.printf("Enter 4 digits number:\r\n"); |
shuyunzh | 1:8da0d969aa18 | 91 | bingo(); |
shuyunzh | 1:8da0d969aa18 | 92 | wait(5); |
shuyunzh | 1:8da0d969aa18 | 93 | state=GAME_OVER_ST; |
shuyunzh | 1:8da0d969aa18 | 94 | break; |
shuyunzh | 1:8da0d969aa18 | 95 | case GAME_OVER_ST: |
shuyunzh | 1:8da0d969aa18 | 96 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 97 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 98 | lcd.printf("UP: Hangman, DOWN: Bingo, Center: Main Menu\r\n"); |
shuyunzh | 1:8da0d969aa18 | 99 | if(game==1) |
shuyunzh | 1:8da0d969aa18 | 100 | state=GAME0_ST; |
shuyunzh | 1:8da0d969aa18 | 101 | if(game==2) |
shuyunzh | 1:8da0d969aa18 | 102 | state=GAME1_ST; |
shuyunzh | 1:8da0d969aa18 | 103 | if (center.rising()) |
shuyunzh | 1:8da0d969aa18 | 104 | state=INIT_ST; |
shuyunzh | 1:8da0d969aa18 | 105 | break; |
shuyunzh | 1:8da0d969aa18 | 106 | case DISPLAY_ST: |
shuyunzh | 1:8da0d969aa18 | 107 | display(); |
shuyunzh | 1:8da0d969aa18 | 108 | if (center.rising()) |
shuyunzh | 1:8da0d969aa18 | 109 | state=INIT_ST; |
shuyunzh | 1:8da0d969aa18 | 110 | else |
shuyunzh | 1:8da0d969aa18 | 111 | state=DISPLAY_ST; |
shuyunzh | 1:8da0d969aa18 | 112 | break; |
shuyunzh | 1:8da0d969aa18 | 113 | |
shuyunzh | 1:8da0d969aa18 | 114 | } |
shuyunzh | 1:8da0d969aa18 | 115 | wait(0.1); |
shuyunzh | 1:8da0d969aa18 | 116 | } |
shuyunzh | 1:8da0d969aa18 | 117 | } |
shuyunzh | 1:8da0d969aa18 | 118 | |
shuyunzh | 1:8da0d969aa18 | 119 | void game_choice(){ |
shuyunzh | 1:8da0d969aa18 | 120 | if(top.rising()) |
shuyunzh | 1:8da0d969aa18 | 121 | game=1;//hangman |
shuyunzh | 1:8da0d969aa18 | 122 | if(bottom.rising()) |
shuyunzh | 1:8da0d969aa18 | 123 | game=2;//bingo |
shuyunzh | 1:8da0d969aa18 | 124 | if (left.rising()) |
shuyunzh | 1:8da0d969aa18 | 125 | game=3; |
shuyunzh | 1:8da0d969aa18 | 126 | if (right.rising()) |
shuyunzh | 1:8da0d969aa18 | 127 | game=4; |
shuyunzh | 1:8da0d969aa18 | 128 | } |
shuyunzh | 1:8da0d969aa18 | 129 | |
shuyunzh | 1:8da0d969aa18 | 130 | void display(){ |
shuyunzh | 1:8da0d969aa18 | 131 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 132 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 133 | lcd.printf("Scoreboard:\r\n"); |
shuyunzh | 1:8da0d969aa18 | 134 | lcd.printf("Hangman win: %d",hangman_win); |
shuyunzh | 1:8da0d969aa18 | 135 | lcd.printf("Bingo win: %d",bingo_win); |
shuyunzh | 1:8da0d969aa18 | 136 | } |
shuyunzh | 1:8da0d969aa18 | 137 | void winning_sound(){ |
shuyunzh | 1:8da0d969aa18 | 138 | for(int i=0;i<5;i++){ |
shuyunzh | 1:8da0d969aa18 | 139 | spkr.period(0.00181-0.0002*i);//1/554 |
shuyunzh | 1:8da0d969aa18 | 140 | spkr=0.5; |
shuyunzh | 1:8da0d969aa18 | 141 | wait(0.5); |
shuyunzh | 1:8da0d969aa18 | 142 | } |
shuyunzh | 1:8da0d969aa18 | 143 | spkr=0; |
shuyunzh | 1:8da0d969aa18 | 144 | } |
shuyunzh | 1:8da0d969aa18 | 145 | void losing_sound(){ |
shuyunzh | 1:8da0d969aa18 | 146 | for(int i=0;i<5;i++){ |
shuyunzh | 1:8da0d969aa18 | 147 | spkr.period(0.00181+0.001*i);//1/554 |
shuyunzh | 1:8da0d969aa18 | 148 | spkr=0.5; |
shuyunzh | 1:8da0d969aa18 | 149 | wait(0.5); |
shuyunzh | 1:8da0d969aa18 | 150 | } |
shuyunzh | 1:8da0d969aa18 | 151 | spkr=0; |
shuyunzh | 1:8da0d969aa18 | 152 | } |
shuyunzh | 1:8da0d969aa18 | 153 | void rgb_flash(int rgb_type){ |
shuyunzh | 1:8da0d969aa18 | 154 | if(rgb_type==0){ |
shuyunzh | 1:8da0d969aa18 | 155 | //printf("rgb flash init"); |
shuyunzh | 1:8da0d969aa18 | 156 | r.period(0.001); |
shuyunzh | 1:8da0d969aa18 | 157 | r=0.5; |
shuyunzh | 1:8da0d969aa18 | 158 | g=0.5; |
shuyunzh | 1:8da0d969aa18 | 159 | b=1; |
shuyunzh | 1:8da0d969aa18 | 160 | } |
shuyunzh | 1:8da0d969aa18 | 161 | else if (rgb_type==1){ |
shuyunzh | 1:8da0d969aa18 | 162 | r.period(0.001); |
shuyunzh | 1:8da0d969aa18 | 163 | r=1; |
shuyunzh | 1:8da0d969aa18 | 164 | g=0.1; |
shuyunzh | 1:8da0d969aa18 | 165 | b=1; |
shuyunzh | 1:8da0d969aa18 | 166 | } |
shuyunzh | 1:8da0d969aa18 | 167 | |
mbed_official | 0:27e1de20d3cb | 168 | } |
shuyunzh | 1:8da0d969aa18 | 169 | void bingo() { |
shuyunzh | 1:8da0d969aa18 | 170 | pc.printf("bingo\r\n"); |
shuyunzh | 1:8da0d969aa18 | 171 | int num[4],ans[4]; |
shuyunzh | 1:8da0d969aa18 | 172 | int n; |
shuyunzh | 1:8da0d969aa18 | 173 | int i,j,a(0),b(0); |
shuyunzh | 1:8da0d969aa18 | 174 | int loop; |
shuyunzh | 1:8da0d969aa18 | 175 | srand(time(NULL)); |
shuyunzh | 1:8da0d969aa18 | 176 | |
shuyunzh | 1:8da0d969aa18 | 177 | //randomize num |
shuyunzh | 1:8da0d969aa18 | 178 | for(i = 0; i <= 3; i++){ |
shuyunzh | 1:8da0d969aa18 | 179 | num[i] = rand()%9+1; |
shuyunzh | 1:8da0d969aa18 | 180 | for(j = 0; j < i; j++){ |
shuyunzh | 1:8da0d969aa18 | 181 | if(num[i] == num[j]) |
shuyunzh | 1:8da0d969aa18 | 182 | i--; |
shuyunzh | 1:8da0d969aa18 | 183 | } |
shuyunzh | 1:8da0d969aa18 | 184 | } |
shuyunzh | 1:8da0d969aa18 | 185 | |
shuyunzh | 1:8da0d969aa18 | 186 | //answer |
shuyunzh | 1:8da0d969aa18 | 187 | /* printf("Answer : "); |
shuyunzh | 1:8da0d969aa18 | 188 | |
shuyunzh | 1:8da0d969aa18 | 189 | for(i = 0; i <= 3; i++){ |
shuyunzh | 1:8da0d969aa18 | 190 | printf("%d",num[i]); |
shuyunzh | 1:8da0d969aa18 | 191 | } |
shuyunzh | 1:8da0d969aa18 | 192 | |
shuyunzh | 1:8da0d969aa18 | 193 | printf("\r\n");*/ |
shuyunzh | 1:8da0d969aa18 | 194 | |
shuyunzh | 1:8da0d969aa18 | 195 | |
shuyunzh | 1:8da0d969aa18 | 196 | //guessing number |
shuyunzh | 1:8da0d969aa18 | 197 | for(loop=0;loop<8;loop++){ |
shuyunzh | 1:8da0d969aa18 | 198 | |
shuyunzh | 1:8da0d969aa18 | 199 | printf("input number : \r\n"); |
shuyunzh | 1:8da0d969aa18 | 200 | scanf("%d",&n); |
shuyunzh | 1:8da0d969aa18 | 201 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 202 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 203 | lcd.printf("input number :%d \r\n",n); |
shuyunzh | 1:8da0d969aa18 | 204 | //partition of the answer |
shuyunzh | 1:8da0d969aa18 | 205 | ans[0] = n / 1000; |
shuyunzh | 1:8da0d969aa18 | 206 | ans[1] = n / 100 % 10; |
shuyunzh | 1:8da0d969aa18 | 207 | ans[2] = n / 10 % 10; |
shuyunzh | 1:8da0d969aa18 | 208 | ans[3] = n % 10; |
shuyunzh | 1:8da0d969aa18 | 209 | |
shuyunzh | 1:8da0d969aa18 | 210 | // judging A or B |
shuyunzh | 1:8da0d969aa18 | 211 | for(i = 0; i <= 3; i++){ |
shuyunzh | 1:8da0d969aa18 | 212 | for(j = 0; j <= 3; j++){ |
shuyunzh | 1:8da0d969aa18 | 213 | if(num[i] == ans[i]){ |
shuyunzh | 1:8da0d969aa18 | 214 | a++; |
shuyunzh | 1:8da0d969aa18 | 215 | break; |
shuyunzh | 1:8da0d969aa18 | 216 | } |
shuyunzh | 1:8da0d969aa18 | 217 | else if(num[i] == ans[j]) |
shuyunzh | 1:8da0d969aa18 | 218 | b++; |
shuyunzh | 1:8da0d969aa18 | 219 | } |
shuyunzh | 1:8da0d969aa18 | 220 | } |
shuyunzh | 1:8da0d969aa18 | 221 | |
shuyunzh | 1:8da0d969aa18 | 222 | printf("%d A %d B\r\n",a,b); |
shuyunzh | 1:8da0d969aa18 | 223 | lcd.printf("%d A %d B\r\n",a,b); |
shuyunzh | 1:8da0d969aa18 | 224 | |
shuyunzh | 1:8da0d969aa18 | 225 | //game over |
shuyunzh | 1:8da0d969aa18 | 226 | if(a == 4){ |
shuyunzh | 1:8da0d969aa18 | 227 | printf("BINGO!!!\n"); |
shuyunzh | 1:8da0d969aa18 | 228 | lcd.printf("BINGO!!!\n"); |
shuyunzh | 1:8da0d969aa18 | 229 | bingo_win++; |
shuyunzh | 1:8da0d969aa18 | 230 | winning_sound(); |
shuyunzh | 1:8da0d969aa18 | 231 | rgb_flash(1); |
shuyunzh | 1:8da0d969aa18 | 232 | break; |
shuyunzh | 1:8da0d969aa18 | 233 | } |
shuyunzh | 1:8da0d969aa18 | 234 | else{ |
shuyunzh | 1:8da0d969aa18 | 235 | a = 0; |
shuyunzh | 1:8da0d969aa18 | 236 | b = 0; |
shuyunzh | 1:8da0d969aa18 | 237 | } |
shuyunzh | 1:8da0d969aa18 | 238 | } |
shuyunzh | 1:8da0d969aa18 | 239 | if(a!=4){ |
shuyunzh | 1:8da0d969aa18 | 240 | printf("GAME OVER.\r\n"); |
shuyunzh | 1:8da0d969aa18 | 241 | printf("Answer : "); |
shuyunzh | 1:8da0d969aa18 | 242 | for(i = 0; i <= 3; i++){ |
shuyunzh | 1:8da0d969aa18 | 243 | printf("%d",num[i]); |
shuyunzh | 1:8da0d969aa18 | 244 | } |
shuyunzh | 1:8da0d969aa18 | 245 | printf("\r\n"); |
shuyunzh | 1:8da0d969aa18 | 246 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 247 | lcd.printf("GAME OVER\r\n"); |
shuyunzh | 1:8da0d969aa18 | 248 | lcd.printf("Answer : "); |
shuyunzh | 1:8da0d969aa18 | 249 | for(i = 0; i <= 3; i++){ |
shuyunzh | 1:8da0d969aa18 | 250 | lcd.printf("%d",num[i]); |
shuyunzh | 1:8da0d969aa18 | 251 | } |
shuyunzh | 1:8da0d969aa18 | 252 | losing_sound(); |
shuyunzh | 1:8da0d969aa18 | 253 | } |
shuyunzh | 1:8da0d969aa18 | 254 | } |
shuyunzh | 1:8da0d969aa18 | 255 | void hangman() { |
shuyunzh | 1:8da0d969aa18 | 256 | pc.printf("hangman\r\n"); |
shuyunzh | 1:8da0d969aa18 | 257 | int wordi, lives=8; |
shuyunzh | 1:8da0d969aa18 | 258 | char word[25]; |
shuyunzh | 1:8da0d969aa18 | 259 | int x,correct,i = 0; |
shuyunzh | 1:8da0d969aa18 | 260 | int length; |
shuyunzh | 1:8da0d969aa18 | 261 | char symb; |
shuyunzh | 1:8da0d969aa18 | 262 | |
shuyunzh | 1:8da0d969aa18 | 263 | // srand((unsigned int)time(NULL)); |
shuyunzh | 1:8da0d969aa18 | 264 | printf("\nLet's start. You have %d lives \r\n", lives); |
shuyunzh | 1:8da0d969aa18 | 265 | wordi = rand() % 12; |
shuyunzh | 1:8da0d969aa18 | 266 | length = strlen(list[wordi]); |
shuyunzh | 1:8da0d969aa18 | 267 | |
shuyunzh | 1:8da0d969aa18 | 268 | for(x=0;x<length;x++) |
shuyunzh | 1:8da0d969aa18 | 269 | { |
shuyunzh | 1:8da0d969aa18 | 270 | word[x] = '-'; |
shuyunzh | 1:8da0d969aa18 | 271 | } |
shuyunzh | 1:8da0d969aa18 | 272 | word[length] = 0; |
shuyunzh | 1:8da0d969aa18 | 273 | |
shuyunzh | 1:8da0d969aa18 | 274 | printf("%s\r\n",word); |
shuyunzh | 1:8da0d969aa18 | 275 | |
shuyunzh | 1:8da0d969aa18 | 276 | while ((lives>0) && (i < length)) |
shuyunzh | 1:8da0d969aa18 | 277 | { |
shuyunzh | 1:8da0d969aa18 | 278 | correct = 0; |
shuyunzh | 1:8da0d969aa18 | 279 | printf("Enter a letter: \r\n"); |
shuyunzh | 1:8da0d969aa18 | 280 | do{ |
shuyunzh | 1:8da0d969aa18 | 281 | scanf("%c", &symb); |
shuyunzh | 1:8da0d969aa18 | 282 | |
shuyunzh | 1:8da0d969aa18 | 283 | //symb = tolower(symb); |
shuyunzh | 1:8da0d969aa18 | 284 | |
shuyunzh | 1:8da0d969aa18 | 285 | if((symb > 32) && ((symb < 97) || (symb > 122))) |
shuyunzh | 1:8da0d969aa18 | 286 | { |
shuyunzh | 1:8da0d969aa18 | 287 | printf("Invalid character\nEnter a letter: \r\n"); |
shuyunzh | 1:8da0d969aa18 | 288 | } |
shuyunzh | 1:8da0d969aa18 | 289 | |
shuyunzh | 1:8da0d969aa18 | 290 | }while((symb < 97) || (symb > 122)); |
shuyunzh | 1:8da0d969aa18 | 291 | |
shuyunzh | 1:8da0d969aa18 | 292 | for(x=0;x<length;x++) |
shuyunzh | 1:8da0d969aa18 | 293 | { |
shuyunzh | 1:8da0d969aa18 | 294 | if(symb == word[x]) |
shuyunzh | 1:8da0d969aa18 | 295 | { |
shuyunzh | 1:8da0d969aa18 | 296 | printf("This character already used.\r\n"); |
shuyunzh | 1:8da0d969aa18 | 297 | break; |
shuyunzh | 1:8da0d969aa18 | 298 | } |
shuyunzh | 1:8da0d969aa18 | 299 | } |
shuyunzh | 1:8da0d969aa18 | 300 | |
shuyunzh | 1:8da0d969aa18 | 301 | if(x==length) |
shuyunzh | 1:8da0d969aa18 | 302 | { |
shuyunzh | 1:8da0d969aa18 | 303 | // Remark out the next line for the "real" game. |
shuyunzh | 1:8da0d969aa18 | 304 | // printf("%c, %s\r\n",symb,list[wordi]); |
shuyunzh | 1:8da0d969aa18 | 305 | |
shuyunzh | 1:8da0d969aa18 | 306 | for(x=0;x<length;x++) |
shuyunzh | 1:8da0d969aa18 | 307 | { |
shuyunzh | 1:8da0d969aa18 | 308 | if(symb == list[wordi][x]) |
shuyunzh | 1:8da0d969aa18 | 309 | { |
shuyunzh | 1:8da0d969aa18 | 310 | word[x] = symb; |
shuyunzh | 1:8da0d969aa18 | 311 | i++; |
shuyunzh | 1:8da0d969aa18 | 312 | correct = 1; |
shuyunzh | 1:8da0d969aa18 | 313 | } |
shuyunzh | 1:8da0d969aa18 | 314 | } |
shuyunzh | 1:8da0d969aa18 | 315 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 316 | lcd.locate(0,0); |
shuyunzh | 1:8da0d969aa18 | 317 | |
shuyunzh | 1:8da0d969aa18 | 318 | if(correct == 0) |
shuyunzh | 1:8da0d969aa18 | 319 | { |
shuyunzh | 1:8da0d969aa18 | 320 | lives--; |
shuyunzh | 1:8da0d969aa18 | 321 | if(lives > 0) |
shuyunzh | 1:8da0d969aa18 | 322 | { |
shuyunzh | 1:8da0d969aa18 | 323 | printf("Wrong. %i lives left.\r\n",lives); |
shuyunzh | 1:8da0d969aa18 | 324 | } |
shuyunzh | 1:8da0d969aa18 | 325 | else |
shuyunzh | 1:8da0d969aa18 | 326 | { |
shuyunzh | 1:8da0d969aa18 | 327 | printf("You lose. :(\r\n"); |
shuyunzh | 1:8da0d969aa18 | 328 | printf("Word:%s\r\n",list[wordi]); |
shuyunzh | 1:8da0d969aa18 | 329 | lcd.cls(); |
shuyunzh | 1:8da0d969aa18 | 330 | lcd.locate(0,2); |
shuyunzh | 1:8da0d969aa18 | 331 | lcd.printf("You lose. :(\r\n"); |
shuyunzh | 1:8da0d969aa18 | 332 | lcd.printf("Word:%s\r\n",list[wordi]); |
shuyunzh | 1:8da0d969aa18 | 333 | losing_sound(); |
shuyunzh | 1:8da0d969aa18 | 334 | } |
shuyunzh | 1:8da0d969aa18 | 335 | |
shuyunzh | 1:8da0d969aa18 | 336 | } |
shuyunzh | 1:8da0d969aa18 | 337 | else |
shuyunzh | 1:8da0d969aa18 | 338 | { |
shuyunzh | 1:8da0d969aa18 | 339 | if(i < length) |
shuyunzh | 1:8da0d969aa18 | 340 | { |
shuyunzh | 1:8da0d969aa18 | 341 | printf("Correct.\r\n"); |
shuyunzh | 1:8da0d969aa18 | 342 | } |
shuyunzh | 1:8da0d969aa18 | 343 | else |
shuyunzh | 1:8da0d969aa18 | 344 | { |
shuyunzh | 1:8da0d969aa18 | 345 | printf("You win! :)\r\n"); |
shuyunzh | 1:8da0d969aa18 | 346 | lcd.printf("You win! :)\r\n"); |
shuyunzh | 1:8da0d969aa18 | 347 | winning_sound(); |
shuyunzh | 1:8da0d969aa18 | 348 | hangman_win++; |
shuyunzh | 1:8da0d969aa18 | 349 | rgb_flash(1); |
shuyunzh | 1:8da0d969aa18 | 350 | } |
shuyunzh | 1:8da0d969aa18 | 351 | |
shuyunzh | 1:8da0d969aa18 | 352 | } |
shuyunzh | 1:8da0d969aa18 | 353 | if(lives>0) |
shuyunzh | 1:8da0d969aa18 | 354 | { |
shuyunzh | 1:8da0d969aa18 | 355 | lcd.printf("%i lives left.\r\n",lives); |
shuyunzh | 1:8da0d969aa18 | 356 | lcd.printf("You have %s\r\n",word); |
shuyunzh | 1:8da0d969aa18 | 357 | } |
shuyunzh | 1:8da0d969aa18 | 358 | } |
shuyunzh | 1:8da0d969aa18 | 359 | } |
shuyunzh | 1:8da0d969aa18 | 360 | } |