ELEC2645 (2017/18) / Mbed 2 deprecated el16a2t

Dependencies:   mbed

Committer:
el16a2t
Date:
Tue May 01 10:03:55 2018 +0000
Revision:
4:a6ca44e29e97
Parent:
3:124a5eb55c77
Child:
5:cd63b0b896aa
added a second car sprite, so 2 cars to dodge can be on the screen at the same time. added hard-coded condition that when one reaches a set y value, the other spawns (to be changed). cant compile at the mom so may be some errors that need addressing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el16a2t 1:a3c9025e0dad 1 /*
el16a2t 1:a3c9025e0dad 2 ELEC2645 Embedded Systems Project
el16a2t 1:a3c9025e0dad 3 School of Electronic & Electrical Engineering
el16a2t 1:a3c9025e0dad 4 University of Leeds
el16a2t 1:a3c9025e0dad 5 Name: Adam Thompson
el16a2t 1:a3c9025e0dad 6 Username: el16a2t
el16a2t 1:a3c9025e0dad 7 Student ID Number: 201047832
el16a2t 1:a3c9025e0dad 8 Date: 17/4/18
el16a2t 1:a3c9025e0dad 9 */
el16a2t 1:a3c9025e0dad 10 #include "mbed.h"
el16a2t 1:a3c9025e0dad 11 #include "Gamepad.h"
el16a2t 1:a3c9025e0dad 12 #include "N5110.h"
el16a2t 1:a3c9025e0dad 13 #include "sprites.h"
el16a2t 1:a3c9025e0dad 14 #include "main.h"
el16a2t 1:a3c9025e0dad 15
el16a2t 1:a3c9025e0dad 16
el16a2t 1:a3c9025e0dad 17 N5110 lcd(PTC9, PTC0, PTC7, PTD2, PTD1, PTC11);
el16a2t 1:a3c9025e0dad 18 Gamepad pad;
el16a2t 1:a3c9025e0dad 19
el16a2t 2:a48df109588e 20 void init();
el16a2t 2:a48df109588e 21 void startUp();
el16a2t 2:a48df109588e 22 void newGame();
el16a2t 2:a48df109588e 23 void gameOver();
el16a2t 1:a3c9025e0dad 24
el16a2t 1:a3c9025e0dad 25
el16a2t 1:a3c9025e0dad 26 int main()
el16a2t 2:a48df109588e 27 {
el16a2t 1:a3c9025e0dad 28
el16a2t 2:a48df109588e 29 init();
el16a2t 2:a48df109588e 30 startUp();
el16a2t 2:a48df109588e 31 newGame();
el16a2t 2:a48df109588e 32 gameOver();
el16a2t 2:a48df109588e 33 }
el16a2t 1:a3c9025e0dad 34
el16a2t 2:a48df109588e 35 void init()
el16a2t 1:a3c9025e0dad 36 {
el16a2t 1:a3c9025e0dad 37
el16a2t 1:a3c9025e0dad 38 // initialise the lcd and gamepad
el16a2t 1:a3c9025e0dad 39 lcd.init();
el16a2t 3:124a5eb55c77 40 lcd.setContrast(0.4);
el16a2t 1:a3c9025e0dad 41 pad.init ();
el16a2t 2:a48df109588e 42 }
el16a2t 1:a3c9025e0dad 43
el16a2t 2:a48df109588e 44
el16a2t 2:a48df109588e 45 void startUp()
el16a2t 2:a48df109588e 46 {
el16a2t 2:a48df109588e 47 //print start screen
el16a2t 2:a48df109588e 48 lcd.drawSprite (1,1,8,20,(int*) titlescreen);
el16a2t 2:a48df109588e 49 lcd.printString ("PRESS START", 3,1);
el16a2t 2:a48df109588e 50 lcd.refresh();
el16a2t 2:a48df109588e 51 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
el16a2t 2:a48df109588e 52
el16a2t 2:a48df109588e 53 }
el16a2t 2:a48df109588e 54 }
el16a2t 2:a48df109588e 55
el16a2t 2:a48df109588e 56 void newGame()
el16a2t 2:a48df109588e 57 {
el16a2t 2:a48df109588e 58
el16a2t 2:a48df109588e 59
el16a2t 4:a6ca44e29e97 60 //set initial location conditions for the player and car(s) and score
el16a2t 1:a3c9025e0dad 61 x_player = 24;
el16a2t 1:a3c9025e0dad 62 y_player = 29;
el16a2t 1:a3c9025e0dad 63
el16a2t 2:a48df109588e 64 const int arrayNum[3] = {'4', '24', '44'};
el16a2t 2:a48df109588e 65 int RandIndex = rand() % 3;
el16a2t 2:a48df109588e 66
el16a2t 3:124a5eb55c77 67 x_car = arrayNum[RandIndex];
el16a2t 2:a48df109588e 68 y_car = 0;
el16a2t 4:a6ca44e29e97 69
el16a2t 4:a6ca44e29e97 70
el16a2t 2:a48df109588e 71
el16a2t 2:a48df109588e 72 //set score
el16a2t 2:a48df109588e 73 score = 0;
el16a2t 2:a48df109588e 74
el16a2t 2:a48df109588e 75
el16a2t 2:a48df109588e 76
el16a2t 2:a48df109588e 77
el16a2t 2:a48df109588e 78
el16a2t 2:a48df109588e 79
el16a2t 2:a48df109588e 80 //main while loop
el16a2t 1:a3c9025e0dad 81 while (1) {
el16a2t 1:a3c9025e0dad 82
el16a2t 1:a3c9025e0dad 83 lcd.clear();
el16a2t 1:a3c9025e0dad 84
el16a2t 1:a3c9025e0dad 85
el16a2t 1:a3c9025e0dad 86 //print the player sprite
el16a2t 1:a3c9025e0dad 87 lcd.drawSprite(x_player,y_player,20,15,(int*) player);
el16a2t 2:a48df109588e 88 //if X pressed, move player left, if B pressed, move player right
el16a2t 2:a48df109588e 89 if ( pad.check_event(Gamepad::X_PRESSED) == true) {
el16a2t 1:a3c9025e0dad 90
el16a2t 1:a3c9025e0dad 91 x_player = x_player-20;
el16a2t 1:a3c9025e0dad 92 }
el16a2t 3:124a5eb55c77 93 //car cannot go further left than the left lane etc
el16a2t 1:a3c9025e0dad 94 if (x_player <4) {
el16a2t 1:a3c9025e0dad 95 x_player = 4;
el16a2t 1:a3c9025e0dad 96 }
el16a2t 2:a48df109588e 97 if ( pad.check_event(Gamepad::B_PRESSED) == true) {
el16a2t 1:a3c9025e0dad 98
el16a2t 1:a3c9025e0dad 99 x_player = x_player+20;
el16a2t 1:a3c9025e0dad 100 }
el16a2t 1:a3c9025e0dad 101 if (x_player >44) {
el16a2t 1:a3c9025e0dad 102 x_player = 44;
el16a2t 1:a3c9025e0dad 103 }
el16a2t 1:a3c9025e0dad 104
el16a2t 1:a3c9025e0dad 105 //print road lines
el16a2t 1:a3c9025e0dad 106 lcd.drawRect(1,1,1,1500,FILL_BLACK);
el16a2t 1:a3c9025e0dad 107
el16a2t 1:a3c9025e0dad 108 lcd.drawRect(21,1,1,1500,FILL_BLACK);
el16a2t 1:a3c9025e0dad 109
el16a2t 1:a3c9025e0dad 110 lcd.drawRect(41,1,1,1500,FILL_BLACK);
el16a2t 1:a3c9025e0dad 111
el16a2t 1:a3c9025e0dad 112 lcd.drawRect(61,1,1,1500,FILL_BLACK);
el16a2t 2:a48df109588e 113
el16a2t 2:a48df109588e 114
el16a2t 2:a48df109588e 115
el16a2t 2:a48df109588e 116
el16a2t 2:a48df109588e 117 //cars move down the road
el16a2t 2:a48df109588e 118
el16a2t 2:a48df109588e 119 lcd.drawSprite(x_car,y_car,20,15,(int*) car);
el16a2t 2:a48df109588e 120 y_car++;
el16a2t 4:a6ca44e29e97 121 lcd.drawSprite(x_car2,y_car2,20,15,(int*) car2);
el16a2t 4:a6ca44e29e97 122 y_car2++;
el16a2t 4:a6ca44e29e97 123
el16a2t 4:a6ca44e29e97 124 // re-generate cars continously
el16a2t 4:a6ca44e29e97 125
el16a2t 4:a6ca44e29e97 126 if (y_car = 20){
el16a2t 4:a6ca44e29e97 127 x_car2 = arrayNum[RandIndex];
el16a2t 4:a6ca44e29e97 128 y_car2 = -17;
el16a2t 4:a6ca44e29e97 129
el16a2t 4:a6ca44e29e97 130
el16a2t 4:a6ca44e29e97 131 }
el16a2t 4:a6ca44e29e97 132
el16a2t 4:a6ca44e29e97 133 if (y_car2 = 20){
el16a2t 4:a6ca44e29e97 134 x_car = arrayNum[RandIndex];
el16a2t 4:a6ca44e29e97 135 y_car = -17;
el16a2t 4:a6ca44e29e97 136
el16a2t 4:a6ca44e29e97 137
el16a2t 4:a6ca44e29e97 138 }
el16a2t 1:a3c9025e0dad 139
el16a2t 4:a6ca44e29e97 140 //display score
el16a2t 2:a48df109588e 141 score++;
el16a2t 1:a3c9025e0dad 142
el16a2t 2:a48df109588e 143 // difficulty = read_pot();
el16a2t 2:a48df109588e 144 sprintf (str, "%d", score);
el16a2t 2:a48df109588e 145 lcd.printString(str,64,1);
el16a2t 4:a6ca44e29e97 146
el16a2t 4:a6ca44e29e97 147
el16a2t 4:a6ca44e29e97 148 //if there is a collision, display "game over" screen
el16a2t 4:a6ca44e29e97 149 if (x_car = x_player && y_car = 12){
el16a2t 4:a6ca44e29e97 150 printf("collision");
el16a2t 4:a6ca44e29e97 151 y_car = 12;
el16a2t 4:a6ca44e29e97 152 score=score;
el16a2t 4:a6ca44e29e97 153 wait(0.5);
el16a2t 4:a6ca44e29e97 154 gameOver();
el16a2t 4:a6ca44e29e97 155
el16a2t 4:a6ca44e29e97 156 }
el16a2t 2:a48df109588e 157
el16a2t 2:a48df109588e 158
el16a2t 2:a48df109588e 159
el16a2t 2:a48df109588e 160
el16a2t 2:a48df109588e 161
el16a2t 1:a3c9025e0dad 162
el16a2t 1:a3c9025e0dad 163
el16a2t 1:a3c9025e0dad 164
el16a2t 1:a3c9025e0dad 165 lcd.refresh();
el16a2t 2:a48df109588e 166 wait(0.1);
el16a2t 1:a3c9025e0dad 167
el16a2t 1:a3c9025e0dad 168
el16a2t 1:a3c9025e0dad 169
el16a2t 1:a3c9025e0dad 170
el16a2t 1:a3c9025e0dad 171
el16a2t 1:a3c9025e0dad 172
el16a2t 1:a3c9025e0dad 173
el16a2t 1:a3c9025e0dad 174 }
el16a2t 4:a6ca44e29e97 175
el16a2t 4:a6ca44e29e97 176
el16a2t 2:a48df109588e 177 }
el16a2t 1:a3c9025e0dad 178
el16a2t 4:a6ca44e29e97 179 void gameOver(){
el16a2t 1:a3c9025e0dad 180
el16a2t 4:a6ca44e29e97 181 lcd.clear();
el16a2t 4:a6ca44e29e97 182 lcd.printString(str,64,1);
el16a2t 4:a6ca44e29e97 183 lcd.printString ("GAME OVER", 3,1);
el16a2t 4:a6ca44e29e97 184 lcd.printString ("PRESS START TO TRY AGAIN ", 3,10);
el16a2t 4:a6ca44e29e97 185
el16a2t 4:a6ca44e29e97 186 if ( pad.check_event(Gamepad::START_PRESSED) == true) {
el16a2t 4:a6ca44e29e97 187
el16a2t 4:a6ca44e29e97 188 newGame();
el16a2t 4:a6ca44e29e97 189
el16a2t 4:a6ca44e29e97 190 }