submit

Dependencies:   mbed Gamepad N5110

Committer:
694617778
Date:
Sat Apr 20 08:15:10 2019 +0000
Revision:
9:18b059e5abb9
Parent:
8:b6ddc8e10da6
Child:
10:68076e3dcc33
ffffffffffffffff

Who changed what in which revision?

UserRevisionLine numberNew contents of line
694617778 0:b67614a0c4cf 1 ///////// pre-processor directives ////////
694617778 0:b67614a0c4cf 2 #include "mbed.h"
694617778 0:b67614a0c4cf 3 #include "Gamepad.h"
694617778 0:b67614a0c4cf 4 #include "N5110.h"
694617778 1:b49c36604125 5 #include "snake.h"
694617778 1:b49c36604125 6 #include "Engine.h"
694617778 0:b67614a0c4cf 7
694617778 0:b67614a0c4cf 8 /////////////// objects ///////////////
694617778 0:b67614a0c4cf 9 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
694617778 0:b67614a0c4cf 10 Gamepad pad;
694617778 1:b49c36604125 11 snake snake;
694617778 1:b49c36604125 12 Engine engine;
694617778 0:b67614a0c4cf 13
694617778 0:b67614a0c4cf 14 ///////////// prototypes ///////////////
694617778 0:b67614a0c4cf 15 void init();
694617778 0:b67614a0c4cf 16 void run();
694617778 4:323f42022d87 17 void over();
694617778 0:b67614a0c4cf 18 ///////////// functions ////////////////
694617778 0:b67614a0c4cf 19 int main()
694617778 0:b67614a0c4cf 20 {
694617778 6:feb6351e6f8e 21
694617778 0:b67614a0c4cf 22 int fps = 8; // frames per second
694617778 9:18b059e5abb9 23 while(1){
694617778 9:18b059e5abb9 24 init();
694617778 9:18b059e5abb9 25 engine.welcome(pad,lcd); // show welcome display, waiting for the user to start
694617778 9:18b059e5abb9 26 engine.select(pad,lcd); // show the select display, waiting for the user to select
694617778 4:323f42022d87 27 // game loop - read input, update the game state and render the display
694617778 9:18b059e5abb9 28 while (snake.over == 0) {
694617778 9:18b059e5abb9 29 run(); // run the game
694617778 9:18b059e5abb9 30 wait(engine.p/fps); // and wait for one frame period
694617778 9:18b059e5abb9 31 }
694617778 9:18b059e5abb9 32 over(); // show gameover display, waiting for the user to restart
694617778 2:934daa65f73d 33 }
694617778 0:b67614a0c4cf 34 }
694617778 0:b67614a0c4cf 35
694617778 0:b67614a0c4cf 36 // this function draws each frame on the LCD
694617778 0:b67614a0c4cf 37 void run()
694617778 0:b67614a0c4cf 38 {
694617778 0:b67614a0c4cf 39 // clear screen, re-draw and refresh
694617778 0:b67614a0c4cf 40 lcd.clear();
694617778 1:b49c36604125 41 int length = snake.get_length();
694617778 6:feb6351e6f8e 42 int direction = engine.get_direction(pad);
694617778 2:934daa65f73d 43 snake.check_eat(pad);
694617778 1:b49c36604125 44 snake.draw(lcd,length);
694617778 1:b49c36604125 45 snake.update(direction,length);
694617778 2:934daa65f73d 46 snake.check_over(lcd);
694617778 0:b67614a0c4cf 47 lcd.refresh();
694617778 0:b67614a0c4cf 48 }
694617778 0:b67614a0c4cf 49
694617778 0:b67614a0c4cf 50 // initialies all classes and libraries
694617778 0:b67614a0c4cf 51 void init()
694617778 0:b67614a0c4cf 52 {
694617778 0:b67614a0c4cf 53 // need to initialise LCD and Gamepad
694617778 0:b67614a0c4cf 54 lcd.init();
694617778 1:b49c36604125 55 pad.init();
694617778 2:934daa65f73d 56 snake.init(2,3);
694617778 6:feb6351e6f8e 57 engine.init();
694617778 6:feb6351e6f8e 58
694617778 0:b67614a0c4cf 59 }
694617778 0:b67614a0c4cf 60
694617778 4:323f42022d87 61 void over()
694617778 4:323f42022d87 62 {
694617778 9:18b059e5abb9 63 int s = snake.get_score(); // get teh scores to show at the gameover display
694617778 4:323f42022d87 64 engine.gameover(pad,lcd,s);
694617778 1:b49c36604125 65
694617778 4:323f42022d87 66 }