![](/media/cache/profiles/004acbc8eefec9fe0629b15f52b94bcf.50x50_q85.jpg)
Peter's version
Fork of ScoreCount by
main.cpp@2:289c6ccc4e86, 2013-05-01 (annotated)
- Committer:
- gcme93
- Date:
- Wed May 01 19:46:48 2013 +0000
- Revision:
- 2:289c6ccc4e86
- Parent:
- 1:d41b5b18175b
- Child:
- 3:8e42915e7375
Home improvements (cleaner)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gcme93 | 0:c82f950266fc | 1 | #include "mbed.h" |
gcme93 | 0:c82f950266fc | 2 | #include "TSISensor.h" |
gcme93 | 0:c82f950266fc | 3 | #include "TextLCD.h" |
gcme93 | 0:c82f950266fc | 4 | |
gcme93 | 0:c82f950266fc | 5 | |
gcme93 | 2:289c6ccc4e86 | 6 | //INITIAL PARAMETERS |
gcme93 | 0:c82f950266fc | 7 | int hit=0; |
gcme93 | 2:289c6ccc4e86 | 8 | int lives=10; //How many lives to start game with |
gcme93 | 0:c82f950266fc | 9 | float a; |
gcme93 | 0:c82f950266fc | 10 | TSISensor tsi; |
gcme93 | 0:c82f950266fc | 11 | |
gcme93 | 2:289c6ccc4e86 | 12 | //RGB LED SETUP |
gcme93 | 2:289c6ccc4e86 | 13 | DigitalOut Red(PTC6); |
gcme93 | 2:289c6ccc4e86 | 14 | DigitalOut Blue(PTC10); |
gcme93 | 2:289c6ccc4e86 | 15 | DigitalOut Green(PTC11); |
gcme93 | 0:c82f950266fc | 16 | |
gcme93 | 2:289c6ccc4e86 | 17 | //LCD SCREEN SETUP |
gcme93 | 0:c82f950266fc | 18 | TextLCD lcd(PTD7, PTD6, PTA17, PTA16, PTC17, PTC16); // rs, e, d4-d7 |
gcme93 | 0:c82f950266fc | 19 | |
gcme93 | 0:c82f950266fc | 20 | |
gcme93 | 0:c82f950266fc | 21 | |
gcme93 | 0:c82f950266fc | 22 | int main() |
gcme93 | 2:289c6ccc4e86 | 23 | { |
gcme93 | 2:289c6ccc4e86 | 24 | while(1) |
gcme93 | 0:c82f950266fc | 25 | { |
gcme93 | 2:289c6ccc4e86 | 26 | |
gcme93 | 2:289c6ccc4e86 | 27 | lcd.cls(); |
gcme93 | 2:289c6ccc4e86 | 28 | |
gcme93 | 2:289c6ccc4e86 | 29 | while (lives>=0) |
gcme93 | 0:c82f950266fc | 30 | { |
gcme93 | 2:289c6ccc4e86 | 31 | Blue=1; //Blue light always on when playing |
gcme93 | 2:289c6ccc4e86 | 32 | Red=0; //Red light off when no hits registered |
gcme93 | 0:c82f950266fc | 33 | |
gcme93 | 2:289c6ccc4e86 | 34 | if (lives==0) |
gcme93 | 2:289c6ccc4e86 | 35 | { |
gcme93 | 2:289c6ccc4e86 | 36 | Red=1; //Magenta if no lives remain |
gcme93 | 2:289c6ccc4e86 | 37 | } |
gcme93 | 2:289c6ccc4e86 | 38 | |
gcme93 | 0:c82f950266fc | 39 | |
gcme93 | 2:289c6ccc4e86 | 40 | |
gcme93 | 2:289c6ccc4e86 | 41 | //TRIGGER FOR HIT (CURRENTLY TOUCH PAD) |
gcme93 | 0:c82f950266fc | 42 | a=tsi.readPercentage(); |
gcme93 | 0:c82f950266fc | 43 | |
gcme93 | 0:c82f950266fc | 44 | if (a>=0.01) |
gcme93 | 0:c82f950266fc | 45 | {hit=1;} |
gcme93 | 0:c82f950266fc | 46 | else |
gcme93 | 0:c82f950266fc | 47 | {hit=0;} |
gcme93 | 0:c82f950266fc | 48 | |
gcme93 | 2:289c6ccc4e86 | 49 | |
gcme93 | 2:289c6ccc4e86 | 50 | //Print no. of lives |
gcme93 | 0:c82f950266fc | 51 | lcd.locate(0,0); |
gcme93 | 0:c82f950266fc | 52 | lcd.printf("Lives remaining: %d \n", lives); |
gcme93 | 0:c82f950266fc | 53 | |
gcme93 | 0:c82f950266fc | 54 | |
gcme93 | 0:c82f950266fc | 55 | if (hit==1) |
gcme93 | 0:c82f950266fc | 56 | { |
gcme93 | 1:d41b5b18175b | 57 | unsigned char i; |
gcme93 | 1:d41b5b18175b | 58 | |
gcme93 | 0:c82f950266fc | 59 | |
gcme93 | 0:c82f950266fc | 60 | lives--; |
gcme93 | 0:c82f950266fc | 61 | |
gcme93 | 2:289c6ccc4e86 | 62 | if(lives<0) |
gcme93 | 2:289c6ccc4e86 | 63 | { |
gcme93 | 2:289c6ccc4e86 | 64 | goto end; //Skip to the end (avoids read out of -1 lives) |
gcme93 | 2:289c6ccc4e86 | 65 | } |
gcme93 | 2:289c6ccc4e86 | 66 | |
gcme93 | 2:289c6ccc4e86 | 67 | //Update lives on LCD |
gcme93 | 1:d41b5b18175b | 68 | lcd.locate(0,0); |
gcme93 | 1:d41b5b18175b | 69 | lcd.printf("Lives remaining: %d \n", lives); |
gcme93 | 0:c82f950266fc | 70 | |
gcme93 | 2:289c6ccc4e86 | 71 | //Flash to register hit |
gcme93 | 2:289c6ccc4e86 | 72 | for(i=0;i<4;i++) //INCREASE i TO EXTEND TIME THAT GUN IS DISABLED! Maybe later add that being hit disables your own trigger? |
gcme93 | 1:d41b5b18175b | 73 | { |
gcme93 | 2:289c6ccc4e86 | 74 | Blue=0; |
gcme93 | 2:289c6ccc4e86 | 75 | Red=1; |
gcme93 | 1:d41b5b18175b | 76 | wait(0.2); |
gcme93 | 2:289c6ccc4e86 | 77 | Red=0; |
gcme93 | 2:289c6ccc4e86 | 78 | Blue=1; |
gcme93 | 2:289c6ccc4e86 | 79 | wait(0.2); |
gcme93 | 1:d41b5b18175b | 80 | } |
gcme93 | 0:c82f950266fc | 81 | } |
gcme93 | 2:289c6ccc4e86 | 82 | |
gcme93 | 0:c82f950266fc | 83 | } |
gcme93 | 1:d41b5b18175b | 84 | |
gcme93 | 2:289c6ccc4e86 | 85 | end: |
gcme93 | 1:d41b5b18175b | 86 | |
gcme93 | 2:289c6ccc4e86 | 87 | Blue=0; |
gcme93 | 0:c82f950266fc | 88 | lcd.cls(); |
gcme93 | 0:c82f950266fc | 89 | lcd.locate(0,0); |
gcme93 | 0:c82f950266fc | 90 | lcd.printf(" - GAME OVER - ...you suck"); |
gcme93 | 0:c82f950266fc | 91 | |
gcme93 | 1:d41b5b18175b | 92 | |
gcme93 | 1:d41b5b18175b | 93 | unsigned char i; |
gcme93 | 2:289c6ccc4e86 | 94 | for(i=0;i<50;i++) //Flashing to indicate game over - INCREASE i FOR LONGER BREAK BEFORE RESET (perhaps button to reset, not auto reset?) |
gcme93 | 1:d41b5b18175b | 95 | { |
gcme93 | 2:289c6ccc4e86 | 96 | Red=1; |
gcme93 | 1:d41b5b18175b | 97 | wait(0.05); |
gcme93 | 2:289c6ccc4e86 | 98 | Red=0; |
gcme93 | 2:289c6ccc4e86 | 99 | wait(0.05); |
gcme93 | 1:d41b5b18175b | 100 | } |
gcme93 | 2:289c6ccc4e86 | 101 | |
gcme93 | 2:289c6ccc4e86 | 102 | //Pretty green light and resetting |
gcme93 | 2:289c6ccc4e86 | 103 | Green=1; |
gcme93 | 2:289c6ccc4e86 | 104 | lives= 10; |
gcme93 | 2:289c6ccc4e86 | 105 | wait(2); |
gcme93 | 2:289c6ccc4e86 | 106 | Green=0; |
gcme93 | 2:289c6ccc4e86 | 107 | lcd.cls(); |
gcme93 | 0:c82f950266fc | 108 | } |
gcme93 | 0:c82f950266fc | 109 | } |