My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Mon Mar 28 12:10:24 2016 +0000
Revision:
6:c11bb31a06b3
Parent:
5:ffa498d7071f
Child:
7:f31a4b4beb91
close to getting overlap, needs improvement.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nikollao 5:ffa498d7071f 1 /**
Nikollao 5:ffa498d7071f 2 @file main.h
Nikollao 5:ffa498d7071f 3 @brief Header file contains functions and variables
Nikollao 5:ffa498d7071f 4 @brief Treasure Hunt - Embedded Systems Project
Nikollao 5:ffa498d7071f 5 @brief Revision 1.0
Nikollao 5:ffa498d7071f 6 @author Nikollao Sulollari
Nikollao 5:ffa498d7071f 7 @Date 26/03/2016
Nikollao 5:ffa498d7071f 8 */
Nikollao 5:ffa498d7071f 9
Nikollao 5:ffa498d7071f 10 #ifndef MAIN_H
Nikollao 5:ffa498d7071f 11 #define MAIN_H
Nikollao 5:ffa498d7071f 12 #include "mbed.h"
Nikollao 5:ffa498d7071f 13
Nikollao 5:ffa498d7071f 14
Nikollao 5:ffa498d7071f 15 /**
Nikollao 5:ffa498d7071f 16 @nameSpace led
Nikollao 5:ffa498d7071f 17 @brief GPO output for status of LED
Nikollao 5:ffa498d7071f 18 */
Nikollao 2:af5b5d42e835 19 DigitalOut r_led(LED_RED);
Nikollao 2:af5b5d42e835 20 DigitalOut g_led(LED_GREEN);
Nikollao 2:af5b5d42e835 21 DigitalOut b_led(LED_BLUE);
Nikollao 2:af5b5d42e835 22
Nikollao 2:af5b5d42e835 23 // K64F on-board switches
Nikollao 2:af5b5d42e835 24 InterruptIn sw2(SW2);
Nikollao 2:af5b5d42e835 25 InterruptIn sw3(SW3);
Nikollao 2:af5b5d42e835 26
Nikollao 2:af5b5d42e835 27 InterruptIn button(PTB2);
Nikollao 2:af5b5d42e835 28 AnalogIn xPot(PTB3);
Nikollao 2:af5b5d42e835 29 AnalogIn yPot(PTB10);
Nikollao 2:af5b5d42e835 30 PwmOut speaker(PTC11);
Nikollao 2:af5b5d42e835 31
Nikollao 5:ffa498d7071f 32 /**
Nikollao 5:ffa498d7071f 33 Displays an error message
Nikollao 5:ffa498d7071f 34 */
Nikollao 2:af5b5d42e835 35 void error();
Nikollao 5:ffa498d7071f 36
Nikollao 5:ffa498d7071f 37 /**
Nikollao 5:ffa498d7071f 38 set-up serial port
Nikollao 5:ffa498d7071f 39 */
Nikollao 2:af5b5d42e835 40 void init_serial();
Nikollao 5:ffa498d7071f 41
Nikollao 5:ffa498d7071f 42 /**
Nikollao 5:ffa498d7071f 43 set-up the on-board LEDs and switches
Nikollao 5:ffa498d7071f 44 */
Nikollao 2:af5b5d42e835 45 void init_K64F();
Nikollao 5:ffa498d7071f 46
Nikollao 5:ffa498d7071f 47 /**
Nikollao 5:ffa498d7071f 48 Set-up random variables and game menu
Nikollao 5:ffa498d7071f 49 */
Nikollao 2:af5b5d42e835 50 void init_game();
Nikollao 5:ffa498d7071f 51
Nikollao 5:ffa498d7071f 52 /**
Nikollao 5:ffa498d7071f 53 Set-up flag to 1
Nikollao 5:ffa498d7071f 54 */
Nikollao 5:ffa498d7071f 55
Nikollao 5:ffa498d7071f 56 /**
Nikollao 5:ffa498d7071f 57 Set-up flag to 1
Nikollao 5:ffa498d7071f 58 */
Nikollao 2:af5b5d42e835 59 void timer_isr();
Nikollao 5:ffa498d7071f 60
Nikollao 5:ffa498d7071f 61 /**
Nikollao 5:ffa498d7071f 62 Set-up flag to 1
Nikollao 5:ffa498d7071f 63 */
Nikollao 5:ffa498d7071f 64
Nikollao 5:ffa498d7071f 65 /**
Nikollao 5:ffa498d7071f 66 Set-up flag to 1
Nikollao 5:ffa498d7071f 67 */
Nikollao 2:af5b5d42e835 68 void game_timer_isr();
Nikollao 5:ffa498d7071f 69
Nikollao 5:ffa498d7071f 70 /**
Nikollao 5:ffa498d7071f 71 Set-up flag to 1
Nikollao 5:ffa498d7071f 72 */
Nikollao 2:af5b5d42e835 73 void sw2_isr();
Nikollao 5:ffa498d7071f 74
Nikollao 5:ffa498d7071f 75 /**
Nikollao 5:ffa498d7071f 76 Set-up flag to 1
Nikollao 5:ffa498d7071f 77 */
Nikollao 2:af5b5d42e835 78 void sw3_isr();
Nikollao 5:ffa498d7071f 79
Nikollao 5:ffa498d7071f 80 /**
Nikollao 5:ffa498d7071f 81 Set-up flag to 1
Nikollao 5:ffa498d7071f 82 */
Nikollao 2:af5b5d42e835 83 void button_isr();
Nikollao 5:ffa498d7071f 84
Nikollao 5:ffa498d7071f 85 /**
Nikollao 5:ffa498d7071f 86 Set-up flag to 1
Nikollao 5:ffa498d7071f 87 */
Nikollao 2:af5b5d42e835 88 void timeout_isr();
Nikollao 2:af5b5d42e835 89
Nikollao 5:ffa498d7071f 90 /**
Nikollao 5:ffa498d7071f 91 Set current position to default position of Joystick
Nikollao 5:ffa498d7071f 92 */
Nikollao 2:af5b5d42e835 93 void calibrateJoystick();
Nikollao 5:ffa498d7071f 94
Nikollao 5:ffa498d7071f 95 /**
Nikollao 5:ffa498d7071f 96 Update the values of the joystick to get current position
Nikollao 5:ffa498d7071f 97 */
Nikollao 2:af5b5d42e835 98 void updateJoystick();
Nikollao 2:af5b5d42e835 99
Nikollao 5:ffa498d7071f 100 /**
Nikollao 5:ffa498d7071f 101 Create an enemy rectangular shape
Nikollao 5:ffa498d7071f 102 */
Nikollao 2:af5b5d42e835 103 void enemyRect();
Nikollao 5:ffa498d7071f 104
Nikollao 5:ffa498d7071f 105 /**
Nikollao 5:ffa498d7071f 106 Create circle shape enemy
Nikollao 5:ffa498d7071f 107 */
Nikollao 2:af5b5d42e835 108 void enemyCircle();
Nikollao 5:ffa498d7071f 109
Nikollao 5:ffa498d7071f 110 /**
Nikollao 5:ffa498d7071f 111 creates the hero of the game
Nikollao 5:ffa498d7071f 112 */
Nikollao 2:af5b5d42e835 113 void hero();
Nikollao 5:ffa498d7071f 114
Nikollao 5:ffa498d7071f 115 /**
Nikollao 5:ffa498d7071f 116 Shows the right direction
Nikollao 5:ffa498d7071f 117 */
Nikollao 2:af5b5d42e835 118 void guidance();
Nikollao 5:ffa498d7071f 119
Nikollao 5:ffa498d7071f 120 /**
Nikollao 5:ffa498d7071f 121 Locates obstacles in the screen
Nikollao 5:ffa498d7071f 122 */
Nikollao 2:af5b5d42e835 123 void obstacles();
Nikollao 5:ffa498d7071f 124
Nikollao 5:ffa498d7071f 125 /**
Nikollao 5:ffa498d7071f 126 Gets enemies depending on the level
Nikollao 5:ffa498d7071f 127 */
Nikollao 3:d2cc054e8605 128 void enemies();
Nikollao 5:ffa498d7071f 129
Nikollao 5:ffa498d7071f 130 /**
Nikollao 5:ffa498d7071f 131 Get s vslue of the .y position, control menu
Nikollao 5:ffa498d7071f 132 */
Nikollao 2:af5b5d42e835 133 int menu();
Nikollao 4:f31bdc212241 134
Nikollao 6:c11bb31a06b3 135 //testing
Nikollao 6:c11bb31a06b3 136 void checkOverlap();
Nikollao 6:c11bb31a06b3 137 void userTouched();
Nikollao 6:c11bb31a06b3 138
Nikollao 5:ffa498d7071f 139 /**
Nikollao 5:ffa498d7071f 140 Check for intrersection
Nikollao 5:ffa498d7071f 141 @param i loops through x direction
Nikollao 5:ffa498d7071f 142 @param j loops through y direction
Nikollao 5:ffa498d7071f 143 @returns the number of pixels aroun the hero detected
Nikollao 5:ffa498d7071f 144 */
Nikollao 5:ffa498d7071f 145 int intersection(int i, int j);
Nikollao 5:ffa498d7071f 146
Nikollao 6:c11bb31a06b3 147 volatile int rectY; /*!< used to determine x-axis position of the rect enemy */
Nikollao 5:ffa498d7071f 148
Nikollao 6:c11bb31a06b3 149 volatile int rectX ;/*!< used to determine y-axis position of the rect enemy */
Nikollao 5:ffa498d7071f 150
Nikollao 6:c11bb31a06b3 151 volatile int circleX;/*!< used to determine x-axis position of the circular enemy */
Nikollao 5:ffa498d7071f 152
Nikollao 6:c11bb31a06b3 153 volatile int circleY;/*!< used to determine y-axis position of the circular enemy */
Nikollao 5:ffa498d7071f 154
Nikollao 6:c11bb31a06b3 155 volatile int heroX;/*!< used to move the hero along x-axis */
Nikollao 5:ffa498d7071f 156
Nikollao 6:c11bb31a06b3 157 volatile int heroY;/*!< used to move the hero along y-axis */
Nikollao 5:ffa498d7071f 158
Nikollao 6:c11bb31a06b3 159 volatile int level = 0; /*!< initiate the level difficulty of the game */
Nikollao 2:af5b5d42e835 160
Nikollao 6:c11bb31a06b3 161 volatile int g_timer_flag = 0; /*!< set timer flag in the isr, timer trigger interrupt */
Nikollao 5:ffa498d7071f 162
Nikollao 6:c11bb31a06b3 163 volatile int g_game_timer_flag = 0; /*!< set timer flag in the isr, timer trigger interrupt */
Nikollao 5:ffa498d7071f 164
Nikollao 6:c11bb31a06b3 165 volatile int g_sw2_flag = 0; /*!< set timer flag in the isr, event trigger interrupt */
Nikollao 5:ffa498d7071f 166
Nikollao 6:c11bb31a06b3 167 volatile int g_sw3_flag = 0; /*!< set timer flag in the isr, event trigger interrupt */
Nikollao 5:ffa498d7071f 168
Nikollao 6:c11bb31a06b3 169 volatile int g_button_flag = 0; /*!< set timer flag in the isr, event trigger interrupt */
Nikollao 2:af5b5d42e835 170
Nikollao 6:c11bb31a06b3 171 volatile int option = 0; /*!< select option in menu based on Joystick's movement */
Nikollao 5:ffa498d7071f 172
Nikollao 6:c11bb31a06b3 173 volatile int play = 0; /*!< counts the number of plays */
Nikollao 5:ffa498d7071f 174
Nikollao 6:c11bb31a06b3 175 volatile int tries = 0;/*!< counts the number of trials */
Nikollao 4:f31bdc212241 176
Nikollao 6:c11bb31a06b3 177 volatile int n;/*!< number of pixels overlapping */
Nikollao 6:c11bb31a06b3 178 int pixels[84][48];
Nikollao 4:f31bdc212241 179
Nikollao 6:c11bb31a06b3 180 int reset = 0; /*!< used to save current level of difficulty */
Nikollao 4:f31bdc212241 181
Nikollao 5:ffa498d7071f 182 #endif
Nikollao 5:ffa498d7071f 183