Peter's version

Fork of ScoreCount by George Cochrane

Committer:
gcme93
Date:
Thu May 02 16:07:04 2013 +0000
Revision:
4:7cec137649a0
Parent:
3:8e42915e7375
Child:
5:a50e02fc49cd
Yo

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 0:c82f950266fc 7 TSISensor tsi;
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 3:8e42915e7375 32
gcme93 3:8e42915e7375 33
gcme93 3:8e42915e7375 34
gcme93 3:8e42915e7375 35
gcme93 2:289c6ccc4e86 36 while(1)
gcme93 0:c82f950266fc 37 {
gcme93 2:289c6ccc4e86 38
gcme93 3:8e42915e7375 39
gcme93 3:8e42915e7375 40 reset_array(); //At start of new game reset hits from players to 0
gcme93 2:289c6ccc4e86 41
gcme93 2:289c6ccc4e86 42 while (lives>=0)
gcme93 0:c82f950266fc 43 {
gcme93 2:289c6ccc4e86 44 Blue=1; //Blue light always on when playing
gcme93 2:289c6ccc4e86 45 Red=0; //Red light off when no hits registered
gcme93 3:8e42915e7375 46 Green=0;
gcme93 0:c82f950266fc 47
gcme93 2:289c6ccc4e86 48 if (lives==0)
gcme93 2:289c6ccc4e86 49 {
gcme93 3:8e42915e7375 50 Green=1; //Magenta if no lives remain
gcme93 2:289c6ccc4e86 51 }
gcme93 2:289c6ccc4e86 52
gcme93 2:289c6ccc4e86 53 //Print no. of lives
gcme93 3:8e42915e7375 54 lcd.cls();
gcme93 3:8e42915e7375 55
gcme93 0:c82f950266fc 56 lcd.locate(0,0);
gcme93 3:8e42915e7375 57 lcd.printf("Player %c \n", Player);
gcme93 3:8e42915e7375 58
gcme93 3:8e42915e7375 59 lcd.locate(0,1);
gcme93 3:8e42915e7375 60 lcd.printf("Lives left: %d \n", lives);
gcme93 3:8e42915e7375 61
gcme93 0:c82f950266fc 62
gcme93 3:8e42915e7375 63 //Have you been hit?
gcme93 3:8e42915e7375 64
gcme93 3:8e42915e7375 65 int signal; //Signal input here!
gcme93 3:8e42915e7375 66
gcme93 4:7cec137649a0 67 signal=Interrogate();
gcme93 3:8e42915e7375 68
gcme93 3:8e42915e7375 69 hit= process_signal(signal);
gcme93 0:c82f950266fc 70
gcme93 0:c82f950266fc 71 if (hit==1)
gcme93 0:c82f950266fc 72 {
gcme93 1:d41b5b18175b 73 unsigned char i;
gcme93 3:8e42915e7375 74
gcme93 0:c82f950266fc 75 lives--;
gcme93 0:c82f950266fc 76
gcme93 2:289c6ccc4e86 77 if(lives<0)
gcme93 2:289c6ccc4e86 78 {
gcme93 2:289c6ccc4e86 79 goto end; //Skip to the end (avoids read out of -1 lives)
gcme93 2:289c6ccc4e86 80 }
gcme93 2:289c6ccc4e86 81
gcme93 2:289c6ccc4e86 82 //Update lives on LCD
gcme93 1:d41b5b18175b 83 lcd.locate(0,0);
gcme93 3:8e42915e7375 84 lcd.printf("Player %c", Player);
gcme93 3:8e42915e7375 85
gcme93 3:8e42915e7375 86 lcd.locate(0,1);
gcme93 3:8e42915e7375 87 lcd.printf("You've been hit!");
gcme93 0:c82f950266fc 88
gcme93 2:289c6ccc4e86 89 //Flash to register hit
gcme93 2:289c6ccc4e86 90 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 91 {
gcme93 2:289c6ccc4e86 92 Blue=0;
gcme93 2:289c6ccc4e86 93 Red=1;
gcme93 1:d41b5b18175b 94 wait(0.2);
gcme93 2:289c6ccc4e86 95 Red=0;
gcme93 2:289c6ccc4e86 96 Blue=1;
gcme93 3:8e42915e7375 97 wait(0.2);
gcme93 1:d41b5b18175b 98 }
gcme93 0:c82f950266fc 99 }
gcme93 2:289c6ccc4e86 100
gcme93 0:c82f950266fc 101 }
gcme93 1:d41b5b18175b 102
gcme93 2:289c6ccc4e86 103 end:
gcme93 1:d41b5b18175b 104
gcme93 2:289c6ccc4e86 105 Blue=0;
gcme93 4:7cec137649a0 106 Green=0;
gcme93 0:c82f950266fc 107 lcd.cls();
gcme93 0:c82f950266fc 108 lcd.locate(0,0);
gcme93 0:c82f950266fc 109 lcd.printf(" - GAME OVER - ...you suck");
gcme93 0:c82f950266fc 110
gcme93 1:d41b5b18175b 111
gcme93 1:d41b5b18175b 112 unsigned char i;
gcme93 2:289c6ccc4e86 113 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 114 {
gcme93 2:289c6ccc4e86 115 Red=1;
gcme93 1:d41b5b18175b 116 wait(0.05);
gcme93 2:289c6ccc4e86 117 Red=0;
gcme93 2:289c6ccc4e86 118 wait(0.05);
gcme93 1:d41b5b18175b 119 }
gcme93 2:289c6ccc4e86 120
gcme93 2:289c6ccc4e86 121 //Pretty green light and resetting
gcme93 2:289c6ccc4e86 122 Green=1;
gcme93 2:289c6ccc4e86 123 lives= 10;
gcme93 2:289c6ccc4e86 124 wait(2);
gcme93 2:289c6ccc4e86 125 Green=0;
gcme93 2:289c6ccc4e86 126 lcd.cls();
gcme93 0:c82f950266fc 127 }
gcme93 0:c82f950266fc 128 }