Peter's version

Fork of ScoreCount by George Cochrane

Committer:
gcme93
Date:
Thu May 02 21:18:42 2013 +0000
Revision:
5:a50e02fc49cd
Parent:
4:7cec137649a0
Child:
6:e269f6c282bc
Thursday Night (receiver and transmitter code too)

Who changed what in which revision?

UserRevisionLine numberNew 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 0:c82f950266fc 6
gcme93 5:a50e02fc49cd 7
gcme93 0:c82f950266fc 8
gcme93 3:8e42915e7375 9
gcme93 2:289c6ccc4e86 10 //RGB LED SETUP
gcme93 2:289c6ccc4e86 11 DigitalOut Red(PTC6);
gcme93 2:289c6ccc4e86 12 DigitalOut Blue(PTC10);
gcme93 2:289c6ccc4e86 13 DigitalOut Green(PTC11);
gcme93 0:c82f950266fc 14
gcme93 2:289c6ccc4e86 15 //LCD SCREEN SETUP
gcme93 0:c82f950266fc 16 TextLCD lcd(PTD7, PTD6, PTA17, PTA16, PTC17, PTC16); // rs, e, d4-d7
gcme93 0:c82f950266fc 17
gcme93 3:8e42915e7375 18 //INITIAL PARAMETERS AND GLOBAL VARIABLES
gcme93 3:8e42915e7375 19 int hit=0;
gcme93 3:8e42915e7375 20 int lives=10; //How many lives to start game with
gcme93 3:8e42915e7375 21 unsigned char data[4];
gcme93 3:8e42915e7375 22 unsigned char Ah=0;
gcme93 3:8e42915e7375 23 unsigned char Bh=0;
gcme93 3:8e42915e7375 24 unsigned char Ch=0;
gcme93 3:8e42915e7375 25 unsigned char Dh=0;
gcme93 3:8e42915e7375 26 char Player='A';
gcme93 0:c82f950266fc 27
gcme93 3:8e42915e7375 28 //BEGIN!
gcme93 0:c82f950266fc 29
gcme93 0:c82f950266fc 30 int main()
gcme93 2:289c6ccc4e86 31 {
gcme93 2:289c6ccc4e86 32 while(1)
gcme93 5:a50e02fc49cd 33 {
gcme93 5:a50e02fc49cd 34 reset_array(); //At start of new game reset hits from players to 0
gcme93 2:289c6ccc4e86 35
gcme93 2:289c6ccc4e86 36 while (lives>=0)
gcme93 0:c82f950266fc 37 {
gcme93 5:a50e02fc49cd 38 Blue=1; //Blue light always on when playing
gcme93 5:a50e02fc49cd 39 Red=0;
gcme93 3:8e42915e7375 40 Green=0;
gcme93 0:c82f950266fc 41
gcme93 2:289c6ccc4e86 42 if (lives==0)
gcme93 2:289c6ccc4e86 43 {
gcme93 5:a50e02fc49cd 44 Green=1; //Turquoise if no lives remain (effectively last life left)
gcme93 2:289c6ccc4e86 45 }
gcme93 2:289c6ccc4e86 46
gcme93 5:a50e02fc49cd 47
gcme93 3:8e42915e7375 48 lcd.cls();
gcme93 3:8e42915e7375 49
gcme93 0:c82f950266fc 50 lcd.locate(0,0);
gcme93 5:a50e02fc49cd 51 lcd.printf("Player %c \n", Player); //Print which player you are
gcme93 3:8e42915e7375 52
gcme93 3:8e42915e7375 53 lcd.locate(0,1);
gcme93 5:a50e02fc49cd 54 lcd.printf("Lives left: %d \n", lives); //Print how many lives are left
gcme93 3:8e42915e7375 55
gcme93 0:c82f950266fc 56
gcme93 3:8e42915e7375 57 //Have you been hit?
gcme93 3:8e42915e7375 58
gcme93 5:a50e02fc49cd 59 int signal;
gcme93 4:7cec137649a0 60 signal=Interrogate();
gcme93 3:8e42915e7375 61 hit= process_signal(signal);
gcme93 0:c82f950266fc 62
gcme93 0:c82f950266fc 63 if (hit==1)
gcme93 5:a50e02fc49cd 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 0:c82f950266fc 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 }