Owen Cavender 201159294

Dependencies:   mbed Gamepad2

Committer:
el17oc
Date:
Sat May 30 05:43:50 2020 +0000
Revision:
16:9500059ad5d8
Parent:
14:7fb3c93343b6
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17oc 1:897160a1a3ae 1
el17oc 1:897160a1a3ae 2 #ifndef SNAKE_H
el17oc 1:897160a1a3ae 3 #define SNAKE_H
el17oc 1:897160a1a3ae 4
el17oc 1:897160a1a3ae 5 #include "mbed.h"
el17oc 1:897160a1a3ae 6 #include "N5110.h"
el17oc 1:897160a1a3ae 7 #include "Gamepad.h"
el17oc 1:897160a1a3ae 8
el17oc 16:9500059ad5d8 9 /** Snake Class
el17oc 16:9500059ad5d8 10 * Owen Cavender, University of Leeds
el17oc 16:9500059ad5d8 11 */
el17oc 1:897160a1a3ae 12
el17oc 1:897160a1a3ae 13 class Snake
el17oc 1:897160a1a3ae 14 {
el17oc 1:897160a1a3ae 15
el17oc 1:897160a1a3ae 16
el17oc 1:897160a1a3ae 17 public:
el17oc 1:897160a1a3ae 18 Snake();
el17oc 16:9500059ad5d8 19 /** constructor
el17oc 16:9500059ad5d8 20 */
el17oc 1:897160a1a3ae 21 ~Snake();
el17oc 16:9500059ad5d8 22 /** deconstructor
el17oc 16:9500059ad5d8 23 */
el17oc 1:897160a1a3ae 24
el17oc 16:9500059ad5d8 25 enum Directions { /**enum of directions*/
el17oc 1:897160a1a3ae 26 up,
el17oc 1:897160a1a3ae 27 down,
el17oc 1:897160a1a3ae 28 left,
el17oc 1:897160a1a3ae 29 right,
el17oc 16:9500059ad5d8 30
el17oc 1:897160a1a3ae 31 };
el17oc 1:897160a1a3ae 32
el17oc 6:bf90044188d0 33 void init();
el17oc 16:9500059ad5d8 34 /** initialises 'Snake' class
el17oc 16:9500059ad5d8 35 */
el17oc 8:997f90c88246 36 void get_direction(Gamepad &pad);
el17oc 16:9500059ad5d8 37 /** reads input from gamepad
el17oc 16:9500059ad5d8 38 *updates direction
el17oc 16:9500059ad5d8 39 */
el17oc 16:9500059ad5d8 40 void render_clear_tail(N5110 &lcd);
el17oc 16:9500059ad5d8 41 /** clears pixel on the end of snake
el17oc 16:9500059ad5d8 42 *before everything else on the screen is updated and rendered
el17oc 16:9500059ad5d8 43 */
el17oc 8:997f90c88246 44 void move_snake();
el17oc 16:9500059ad5d8 45 /**alters the values assigned to the snake's body
el17oc 16:9500059ad5d8 46 *based on the _direction set in get_direction
el17oc 16:9500059ad5d8 47 */
el17oc 14:7fb3c93343b6 48 void apple_collected(N5110 &lcd, Gamepad &pad);
el17oc 16:9500059ad5d8 49 /** check to see if the apple x,y = snakehead x,y values
el17oc 16:9500059ad5d8 50 *increases score, triggers a true which causes generation of apple, updates counter
el17oc 16:9500059ad5d8 51 *Plays a tone and toggles LEDs
el17oc 16:9500059ad5d8 52 */
el17oc 14:7fb3c93343b6 53 void check_gameover(N5110 &lcd);
el17oc 16:9500059ad5d8 54 /**checks if game is over based on 3 conditions
el17oc 16:9500059ad5d8 55 */
el17oc 16:9500059ad5d8 56 void get_Apple_position(N5110 &lcd);
el17oc 16:9500059ad5d8 57 /**sets the apple position
el17oc 16:9500059ad5d8 58 *an update of position is triggered by bool _reset_apple
el17oc 16:9500059ad5d8 59 */
el17oc 16:9500059ad5d8 60 void render(N5110 &lcd, Gamepad &pad);
el17oc 16:9500059ad5d8 61 /**draws the snake, border, and apple during the game
el17oc 16:9500059ad5d8 62 * if it is game over, it displays the score and a gameo over message
el17oc 16:9500059ad5d8 63 */
el17oc 16:9500059ad5d8 64
el17oc 8:997f90c88246 65
el17oc 14:7fb3c93343b6 66
el17oc 8:997f90c88246 67 Vector2D get_Snakehead();
el17oc 16:9500059ad5d8 68 /**returns _x0, and _y0 values
el17oc 16:9500059ad5d8 69 */
el17oc 16:9500059ad5d8 70
el17oc 12:60c856354406 71 int get_countdown();
el17oc 16:9500059ad5d8 72 /**reurns counter value
el17oc 16:9500059ad5d8 73 */
el17oc 14:7fb3c93343b6 74 int get_score();
el17oc 16:9500059ad5d8 75 /**returns score;
el17oc 16:9500059ad5d8 76 */
el17oc 14:7fb3c93343b6 77
el17oc 14:7fb3c93343b6 78 private:
el17oc 1:897160a1a3ae 79
el17oc 1:897160a1a3ae 80
el17oc 14:7fb3c93343b6 81 bool get_gameover();
el17oc 16:9500059ad5d8 82 /** returns _gameover
el17oc 16:9500059ad5d8 83 *private as it is only used in Snake class
el17oc 16:9500059ad5d8 84 */
el17oc 14:7fb3c93343b6 85
el17oc 16:9500059ad5d8 86 /**Snake private variables*/
el17oc 16:9500059ad5d8 87 Directions _direction;
el17oc 12:60c856354406 88 int _countdown;
el17oc 1:897160a1a3ae 89 bool _gameover;
el17oc 1:897160a1a3ae 90 int _score;
el17oc 12:60c856354406 91 int _reset_apple;
el17oc 14:7fb3c93343b6 92
el17oc 16:9500059ad5d8 93 int _x0; /**snake position variable*/
el17oc 14:7fb3c93343b6 94 int _y0;
el17oc 6:bf90044188d0 95 int _x1;
el17oc 14:7fb3c93343b6 96 int _y1;
el17oc 6:bf90044188d0 97 int _x2;
el17oc 14:7fb3c93343b6 98 int _y2;
el17oc 6:bf90044188d0 99 int _x3;
el17oc 14:7fb3c93343b6 100 int _y3;
el17oc 12:60c856354406 101 int _x4;
el17oc 14:7fb3c93343b6 102 int _y4;
el17oc 12:60c856354406 103 int _x5;
el17oc 14:7fb3c93343b6 104 int _y5;
el17oc 14:7fb3c93343b6 105 int _x6;
el17oc 14:7fb3c93343b6 106 int _y6;
el17oc 14:7fb3c93343b6 107 int _x7;
el17oc 14:7fb3c93343b6 108 int _y7;
el17oc 6:bf90044188d0 109
el17oc 14:7fb3c93343b6 110
el17oc 16:9500059ad5d8 111 int _apx; /**apple position variable*/
el17oc 9:a69a6a06dddf 112 int _apy;
el17oc 14:7fb3c93343b6 113
el17oc 1:897160a1a3ae 114 };
el17oc 1:897160a1a3ae 115
el17oc 1:897160a1a3ae 116
el17oc 1:897160a1a3ae 117 #endif