Dependencies:   mbed

Committer:
sdlashmar
Date:
Sun May 24 15:37:19 2020 +0000
Revision:
15:3a65925ac561
Parent:
12:cb3a81adf48b
Final Submission. I have read and agreed with Statement of Academic Integrity

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:b7f1f47bb26a 1 /*
eencae 0:b7f1f47bb26a 2 ELEC2645 Embedded Systems Project
eencae 0:b7f1f47bb26a 3 School of Electronic & Electrical Engineering
eencae 0:b7f1f47bb26a 4 University of Leeds
eencae 0:b7f1f47bb26a 5 2019/20
eencae 0:b7f1f47bb26a 6
sdlashmar 1:5aba5e5a748b 7 Name:Samuel Lashmar
sdlashmar 1:5aba5e5a748b 8 Username:el17sdl
sdlashmar 1:5aba5e5a748b 9 Student ID Number:201170334
sdlashmar 1:5aba5e5a748b 10 Date:04/03/20
eencae 0:b7f1f47bb26a 11 */
eencae 0:b7f1f47bb26a 12
eencae 0:b7f1f47bb26a 13 // includes
eencae 0:b7f1f47bb26a 14 #include "mbed.h"
eencae 0:b7f1f47bb26a 15 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 16 #include "N5110.h"
sdlashmar 5:256e5e0b6cd7 17 #include "SnakeHead.h"
sdlashmar 5:256e5e0b6cd7 18 #include "SnakeTail.h"
sdlashmar 8:1e4182ebb063 19 #include "GameEngine.h"
eencae 0:b7f1f47bb26a 20
sdlashmar 4:c5addc5475d3 21
eencae 0:b7f1f47bb26a 22 // objects
eencae 0:b7f1f47bb26a 23 Gamepad pad;
eencae 0:b7f1f47bb26a 24 N5110 lcd;
sdlashmar 5:256e5e0b6cd7 25 SnakeHead head;
sdlashmar 5:256e5e0b6cd7 26 SnakeTail tail;
sdlashmar 8:1e4182ebb063 27 GameEngine engine;
sdlashmar 8:1e4182ebb063 28
sdlashmar 8:1e4182ebb063 29 //
sdlashmar 8:1e4182ebb063 30 #define HEAD_SIZE 1
sdlashmar 12:cb3a81adf48b 31 #define HEAD_SPEED 3
sdlashmar 10:3958fb08696d 32
sdlashmar 2:6792f99c3c0d 33
sdlashmar 2:6792f99c3c0d 34 void welcome();
sdlashmar 6:964cc4896627 35 void init();
sdlashmar 12:cb3a81adf48b 36 void render();
sdlashmar 2:6792f99c3c0d 37
eencae 0:b7f1f47bb26a 38
eencae 0:b7f1f47bb26a 39 int main()
eencae 0:b7f1f47bb26a 40 {
sdlashmar 12:cb3a81adf48b 41 //set frames per second
sdlashmar 12:cb3a81adf48b 42 int fps = 4;
sdlashmar 12:cb3a81adf48b 43 //initialise objects
sdlashmar 6:964cc4896627 44 init();
sdlashmar 12:cb3a81adf48b 45 //display simple start screen and wai for user to press start
sdlashmar 4:c5addc5475d3 46 welcome();
sdlashmar 12:cb3a81adf48b 47 //clear lcd and render first frame
sdlashmar 12:cb3a81adf48b 48 render();
sdlashmar 12:cb3a81adf48b 49 //while one loop so keep keeps running
sdlashmar 2:6792f99c3c0d 50 while(1) {
sdlashmar 12:cb3a81adf48b 51 /* Debugging print statements to ensure gamepad joystick was getting the correct direction
sdlashmar 4:c5addc5475d3 52 if (_d == N) {
sdlashmar 4:c5addc5475d3 53 printf("North\n");
sdlashmar 4:c5addc5475d3 54 } else if (_d == NE) {
sdlashmar 4:c5addc5475d3 55 printf("North East\n");
sdlashmar 4:c5addc5475d3 56 } else if (_d == E) {
sdlashmar 4:c5addc5475d3 57 printf("East\n");
sdlashmar 4:c5addc5475d3 58 } else if (_d == SE) {
sdlashmar 4:c5addc5475d3 59 printf("South East\n");
sdlashmar 4:c5addc5475d3 60 } else if (_d == S) {
sdlashmar 4:c5addc5475d3 61 printf("South\n");
sdlashmar 4:c5addc5475d3 62 } else if (_d == SW) {
sdlashmar 4:c5addc5475d3 63 printf("South West\n");
sdlashmar 4:c5addc5475d3 64 } else if (_d == W) {
sdlashmar 4:c5addc5475d3 65 printf("West\n");
sdlashmar 4:c5addc5475d3 66 } else if (_d == NW) {
sdlashmar 4:c5addc5475d3 67 printf("North West\n");
sdlashmar 4:c5addc5475d3 68 } else {
sdlashmar 4:c5addc5475d3 69 printf("Centre\n");
sdlashmar 4:c5addc5475d3 70 };*/
sdlashmar 7:c67a5c6a874f 71 /*if (pad.A_pressed() == true) {
sdlashmar 6:964cc4896627 72 printf("start pressed\n");
sdlashmar 6:964cc4896627 73 } else if (pad.A_pressed() == false) {
sdlashmar 6:964cc4896627 74 printf("start not pressed\n");
sdlashmar 7:c67a5c6a874f 75 }*/
sdlashmar 8:1e4182ebb063 76
sdlashmar 8:1e4182ebb063 77 engine.read_input(pad);
sdlashmar 8:1e4182ebb063 78 engine.update(pad, lcd);
sdlashmar 12:cb3a81adf48b 79 render();
sdlashmar 12:cb3a81adf48b 80 wait(1.0f/fps);
sdlashmar 7:c67a5c6a874f 81
sdlashmar 2:6792f99c3c0d 82 }
eencae 0:b7f1f47bb26a 83 }
sdlashmar 2:6792f99c3c0d 84 void welcome() {
sdlashmar 12:cb3a81adf48b 85 //print simple display message
sdlashmar 12:cb3a81adf48b 86 lcd.printString(" SNAKE! ",0,1);
sdlashmar 12:cb3a81adf48b 87 lcd.printString(" Press Start ", 0, 3);
sdlashmar 2:6792f99c3c0d 88 lcd.refresh();
sdlashmar 6:964cc4896627 89
sdlashmar 12:cb3a81adf48b 90 //wait flashing LEDs until start button is pressed
sdlashmar 12:cb3a81adf48b 91 while ( pad.start_held() == false) {
sdlashmar 6:964cc4896627 92 lcd.setContrast( pad.read_pot1());
sdlashmar 6:964cc4896627 93 pad.leds_on();
sdlashmar 6:964cc4896627 94 wait(0.1);
sdlashmar 6:964cc4896627 95 pad.leds_off();
sdlashmar 6:964cc4896627 96 wait(0.1);
sdlashmar 12:cb3a81adf48b 97 }
sdlashmar 6:964cc4896627 98
sdlashmar 2:6792f99c3c0d 99 }
sdlashmar 12:cb3a81adf48b 100 //function to initialise all objects
sdlashmar 6:964cc4896627 101 void init() {
sdlashmar 6:964cc4896627 102
sdlashmar 6:964cc4896627 103 lcd.init();
sdlashmar 6:964cc4896627 104 pad.init();
sdlashmar 12:cb3a81adf48b 105 engine.init(HEAD_SIZE, HEAD_SPEED);
sdlashmar 12:cb3a81adf48b 106 }
sdlashmar 12:cb3a81adf48b 107 //function to render the image in screen
sdlashmar 12:cb3a81adf48b 108 void render()
sdlashmar 12:cb3a81adf48b 109 {
sdlashmar 12:cb3a81adf48b 110 lcd.clear();
sdlashmar 12:cb3a81adf48b 111 engine.draw(lcd);
sdlashmar 12:cb3a81adf48b 112 lcd.refresh();
sdlashmar 6:964cc4896627 113 }
sdlashmar 6:964cc4896627 114