ELEC2645 (2015/16) / Mbed 2 deprecated Gameinitial

Dependencies:   N5110 mbed

Committer:
Honeymeister
Date:
Fri Apr 29 16:12:09 2016 +0000
Revision:
1:2ab3e61fa258
Parent:
0:46009d41b72b
Child:
2:fae6fef4f5ad
nearly done the ting. halfway through calibrating joystick.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Honeymeister 0:46009d41b72b 1 #include "mbed.h"
Honeymeister 0:46009d41b72b 2 #include "N5110.h"
Honeymeister 0:46009d41b72b 3
Honeymeister 0:46009d41b72b 4 // VCC, SCE, RST, D/C, MOSI, SCLK, LED
Honeymeister 0:46009d41b72b 5 N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3);
Honeymeister 0:46009d41b72b 6 BusOut leds(PTC5 , PTC7);
Honeymeister 0:46009d41b72b 7 AnalogIn pot(PTB10);
Honeymeister 0:46009d41b72b 8
Honeymeister 0:46009d41b72b 9 // change this to alter tolerance of joystick direction
Honeymeister 0:46009d41b72b 10 #define DIRECTION_TOLERANCE 0.05
Honeymeister 0:46009d41b72b 11
Honeymeister 0:46009d41b72b 12 // connections for joystick
Honeymeister 0:46009d41b72b 13 DigitalIn button(PTB11);
Honeymeister 0:46009d41b72b 14 AnalogIn xPot(PTB2);
Honeymeister 0:46009d41b72b 15 AnalogIn yPot(PTB3);
Honeymeister 0:46009d41b72b 16
Honeymeister 0:46009d41b72b 17
Honeymeister 0:46009d41b72b 18 int nx= 84;
Honeymeister 0:46009d41b72b 19 int ny= 48;
Honeymeister 0:46009d41b72b 20 int i;
Honeymeister 0:46009d41b72b 21 int j;
Honeymeister 0:46009d41b72b 22 int NextGen[84][48]= {0};
Honeymeister 1:2ab3e61fa258 23 void splashScreen();
Honeymeister 1:2ab3e61fa258 24 void clearCells();
Honeymeister 1:2ab3e61fa258 25 void Wall();
Honeymeister 1:2ab3e61fa258 26 void snakeBody(char x,char y);
Honeymeister 1:2ab3e61fa258 27
Honeymeister 1:2ab3e61fa258 28 // timer to regularly read the joystick
Honeymeister 1:2ab3e61fa258 29 Ticker pollJoystick;
Honeymeister 1:2ab3e61fa258 30
Honeymeister 1:2ab3e61fa258 31 // create enumerated type (0,1,2,3 etc. for direction)
Honeymeister 1:2ab3e61fa258 32 // could be extended for diagonals etc.
Honeymeister 1:2ab3e61fa258 33 enum DirectionName {
Honeymeister 1:2ab3e61fa258 34 UP,
Honeymeister 1:2ab3e61fa258 35 DOWN,
Honeymeister 1:2ab3e61fa258 36 LEFT,
Honeymeister 1:2ab3e61fa258 37 RIGHT,
Honeymeister 1:2ab3e61fa258 38 CENTRE,
Honeymeister 1:2ab3e61fa258 39 UNKNOWN
Honeymeister 1:2ab3e61fa258 40 };
Honeymeister 1:2ab3e61fa258 41
Honeymeister 1:2ab3e61fa258 42 // struct for Joystick
Honeymeister 1:2ab3e61fa258 43 typedef struct JoyStick Joystick;
Honeymeister 1:2ab3e61fa258 44 struct JoyStick {
Honeymeister 1:2ab3e61fa258 45 float x; // current x value
Honeymeister 1:2ab3e61fa258 46 float x0; // 'centred' x value
Honeymeister 1:2ab3e61fa258 47 float y; // current y value
Honeymeister 1:2ab3e61fa258 48 float y0; // 'centred' y value
Honeymeister 1:2ab3e61fa258 49 int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
Honeymeister 1:2ab3e61fa258 50 DirectionName direction; // current direction
Honeymeister 1:2ab3e61fa258 51 };
Honeymeister 1:2ab3e61fa258 52
Honeymeister 1:2ab3e61fa258 53 // create struct variable
Honeymeister 1:2ab3e61fa258 54 Joystick joystick;
Honeymeister 1:2ab3e61fa258 55
Honeymeister 1:2ab3e61fa258 56 int printFlag = 0;
Honeymeister 1:2ab3e61fa258 57
Honeymeister 1:2ab3e61fa258 58 // function prototypes
Honeymeister 1:2ab3e61fa258 59 void calibrateJoystick();
Honeymeister 1:2ab3e61fa258 60 void updateJoystick();
Honeymeister 1:2ab3e61fa258 61
Honeymeister 1:2ab3e61fa258 62 int main()
Honeymeister 1:2ab3e61fa258 63 {
Honeymeister 1:2ab3e61fa258 64 srand(time(NULL));
Honeymeister 1:2ab3e61fa258 65
Honeymeister 1:2ab3e61fa258 66 wait(2);
Honeymeister 1:2ab3e61fa258 67 lcd.init();
Honeymeister 1:2ab3e61fa258 68 splashScreen();
Honeymeister 1:2ab3e61fa258 69 wait(2);
Honeymeister 1:2ab3e61fa258 70 clearCells();
Honeymeister 1:2ab3e61fa258 71 Wall();
Honeymeister 1:2ab3e61fa258 72 wait(0.5);
Honeymeister 1:2ab3e61fa258 73 snakeBody(42,24);
Honeymeister 1:2ab3e61fa258 74 calibrateJoystick(); // get centred values of joystick
Honeymeister 1:2ab3e61fa258 75 pollJoystick.attach(&updateJoystick,1.0/10.0); // read joystick 10 times per second
Honeymeister 1:2ab3e61fa258 76 while (1){
Honeymeister 1:2ab3e61fa258 77
Honeymeister 1:2ab3e61fa258 78 lcd.setBrightness(pot*0.001f);
Honeymeister 1:2ab3e61fa258 79 }
Honeymeister 1:2ab3e61fa258 80 }
Honeymeister 1:2ab3e61fa258 81
Honeymeister 1:2ab3e61fa258 82
Honeymeister 1:2ab3e61fa258 83 int main()
Honeymeister 1:2ab3e61fa258 84 {
Honeymeister 1:2ab3e61fa258 85
Honeymeister 1:2ab3e61fa258 86
Honeymeister 1:2ab3e61fa258 87 while(1) {
Honeymeister 1:2ab3e61fa258 88
Honeymeister 1:2ab3e61fa258 89 if (printFlag) { // if flag set, clear flag and print joystick values to serial port
Honeymeister 1:2ab3e61fa258 90 printFlag = 0;
Honeymeister 1:2ab3e61fa258 91 serial.printf("x = %f y = %f button = %d ",joystick.x,joystick.y,joystick.button);
Honeymeister 1:2ab3e61fa258 92
Honeymeister 1:2ab3e61fa258 93 // check joystick direction
Honeymeister 1:2ab3e61fa258 94 if (joystick.direction == UP)
Honeymeister 1:2ab3e61fa258 95 serial.printf(" UP\n");
Honeymeister 1:2ab3e61fa258 96 if (joystick.direction == DOWN)
Honeymeister 1:2ab3e61fa258 97 serial.printf(" DOWN\n");
Honeymeister 1:2ab3e61fa258 98 if (joystick.direction == LEFT)
Honeymeister 1:2ab3e61fa258 99 serial.printf(" LEFT\n");
Honeymeister 1:2ab3e61fa258 100 if (joystick.direction == RIGHT)
Honeymeister 1:2ab3e61fa258 101 serial.printf(" RIGHT\n");
Honeymeister 1:2ab3e61fa258 102 if (joystick.direction == CENTRE)
Honeymeister 1:2ab3e61fa258 103 serial.printf(" CENTRE\n");
Honeymeister 1:2ab3e61fa258 104 if (joystick.direction == UNKNOWN)
Honeymeister 1:2ab3e61fa258 105 serial.printf(" Unsupported direction\n");
Honeymeister 1:2ab3e61fa258 106
Honeymeister 1:2ab3e61fa258 107 }
Honeymeister 1:2ab3e61fa258 108
Honeymeister 1:2ab3e61fa258 109 }
Honeymeister 1:2ab3e61fa258 110 }
Honeymeister 1:2ab3e61fa258 111
Honeymeister 0:46009d41b72b 112
Honeymeister 0:46009d41b72b 113 void splashScreen() //This is the first screen the user sees when the game is turned on
Honeymeister 0:46009d41b72b 114 {
Honeymeister 0:46009d41b72b 115
Honeymeister 0:46009d41b72b 116 lcd.printString("Welcome To",15,1);
Honeymeister 0:46009d41b72b 117 wait(1);
Honeymeister 0:46009d41b72b 118 lcd.printString("D.Honeywell's",3,2);
Honeymeister 0:46009d41b72b 119 lcd.printString("------------------",1,3);
Honeymeister 0:46009d41b72b 120 wait(2);
Honeymeister 0:46009d41b72b 121 lcd.printString("E",15,4);
Honeymeister 0:46009d41b72b 122 wait(0.3);
Honeymeister 0:46009d41b72b 123 lcd.printString("EP",15,4);
Honeymeister 0:46009d41b72b 124 wait(0.3);
Honeymeister 0:46009d41b72b 125 lcd.printString("EPI",15,4);
Honeymeister 0:46009d41b72b 126 wait(0.3);
Honeymeister 0:46009d41b72b 127 lcd.printString("EPIC",15,4);
Honeymeister 0:46009d41b72b 128 lcd.printString("EPIC ",15,4);
Honeymeister 0:46009d41b72b 129 wait(0.3);
Honeymeister 0:46009d41b72b 130 lcd.printString("EPIC G",15,4);
Honeymeister 0:46009d41b72b 131 wait(0.3);
Honeymeister 0:46009d41b72b 132 lcd.printString("EPIC GA",15,4);
Honeymeister 0:46009d41b72b 133 wait(0.3);
Honeymeister 0:46009d41b72b 134 lcd.printString("EPIC GAM",15,4);
Honeymeister 0:46009d41b72b 135 wait(0.3);
Honeymeister 0:46009d41b72b 136 lcd.printString("EPIC GAME",15,4);
Honeymeister 0:46009d41b72b 137 wait(0.3);
Honeymeister 0:46009d41b72b 138 // lcd.drawRect(0,0,82,46,0);
Honeymeister 0:46009d41b72b 139 // wait(0.1);
Honeymeister 0:46009d41b72b 140 // lcd.drawRect(0,0,78,42,0);
Honeymeister 0:46009d41b72b 141 // wait(0.1);
Honeymeister 0:46009d41b72b 142 // lcd.drawRect(0,0,74,38,0);
Honeymeister 0:46009d41b72b 143 // wait(0.1);
Honeymeister 0:46009d41b72b 144 // lcd.drawRect(0,0,70,34,0);
Honeymeister 0:46009d41b72b 145 // wait(0.1);
Honeymeister 0:46009d41b72b 146 // lcd.drawRect(0,0,66,30,0);
Honeymeister 0:46009d41b72b 147 // wait(0.1);
Honeymeister 0:46009d41b72b 148 // lcd.drawRect(0,0,62,26,0);
Honeymeister 0:46009d41b72b 149 // wait(0.1);
Honeymeister 0:46009d41b72b 150 // lcd.drawRect(0,0,58,22,0);
Honeymeister 0:46009d41b72b 151 // wait(0.1);
Honeymeister 0:46009d41b72b 152 // lcd.drawRect(0,0,54,18,0);
Honeymeister 0:46009d41b72b 153 // wait(0.1);
Honeymeister 0:46009d41b72b 154 // lcd.drawRect(0,0,50,14,0);
Honeymeister 0:46009d41b72b 155 // wait(0.1);
Honeymeister 0:46009d41b72b 156 // lcd.drawRect(0,0,46,10,0);
Honeymeister 0:46009d41b72b 157 // wait(0.1);
Honeymeister 0:46009d41b72b 158 // lcd.drawRect(0,0,42,6,0);
Honeymeister 0:46009d41b72b 159 // wait(0.1);
Honeymeister 0:46009d41b72b 160 // lcd.drawRect(0,0,38,2,0);
Honeymeister 0:46009d41b72b 161 // wait(0.1);
Honeymeister 0:46009d41b72b 162
Honeymeister 0:46009d41b72b 163
Honeymeister 0:46009d41b72b 164
Honeymeister 0:46009d41b72b 165 }
Honeymeister 0:46009d41b72b 166
Honeymeister 0:46009d41b72b 167
Honeymeister 0:46009d41b72b 168 void clearCells()
Honeymeister 0:46009d41b72b 169 {
Honeymeister 0:46009d41b72b 170 for (int i = 0; i < nx ; i++) {
Honeymeister 0:46009d41b72b 171 for (int j = 0; j < ny ; j++) {
Honeymeister 0:46009d41b72b 172 lcd.clearPixel(i,j);
Honeymeister 0:46009d41b72b 173
Honeymeister 0:46009d41b72b 174 }
Honeymeister 0:46009d41b72b 175 }
Honeymeister 0:46009d41b72b 176 lcd.refresh();
Honeymeister 0:46009d41b72b 177
Honeymeister 0:46009d41b72b 178 }
Honeymeister 0:46009d41b72b 179
Honeymeister 0:46009d41b72b 180
Honeymeister 0:46009d41b72b 181
Honeymeister 0:46009d41b72b 182 void snakeBody(char x, char y)
Honeymeister 0:46009d41b72b 183
Honeymeister 0:46009d41b72b 184 {
Honeymeister 0:46009d41b72b 185 lcd.setPixel(x,y);
Honeymeister 0:46009d41b72b 186 lcd.setPixel(x+1,y);
Honeymeister 0:46009d41b72b 187 lcd.setPixel(x+2,y);
Honeymeister 0:46009d41b72b 188 lcd.setPixel(x+3,y);
Honeymeister 0:46009d41b72b 189 lcd.setPixel(x+4,y);
Honeymeister 0:46009d41b72b 190 lcd.setPixel(x+5,y);
Honeymeister 0:46009d41b72b 191 lcd.setPixel(x+6,y);
Honeymeister 0:46009d41b72b 192 lcd.setPixel(x+7,y);
Honeymeister 0:46009d41b72b 193 lcd.setPixel(x+8,y);
Honeymeister 0:46009d41b72b 194 lcd.setPixel(x+9,y);
Honeymeister 0:46009d41b72b 195 lcd.setPixel(x+10,y);
Honeymeister 0:46009d41b72b 196 lcd.setPixel(x,y+1);
Honeymeister 0:46009d41b72b 197 lcd.setPixel(x+1,y+1);
Honeymeister 0:46009d41b72b 198 lcd.setPixel(x+2,y+1);
Honeymeister 0:46009d41b72b 199 lcd.setPixel(x+3,y+1);
Honeymeister 0:46009d41b72b 200 lcd.setPixel(x+4,y+1);
Honeymeister 0:46009d41b72b 201 lcd.setPixel(x+5,y+1);
Honeymeister 0:46009d41b72b 202 lcd.setPixel(x+6,y+1);
Honeymeister 0:46009d41b72b 203 lcd.setPixel(x+7,y+1);
Honeymeister 0:46009d41b72b 204 lcd.setPixel(x+8,y+1);
Honeymeister 0:46009d41b72b 205 lcd.setPixel(x+9,y+1);
Honeymeister 0:46009d41b72b 206 lcd.setPixel(x+10,y+1);
Honeymeister 0:46009d41b72b 207
Honeymeister 0:46009d41b72b 208
Honeymeister 0:46009d41b72b 209 lcd.refresh();
Honeymeister 0:46009d41b72b 210
Honeymeister 0:46009d41b72b 211 }
Honeymeister 0:46009d41b72b 212
Honeymeister 0:46009d41b72b 213 int Rand (int Min = 1, int Max = 83)
Honeymeister 0:46009d41b72b 214 {
Honeymeister 0:46009d41b72b 215 static bool First = true;
Honeymeister 0:46009d41b72b 216 if (First) srand (time (NULL)), First = false;
Honeymeister 0:46009d41b72b 217 while (7)
Honeymeister 0:46009d41b72b 218 {
Honeymeister 0:46009d41b72b 219 int S = rand () % (Max - Min + 1) + Min;
Honeymeister 0:46009d41b72b 220 if (!((S - 1) % 3)) return S;
Honeymeister 0:46009d41b72b 221 }
Honeymeister 0:46009d41b72b 222 }
Honeymeister 0:46009d41b72b 223
Honeymeister 0:46009d41b72b 224 void Wall ()
Honeymeister 0:46009d41b72b 225
Honeymeister 0:46009d41b72b 226 {
Honeymeister 0:46009d41b72b 227
Honeymeister 0:46009d41b72b 228 lcd.drawRect(0,0,82,46,0);
Honeymeister 0:46009d41b72b 229 lcd.drawRect(1,1,80,44,0);
Honeymeister 0:46009d41b72b 230
Honeymeister 0:46009d41b72b 231 }
Honeymeister 0:46009d41b72b 232
Honeymeister 0:46009d41b72b 233