Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
engine/main.cpp@3:124a5eb55c77, 2018-05-01 (annotated)
- Committer:
- el16a2t
- Date:
- Tue May 01 09:06:51 2018 +0000
- Revision:
- 3:124a5eb55c77
- Parent:
- 2:a48df109588e
- Child:
- 4:a6ca44e29e97
minor screen contrast adjustment. some comments made;
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:a48df109588e | 60 | //set initial location conditions for the player and car 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 | 2:a48df109588e | 69 | |
el16a2t | 2:a48df109588e | 70 | //set score |
el16a2t | 2:a48df109588e | 71 | score = 0; |
el16a2t | 2:a48df109588e | 72 | |
el16a2t | 2:a48df109588e | 73 | |
el16a2t | 2:a48df109588e | 74 | |
el16a2t | 2:a48df109588e | 75 | |
el16a2t | 2:a48df109588e | 76 | |
el16a2t | 2:a48df109588e | 77 | |
el16a2t | 2:a48df109588e | 78 | //main while loop |
el16a2t | 1:a3c9025e0dad | 79 | while (1) { |
el16a2t | 1:a3c9025e0dad | 80 | |
el16a2t | 1:a3c9025e0dad | 81 | lcd.clear(); |
el16a2t | 1:a3c9025e0dad | 82 | |
el16a2t | 1:a3c9025e0dad | 83 | |
el16a2t | 1:a3c9025e0dad | 84 | //print the player sprite |
el16a2t | 1:a3c9025e0dad | 85 | lcd.drawSprite(x_player,y_player,20,15,(int*) player); |
el16a2t | 2:a48df109588e | 86 | //if X pressed, move player left, if B pressed, move player right |
el16a2t | 2:a48df109588e | 87 | if ( pad.check_event(Gamepad::X_PRESSED) == true) { |
el16a2t | 1:a3c9025e0dad | 88 | |
el16a2t | 1:a3c9025e0dad | 89 | x_player = x_player-20; |
el16a2t | 1:a3c9025e0dad | 90 | } |
el16a2t | 3:124a5eb55c77 | 91 | //car cannot go further left than the left lane etc |
el16a2t | 1:a3c9025e0dad | 92 | if (x_player <4) { |
el16a2t | 1:a3c9025e0dad | 93 | x_player = 4; |
el16a2t | 1:a3c9025e0dad | 94 | } |
el16a2t | 2:a48df109588e | 95 | if ( pad.check_event(Gamepad::B_PRESSED) == true) { |
el16a2t | 1:a3c9025e0dad | 96 | |
el16a2t | 1:a3c9025e0dad | 97 | x_player = x_player+20; |
el16a2t | 1:a3c9025e0dad | 98 | } |
el16a2t | 1:a3c9025e0dad | 99 | if (x_player >44) { |
el16a2t | 1:a3c9025e0dad | 100 | x_player = 44; |
el16a2t | 1:a3c9025e0dad | 101 | } |
el16a2t | 1:a3c9025e0dad | 102 | |
el16a2t | 1:a3c9025e0dad | 103 | //print road lines |
el16a2t | 1:a3c9025e0dad | 104 | lcd.drawRect(1,1,1,1500,FILL_BLACK); |
el16a2t | 1:a3c9025e0dad | 105 | |
el16a2t | 1:a3c9025e0dad | 106 | lcd.drawRect(21,1,1,1500,FILL_BLACK); |
el16a2t | 1:a3c9025e0dad | 107 | |
el16a2t | 1:a3c9025e0dad | 108 | lcd.drawRect(41,1,1,1500,FILL_BLACK); |
el16a2t | 1:a3c9025e0dad | 109 | |
el16a2t | 1:a3c9025e0dad | 110 | lcd.drawRect(61,1,1,1500,FILL_BLACK); |
el16a2t | 2:a48df109588e | 111 | |
el16a2t | 2:a48df109588e | 112 | |
el16a2t | 2:a48df109588e | 113 | |
el16a2t | 2:a48df109588e | 114 | |
el16a2t | 2:a48df109588e | 115 | //cars move down the road |
el16a2t | 2:a48df109588e | 116 | |
el16a2t | 2:a48df109588e | 117 | lcd.drawSprite(x_car,y_car,20,15,(int*) car); |
el16a2t | 2:a48df109588e | 118 | y_car++; |
el16a2t | 1:a3c9025e0dad | 119 | |
el16a2t | 2:a48df109588e | 120 | //display score |
el16a2t | 2:a48df109588e | 121 | score++; |
el16a2t | 1:a3c9025e0dad | 122 | |
el16a2t | 2:a48df109588e | 123 | // difficulty = read_pot(); |
el16a2t | 2:a48df109588e | 124 | sprintf (str, "%d", score); |
el16a2t | 2:a48df109588e | 125 | lcd.printString(str,64,1); |
el16a2t | 2:a48df109588e | 126 | |
el16a2t | 2:a48df109588e | 127 | |
el16a2t | 2:a48df109588e | 128 | |
el16a2t | 2:a48df109588e | 129 | |
el16a2t | 2:a48df109588e | 130 | |
el16a2t | 2:a48df109588e | 131 | |
el16a2t | 1:a3c9025e0dad | 132 | |
el16a2t | 1:a3c9025e0dad | 133 | |
el16a2t | 1:a3c9025e0dad | 134 | |
el16a2t | 1:a3c9025e0dad | 135 | lcd.refresh(); |
el16a2t | 2:a48df109588e | 136 | wait(0.1); |
el16a2t | 1:a3c9025e0dad | 137 | |
el16a2t | 1:a3c9025e0dad | 138 | |
el16a2t | 1:a3c9025e0dad | 139 | |
el16a2t | 1:a3c9025e0dad | 140 | |
el16a2t | 1:a3c9025e0dad | 141 | |
el16a2t | 1:a3c9025e0dad | 142 | |
el16a2t | 1:a3c9025e0dad | 143 | |
el16a2t | 1:a3c9025e0dad | 144 | } |
el16a2t | 1:a3c9025e0dad | 145 | |
el16a2t | 2:a48df109588e | 146 | } |
el16a2t | 1:a3c9025e0dad | 147 | |
el16a2t | 1:a3c9025e0dad | 148 | |
el16a2t | 1:a3c9025e0dad | 149 |