Peter's version

Fork of ScoreCount by George Cochrane

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?

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 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 }