Code for simple game of snake with four playing modes.
Dependencies: N5110 PinDetect PowerControl mbed
Diff: main.h
- Revision:
- 12:fa654504b51f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Mon May 11 01:51:37 2015 +0000 @@ -0,0 +1,91 @@ +/** +@file main.h +@brief Header file for Snake, containing functions prototypes and global variables. +@brief Revision 1.0. +@author Fiifi Mills +@date May 2015 +*/ + +#include "mbed.h" +#include "N5110.h" +#include "PinDetect.h" +#include "PowerControl/PowerControl.h" +#include "PowerControl/EthernetPowerControl.h" +#include <vector> +#include <stdlib.h> /* srand, rand */ +#include <time.h> + +/** +Enumerated type used for directions read from joystick +*/ + +enum DirectionName { + UP, + DOWN, + LEFT, + RIGHT, + CENTRE, + UNKNOWN +}; + +DirectionName currentDirection; /*!< DirectionName variable used to refer to the joystick's current direction */ +DirectionName previousDirection; /*!< DirectionName variable used to refer to the snake's previous direction */ + +/** +Enumerated type used to display different game menu screens +*/ + +enum GameMenu { + STARTUP, + SELECTSPEED, + GAMEPLAY +}; + +GameMenu currentGameMenu; /*!< GameMenu variable used to refer to the current game menu being displayed */ + +/** +Struct used for creating coordinates +*/ + +struct coordinate { + int x; + int y; +}; + + +/** +Various flags used in the game for notification of specific events +*/ + +int printFlag; /*!< print flag set in ISR */ +int Aflag; /*!< Aflag set in ISR when button A pressed */ +int Bflag; /*!< Bflag set in ISR when button B pressed */ +int collisionFlag; /*!< collisionflag set in moveSnake() when snake collides with self */ +int borderFlag; /*!< borderflag set when snake collides with border in insane mode */ + +/** +Global variables +*/ + +int score; /*!< The score that the user has accumulated throughout the game */ +int xCentre; /*!< The x coordinate of the centre of the selection circle used in the SELECTSPEED game menu */ +int yCentre; /*!< The y coordinate of the centre of the selection circle used in the SELECTSPEED game menu */ +bool gameOver; /*!< Boolean variable signifying whether or not the game is over */ +float speed; /*!< The wait time used in the moveSnake function */ + + +/** +Implements the actual game's functionality by moving the snake and checking when certain rules have been broken +*/ +void moveSnake(); + +/** +Moves the selection circle in the SELECTSPEED game menu either up or down depending on the direction in which the joystick is moved +*/ +void speedSelect(); + +/** +Vector that contains coordinate structs, represents the snake in game +*/ +std::vector<coordinate> Snake; +