Peter's version

Fork of ScoreCount by George Cochrane

Committer:
gcme93
Date:
Thu May 02 13:35:41 2013 +0000
Revision:
3:8e42915e7375
Parent:
2:289c6ccc4e86
Child:
4:7cec137649a0
latest badboy

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 0:c82f950266fc 5
gcme93 0:c82f950266fc 6 TSISensor tsi;
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 2:289c6ccc4e86 14 //LCD SCREEN SETUP
gcme93 0:c82f950266fc 15 TextLCD lcd(PTD7, PTD6, PTA17, PTA16, PTC17, PTC16); // rs, e, d4-d7
gcme93 0:c82f950266fc 16
gcme93 3:8e42915e7375 17 //INITIAL PARAMETERS AND GLOBAL VARIABLES
gcme93 3:8e42915e7375 18 int hit=0;
gcme93 3:8e42915e7375 19 int lives=10; //How many lives to start game with
gcme93 3:8e42915e7375 20 unsigned char data[4];
gcme93 3:8e42915e7375 21 unsigned char Ah=0;
gcme93 3:8e42915e7375 22 unsigned char Bh=0;
gcme93 3:8e42915e7375 23 unsigned char Ch=0;
gcme93 3:8e42915e7375 24 unsigned char Dh=0;
gcme93 3:8e42915e7375 25 char Player='A';
gcme93 0:c82f950266fc 26
gcme93 3:8e42915e7375 27 //BEGIN!
gcme93 0:c82f950266fc 28
gcme93 0:c82f950266fc 29 int main()
gcme93 2:289c6ccc4e86 30 {
gcme93 3:8e42915e7375 31
gcme93 3:8e42915e7375 32
gcme93 3:8e42915e7375 33
gcme93 3:8e42915e7375 34
gcme93 2:289c6ccc4e86 35 while(1)
gcme93 0:c82f950266fc 36 {
gcme93 2:289c6ccc4e86 37
gcme93 3:8e42915e7375 38
gcme93 3:8e42915e7375 39 reset_array(); //At start of new game reset hits from players to 0
gcme93 2:289c6ccc4e86 40
gcme93 2:289c6ccc4e86 41 while (lives>=0)
gcme93 0:c82f950266fc 42 {
gcme93 2:289c6ccc4e86 43 Blue=1; //Blue light always on when playing
gcme93 2:289c6ccc4e86 44 Red=0; //Red light off when no hits registered
gcme93 3:8e42915e7375 45 Green=0;
gcme93 0:c82f950266fc 46
gcme93 2:289c6ccc4e86 47 if (lives==0)
gcme93 2:289c6ccc4e86 48 {
gcme93 3:8e42915e7375 49 Green=1; //Magenta if no lives remain
gcme93 2:289c6ccc4e86 50 }
gcme93 2:289c6ccc4e86 51
gcme93 2:289c6ccc4e86 52 //Print no. of lives
gcme93 3:8e42915e7375 53 lcd.cls();
gcme93 3:8e42915e7375 54
gcme93 0:c82f950266fc 55 lcd.locate(0,0);
gcme93 3:8e42915e7375 56 lcd.printf("Player %c \n", Player);
gcme93 3:8e42915e7375 57
gcme93 3:8e42915e7375 58 lcd.locate(0,1);
gcme93 3:8e42915e7375 59 lcd.printf("Lives left: %d \n", lives);
gcme93 3:8e42915e7375 60
gcme93 0:c82f950266fc 61
gcme93 3:8e42915e7375 62 //Have you been hit?
gcme93 3:8e42915e7375 63
gcme93 3:8e42915e7375 64 int signal; //Signal input here!
gcme93 3:8e42915e7375 65
gcme93 3:8e42915e7375 66 signal=1;
gcme93 3:8e42915e7375 67
gcme93 3:8e42915e7375 68 hit= process_signal(signal);
gcme93 0:c82f950266fc 69
gcme93 0:c82f950266fc 70 if (hit==1)
gcme93 0:c82f950266fc 71 {
gcme93 1:d41b5b18175b 72 unsigned char i;
gcme93 3:8e42915e7375 73
gcme93 0:c82f950266fc 74 lives--;
gcme93 0:c82f950266fc 75
gcme93 2:289c6ccc4e86 76 if(lives<0)
gcme93 2:289c6ccc4e86 77 {
gcme93 2:289c6ccc4e86 78 goto end; //Skip to the end (avoids read out of -1 lives)
gcme93 2:289c6ccc4e86 79 }
gcme93 2:289c6ccc4e86 80
gcme93 2:289c6ccc4e86 81 //Update lives on LCD
gcme93 1:d41b5b18175b 82 lcd.locate(0,0);
gcme93 3:8e42915e7375 83 lcd.printf("Player %c", Player);
gcme93 3:8e42915e7375 84
gcme93 3:8e42915e7375 85 lcd.locate(0,1);
gcme93 3:8e42915e7375 86 lcd.printf("You've been hit!");
gcme93 0:c82f950266fc 87
gcme93 2:289c6ccc4e86 88 //Flash to register hit
gcme93 2:289c6ccc4e86 89 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 90 {
gcme93 2:289c6ccc4e86 91 Blue=0;
gcme93 2:289c6ccc4e86 92 Red=1;
gcme93 1:d41b5b18175b 93 wait(0.2);
gcme93 2:289c6ccc4e86 94 Red=0;
gcme93 2:289c6ccc4e86 95 Blue=1;
gcme93 3:8e42915e7375 96 wait(0.2);
gcme93 1:d41b5b18175b 97 }
gcme93 0:c82f950266fc 98 }
gcme93 2:289c6ccc4e86 99
gcme93 0:c82f950266fc 100 }
gcme93 1:d41b5b18175b 101
gcme93 2:289c6ccc4e86 102 end:
gcme93 1:d41b5b18175b 103
gcme93 2:289c6ccc4e86 104 Blue=0;
gcme93 0:c82f950266fc 105 lcd.cls();
gcme93 0:c82f950266fc 106 lcd.locate(0,0);
gcme93 0:c82f950266fc 107 lcd.printf(" - GAME OVER - ...you suck");
gcme93 0:c82f950266fc 108
gcme93 1:d41b5b18175b 109
gcme93 1:d41b5b18175b 110 unsigned char i;
gcme93 2:289c6ccc4e86 111 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 112 {
gcme93 2:289c6ccc4e86 113 Red=1;
gcme93 1:d41b5b18175b 114 wait(0.05);
gcme93 2:289c6ccc4e86 115 Red=0;
gcme93 2:289c6ccc4e86 116 wait(0.05);
gcme93 1:d41b5b18175b 117 }
gcme93 2:289c6ccc4e86 118
gcme93 2:289c6ccc4e86 119 //Pretty green light and resetting
gcme93 2:289c6ccc4e86 120 Green=1;
gcme93 2:289c6ccc4e86 121 lives= 10;
gcme93 2:289c6ccc4e86 122 wait(2);
gcme93 2:289c6ccc4e86 123 Green=0;
gcme93 2:289c6ccc4e86 124 lcd.cls();
gcme93 0:c82f950266fc 125 }
gcme93 0:c82f950266fc 126 }