George Cochrane
/
ScoreCount2
Peter's version
Fork of ScoreCount by
main.cpp@6:e269f6c282bc, 2013-05-03 (annotated)
- Committer:
- gcme93
- Date:
- Fri May 03 12:07:30 2013 +0000
- Revision:
- 6:e269f6c282bc
- Parent:
- 5:a50e02fc49cd
the final copy
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 | 3:8e42915e7375 | 4 | #include "process_signal.h" |
gcme93 | 4:7cec137649a0 | 5 | #include "reciever.h" |
gcme93 | 6:e269f6c282bc | 6 | #include "transmitter.h" |
gcme93 | 0:c82f950266fc | 7 | |
gcme93 | 3:8e42915e7375 | 8 | |
gcme93 | 2:289c6ccc4e86 | 9 | //RGB LED SETUP |
gcme93 | 2:289c6ccc4e86 | 10 | DigitalOut Red(PTC6); |
gcme93 | 2:289c6ccc4e86 | 11 | DigitalOut Blue(PTC10); |
gcme93 | 2:289c6ccc4e86 | 12 | DigitalOut Green(PTC11); |
gcme93 | 0:c82f950266fc | 13 | |
gcme93 | 6:e269f6c282bc | 14 | Serial pc(USBTX,USBRX); |
gcme93 | 6:e269f6c282bc | 15 | |
gcme93 | 2:289c6ccc4e86 | 16 | //LCD SCREEN SETUP |
gcme93 | 0:c82f950266fc | 17 | TextLCD lcd(PTD7, PTD6, PTA17, PTA16, PTC17, PTC16); // rs, e, d4-d7 |
gcme93 | 0:c82f950266fc | 18 | |
gcme93 | 3:8e42915e7375 | 19 | //INITIAL PARAMETERS AND GLOBAL VARIABLES |
gcme93 | 3:8e42915e7375 | 20 | int hit=0; |
gcme93 | 3:8e42915e7375 | 21 | int lives=10; //How many lives to start game with |
gcme93 | 3:8e42915e7375 | 22 | unsigned char data[4]; |
gcme93 | 3:8e42915e7375 | 23 | unsigned char Ah=0; |
gcme93 | 3:8e42915e7375 | 24 | unsigned char Bh=0; |
gcme93 | 3:8e42915e7375 | 25 | unsigned char Ch=0; |
gcme93 | 3:8e42915e7375 | 26 | unsigned char Dh=0; |
gcme93 | 3:8e42915e7375 | 27 | char Player='A'; |
gcme93 | 0:c82f950266fc | 28 | |
gcme93 | 3:8e42915e7375 | 29 | //BEGIN! |
gcme93 | 0:c82f950266fc | 30 | |
gcme93 | 0:c82f950266fc | 31 | int main() |
gcme93 | 2:289c6ccc4e86 | 32 | { |
gcme93 | 2:289c6ccc4e86 | 33 | while(1) |
gcme93 | 5:a50e02fc49cd | 34 | { |
gcme93 | 5:a50e02fc49cd | 35 | reset_array(); //At start of new game reset hits from players to 0 |
gcme93 | 2:289c6ccc4e86 | 36 | |
gcme93 | 2:289c6ccc4e86 | 37 | while (lives>=0) |
gcme93 | 0:c82f950266fc | 38 | { |
gcme93 | 5:a50e02fc49cd | 39 | Blue=1; //Blue light always on when playing |
gcme93 | 5:a50e02fc49cd | 40 | Red=0; |
gcme93 | 3:8e42915e7375 | 41 | Green=0; |
gcme93 | 0:c82f950266fc | 42 | |
gcme93 | 2:289c6ccc4e86 | 43 | if (lives==0) |
gcme93 | 2:289c6ccc4e86 | 44 | { |
gcme93 | 5:a50e02fc49cd | 45 | Green=1; //Turquoise if no lives remain (effectively last life left) |
gcme93 | 2:289c6ccc4e86 | 46 | } |
gcme93 | 2:289c6ccc4e86 | 47 | |
gcme93 | 5:a50e02fc49cd | 48 | |
gcme93 | 3:8e42915e7375 | 49 | lcd.cls(); |
gcme93 | 3:8e42915e7375 | 50 | |
gcme93 | 0:c82f950266fc | 51 | lcd.locate(0,0); |
gcme93 | 5:a50e02fc49cd | 52 | lcd.printf("Player %c \n", Player); //Print which player you are |
gcme93 | 3:8e42915e7375 | 53 | |
gcme93 | 3:8e42915e7375 | 54 | lcd.locate(0,1); |
gcme93 | 5:a50e02fc49cd | 55 | lcd.printf("Lives left: %d \n", lives); //Print how many lives are left |
gcme93 | 3:8e42915e7375 | 56 | |
gcme93 | 0:c82f950266fc | 57 | |
gcme93 | 3:8e42915e7375 | 58 | //Have you been hit? |
gcme93 | 3:8e42915e7375 | 59 | |
gcme93 | 5:a50e02fc49cd | 60 | int signal; |
gcme93 | 4:7cec137649a0 | 61 | signal=Interrogate(); |
gcme93 | 3:8e42915e7375 | 62 | hit= process_signal(signal); |
gcme93 | 0:c82f950266fc | 63 | |
gcme93 | 6:e269f6c282bc | 64 | |
gcme93 | 0:c82f950266fc | 65 | lives--; |
gcme93 | 0:c82f950266fc | 66 | |
gcme93 | 2:289c6ccc4e86 | 67 | if(lives<0) |
gcme93 | 2:289c6ccc4e86 | 68 | { |
gcme93 | 2:289c6ccc4e86 | 69 | goto end; //Skip to the end (avoids read out of -1 lives) |
gcme93 | 2:289c6ccc4e86 | 70 | } |
gcme93 | 2:289c6ccc4e86 | 71 | |
gcme93 | 2:289c6ccc4e86 | 72 | //Update lives on LCD |
gcme93 | 3:8e42915e7375 | 73 | |
gcme93 | 3:8e42915e7375 | 74 | lcd.locate(0,1); |
gcme93 | 3:8e42915e7375 | 75 | lcd.printf("You've been hit!"); |
gcme93 | 0:c82f950266fc | 76 | |
gcme93 | 2:289c6ccc4e86 | 77 | //Flash to register hit |
gcme93 | 5:a50e02fc49cd | 78 | unsigned char i; |
gcme93 | 5:a50e02fc49cd | 79 | for(i=0;i<4;i++) //INCREASE i TO EXTEND TIME THAT GUN IS DISABLED! |
gcme93 | 1:d41b5b18175b | 80 | { |
gcme93 | 2:289c6ccc4e86 | 81 | Blue=0; |
gcme93 | 2:289c6ccc4e86 | 82 | Red=1; |
gcme93 | 1:d41b5b18175b | 83 | wait(0.2); |
gcme93 | 2:289c6ccc4e86 | 84 | Red=0; |
gcme93 | 2:289c6ccc4e86 | 85 | Blue=1; |
gcme93 | 3:8e42915e7375 | 86 | wait(0.2); |
gcme93 | 1:d41b5b18175b | 87 | } |
gcme93 | 6:e269f6c282bc | 88 | |
gcme93 | 0:c82f950266fc | 89 | } |
gcme93 | 5:a50e02fc49cd | 90 | |
gcme93 | 2:289c6ccc4e86 | 91 | end: |
gcme93 | 1:d41b5b18175b | 92 | |
gcme93 | 2:289c6ccc4e86 | 93 | Blue=0; |
gcme93 | 4:7cec137649a0 | 94 | Green=0; |
gcme93 | 0:c82f950266fc | 95 | lcd.cls(); |
gcme93 | 0:c82f950266fc | 96 | lcd.locate(0,0); |
gcme93 | 0:c82f950266fc | 97 | lcd.printf(" - GAME OVER - ...you suck"); |
gcme93 | 0:c82f950266fc | 98 | |
gcme93 | 1:d41b5b18175b | 99 | |
gcme93 | 1:d41b5b18175b | 100 | unsigned char i; |
gcme93 | 5:a50e02fc49cd | 101 | for(i=0;i<50;i++) //Flashing to indicate game over - INCREASE i FOR LONGER BREAK BEFORE RESET |
gcme93 | 1:d41b5b18175b | 102 | { |
gcme93 | 2:289c6ccc4e86 | 103 | Red=1; |
gcme93 | 1:d41b5b18175b | 104 | wait(0.05); |
gcme93 | 2:289c6ccc4e86 | 105 | Red=0; |
gcme93 | 2:289c6ccc4e86 | 106 | wait(0.05); |
gcme93 | 1:d41b5b18175b | 107 | } |
gcme93 | 2:289c6ccc4e86 | 108 | |
gcme93 | 2:289c6ccc4e86 | 109 | //Pretty green light and resetting |
gcme93 | 2:289c6ccc4e86 | 110 | Green=1; |
gcme93 | 2:289c6ccc4e86 | 111 | lives= 10; |
gcme93 | 2:289c6ccc4e86 | 112 | wait(2); |
gcme93 | 2:289c6ccc4e86 | 113 | Green=0; |
gcme93 | 2:289c6ccc4e86 | 114 | lcd.cls(); |
gcme93 | 0:c82f950266fc | 115 | } |
gcme93 | 0:c82f950266fc | 116 | } |