Final Submission. I have read and agreed with Statement of Academic Integrity.
Dependencies: mbed Gamepad N5110 Joystick
main.cpp@8:264398d3c610, 2019-05-09 (annotated)
- Committer:
- el16dlc
- Date:
- Thu May 09 10:55:22 2019 +0000
- Revision:
- 8:264398d3c610
- Parent:
- 5:23a85b16ee54
- Child:
- 9:a7ea33e6bd82
9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el16dlc | 1:b9f3b7d869d8 | 1 | /* |
el16dlc | 1:b9f3b7d869d8 | 2 | ELEC2645 Embedded Systems Project |
el16dlc | 1:b9f3b7d869d8 | 3 | School of Electronic & Electrical Engineering |
el16dlc | 1:b9f3b7d869d8 | 4 | University of Leeds |
el16dlc | 1:b9f3b7d869d8 | 5 | |
el16dlc | 1:b9f3b7d869d8 | 6 | Name: DANIEL CROCKFORD |
el16dlc | 1:b9f3b7d869d8 | 7 | Username: el16dlc |
el16dlc | 1:b9f3b7d869d8 | 8 | Student ID Number: 201039580 |
el16dlc | 1:b9f3b7d869d8 | 9 | Date: 07/05/2019 |
el16dlc | 1:b9f3b7d869d8 | 10 | */ |
el16dlc | 1:b9f3b7d869d8 | 11 | |
el16dlc | 1:b9f3b7d869d8 | 12 | |
el16dlc | 1:b9f3b7d869d8 | 13 | #include "main.h" |
el16dlc | 1:b9f3b7d869d8 | 14 | #include "Snake.h" |
el16dlc | 1:b9f3b7d869d8 | 15 | #include "Game_engine.h" |
el16dlc | 1:b9f3b7d869d8 | 16 | |
el16dlc | 1:b9f3b7d869d8 | 17 | // Gamepad Peripherals |
el16dlc | 1:b9f3b7d869d8 | 18 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
el16dlc | 1:b9f3b7d869d8 | 19 | |
el16dlc | 1:b9f3b7d869d8 | 20 | Gamepad gamepad; |
el16dlc | 1:b9f3b7d869d8 | 21 | |
el16dlc | 1:b9f3b7d869d8 | 22 | // Instances |
el16dlc | 1:b9f3b7d869d8 | 23 | GameEngine engine; |
el16dlc | 1:b9f3b7d869d8 | 24 | |
el16dlc | 5:23a85b16ee54 | 25 | bool game_cont = false; |
el16dlc | 8:264398d3c610 | 26 | float speed = 0.0; |
el16dlc | 5:23a85b16ee54 | 27 | |
el16dlc | 3:660de4311976 | 28 | |
el16dlc | 1:b9f3b7d869d8 | 29 | int main() { |
el16dlc | 1:b9f3b7d869d8 | 30 | Init(); |
el16dlc | 1:b9f3b7d869d8 | 31 | Welcome(); |
el16dlc | 8:264398d3c610 | 32 | while(1) { |
el16dlc | 8:264398d3c610 | 33 | engine.direction_reset(); |
el16dlc | 8:264398d3c610 | 34 | Menu(); |
el16dlc | 8:264398d3c610 | 35 | engine.init(); |
el16dlc | 1:b9f3b7d869d8 | 36 | |
el16dlc | 8:264398d3c610 | 37 | while(engine.get_game_cont() == true) { |
el16dlc | 8:264398d3c610 | 38 | render(); |
el16dlc | 8:264398d3c610 | 39 | update(); |
el16dlc | 8:264398d3c610 | 40 | } |
el16dlc | 8:264398d3c610 | 41 | lcd.clear(); |
el16dlc | 8:264398d3c610 | 42 | lcd.printString("You Lose",0,0); |
el16dlc | 8:264398d3c610 | 43 | lcd.refresh(); |
el16dlc | 8:264398d3c610 | 44 | wait(2.0); |
el16dlc | 1:b9f3b7d869d8 | 45 | } |
el16dlc | 1:b9f3b7d869d8 | 46 | } |
el16dlc | 1:b9f3b7d869d8 | 47 | |
el16dlc | 1:b9f3b7d869d8 | 48 | |
el16dlc | 1:b9f3b7d869d8 | 49 | // Initialise gamepad |
el16dlc | 1:b9f3b7d869d8 | 50 | void Init() { |
el16dlc | 1:b9f3b7d869d8 | 51 | lcd.init(); |
el16dlc | 1:b9f3b7d869d8 | 52 | gamepad.init(); |
el16dlc | 1:b9f3b7d869d8 | 53 | lcd.setContrast(0.5); |
el16dlc | 1:b9f3b7d869d8 | 54 | lcd.setBrightness(0.5); |
el16dlc | 1:b9f3b7d869d8 | 55 | gamepad.leds_off(); |
el16dlc | 1:b9f3b7d869d8 | 56 | gamepad.check_event(Gamepad::A_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 57 | gamepad.check_event(Gamepad::B_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 58 | gamepad.check_event(Gamepad::X_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 59 | gamepad.check_event(Gamepad::Y_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 60 | gamepad.check_event(Gamepad::L_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 61 | gamepad.check_event(Gamepad::R_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 62 | gamepad.check_event(Gamepad::BACK_PRESSED); |
el16dlc | 5:23a85b16ee54 | 63 | gamepad.check_event(Gamepad::START_PRESSED); |
el16dlc | 1:b9f3b7d869d8 | 64 | } |
el16dlc | 1:b9f3b7d869d8 | 65 | |
el16dlc | 1:b9f3b7d869d8 | 66 | // Prototype welcome screen |
el16dlc | 1:b9f3b7d869d8 | 67 | void Welcome() { |
el16dlc | 1:b9f3b7d869d8 | 68 | lcd.clear(); |
el16dlc | 1:b9f3b7d869d8 | 69 | lcd.printString("Welcome",2,1); |
el16dlc | 1:b9f3b7d869d8 | 70 | lcd.refresh(); |
el16dlc | 1:b9f3b7d869d8 | 71 | wait(2.0); |
el16dlc | 1:b9f3b7d869d8 | 72 | } |
el16dlc | 1:b9f3b7d869d8 | 73 | |
el16dlc | 8:264398d3c610 | 74 | // Protoype menu |
el16dlc | 8:264398d3c610 | 75 | void Menu() { |
el16dlc | 8:264398d3c610 | 76 | //engine.get_dir(gamepad); |
el16dlc | 8:264398d3c610 | 77 | int game_speed = 0; |
el16dlc | 8:264398d3c610 | 78 | lcd.clear(); |
el16dlc | 8:264398d3c610 | 79 | lcd.printString("Select speed",0,0); |
el16dlc | 8:264398d3c610 | 80 | lcd.printString("Slowest: X",0,2); |
el16dlc | 8:264398d3c610 | 81 | lcd.printString("Fastest: B",0,3); |
el16dlc | 8:264398d3c610 | 82 | lcd.refresh(); |
el16dlc | 8:264398d3c610 | 83 | |
el16dlc | 8:264398d3c610 | 84 | while(game_speed == 0) { |
el16dlc | 8:264398d3c610 | 85 | engine.get_dir(gamepad); |
el16dlc | 8:264398d3c610 | 86 | if (engine.get_direction() == 2) { |
el16dlc | 8:264398d3c610 | 87 | game_speed = 1; |
el16dlc | 8:264398d3c610 | 88 | } else if (engine.get_direction() == 3) { |
el16dlc | 8:264398d3c610 | 89 | game_speed = 2; |
el16dlc | 8:264398d3c610 | 90 | } |
el16dlc | 8:264398d3c610 | 91 | } |
el16dlc | 8:264398d3c610 | 92 | |
el16dlc | 8:264398d3c610 | 93 | if (game_speed == 1) { |
el16dlc | 8:264398d3c610 | 94 | speed = 0.5; |
el16dlc | 8:264398d3c610 | 95 | } else if (game_speed == 2) { |
el16dlc | 8:264398d3c610 | 96 | speed = 0.2; |
el16dlc | 8:264398d3c610 | 97 | } |
el16dlc | 8:264398d3c610 | 98 | } |
el16dlc | 8:264398d3c610 | 99 | |
el16dlc | 1:b9f3b7d869d8 | 100 | // Draws each frame on screen |
el16dlc | 1:b9f3b7d869d8 | 101 | void render() { |
el16dlc | 1:b9f3b7d869d8 | 102 | lcd.clear(); |
el16dlc | 2:0bd6711eae26 | 103 | engine.draw(lcd); |
el16dlc | 1:b9f3b7d869d8 | 104 | lcd.refresh(); |
el16dlc | 4:0fc3441556e1 | 105 | } |
el16dlc | 4:0fc3441556e1 | 106 | void update() { |
el16dlc | 5:23a85b16ee54 | 107 | engine.check_wall_collision(); |
el16dlc | 5:23a85b16ee54 | 108 | engine.check_snake_collision(); |
el16dlc | 4:0fc3441556e1 | 109 | engine.get_dir(gamepad); |
el16dlc | 4:0fc3441556e1 | 110 | engine.snake_move(); |
el16dlc | 4:0fc3441556e1 | 111 | engine.food_move(); |
el16dlc | 4:0fc3441556e1 | 112 | engine.snake_body(lcd); |
el16dlc | 4:0fc3441556e1 | 113 | lcd.refresh(); |
el16dlc | 8:264398d3c610 | 114 | wait(speed); |
el16dlc | 1:b9f3b7d869d8 | 115 | } |