meurig phillips snake game - accidentally published to my account instead of to the group!

Dependencies:   Joystick N5110 SDFileSystem beep fsmMenu mbed

Fork of SnakeProjectRev1 by Meurig Phillips

main.h

Committer:
meurigp
Date:
2016-05-01
Revision:
11:f8478bc749e0
Parent:
10:7820b46476ea
Child:
12:825a402d230f

File content as of revision 11:f8478bc749e0:

/**
@file main.h
@brief Header file containing functions prototypes, defines and global variables for the snake game
@brief Revision 1.0.
@author Meurig Phillips
@date   April 2016
*/

#ifndef MAIN_H
#define MAIN_H

#include "mbed.h"

/**  
@namespace greenLed
@brief GPIO output for green LED
@namespace redLed
@brief GPIO output for red LED
@namespace buzzer
@brief GPIO output for buzzer
*/

DigitalOut greenLed(PTC2);
DigitalOut redLed(PTA2);
//Beep buzzer(PTA1);

Ticker pollJoystick; /// timer to regularly read the joystick
Serial serial(USBTX,USBRX); /// serial communication for debugging
Ticker gameTicker; /// timer to update game at regular intervals

/// create enumerated type (0,1,2,3 etc. for current direction snake is travelling (not joystick reading))
enum CurrentDirection {
    up,
    down,
    left,
    right,
    centre,
};
CurrentDirection currentDirection = centre; /// intialise direction at beginning

int randomX =  rand() % 83 + 1; /*!< random number in the range of 1 to 83 assigned to randomX */
int randomY =  rand() % 47 + 1; /*!< random number in the range of 1 to 47 assigned to randomY */  
int randomXoddEven = randomX%2; /*!< distinguish whether randomX is odd or even */
int randomYoddEven = randomY%2; /*!< distinguish whether randomY is odd or even */
int snakeTailX[100]; /*!< array for X coordinate of each snake segment */
int snakeTailY[100]; /*!< array for Y coordinate of each snake segment */
int snakeTailLength = 3; /*!< length of snake, intialised to 3 */
int score = 0; /*!< score for current round */
int top_score = 0; /*!< top score read and write from the SD card */
int fruitValue = 10; /*!< value of the fruit */
int i = 41; /*!< x origin of snake head, intialised at 41 */
int j = 23; /*!< y origin of snake head, intialised at 23 */
int prev_i; /*!< integer to store previous value of x/i */
int prev_j; /*!< integer to store previous value of y/j */
int prev2_i; /*!< integer to store previous, previous value of x/i */
int prev2_j; /*!< integer to store previous, previous value of y/j */
bool gamePlaying = false; /*!< bool to store whether the game is in play or not */


/**
Displays new fruit
*/
void generateFood();
/**
Generates new random coordinates for the fruit
*/
void newFruitXY();
/**
Main in game function, involves the input, logic and display
*/
void moveSnake();
/**
Restricted boundaries
*/
void hardWall();
/**
Map with obstacles in the way
*/
void specialMap();
/**
Infinite boundaries
*/
void wrapAround();
/**
Calculates score
*/
void scoreCalculation();
/**
Displayes scores when player dies
*/
void gameOver();
/**
Initilaises the snake so it's moving from left to right to begin with
*/
void initSnakeTail();
/**
Splash screen for the intro of the game
*/
void snakeIntro();


#endif