My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Mon Apr 04 12:20:42 2016 +0000
Revision:
7:f31a4b4beb91
Parent:
6:c11bb31a06b3
Child:
8:606a488fa720
Hero is now controlled, buzzer connected, obstacles progressing, need to finish obstacles and enemies

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nikollao 4:f31bdc212241 1 //Fadia
Nikollao 5:ffa498d7071f 2 /**
Nikollao 5:ffa498d7071f 3 @file main.cpp
Nikollao 5:ffa498d7071f 4 @brief Game implementation
Nikollao 4:f31bdc212241 5
Nikollao 5:ffa498d7071f 6 */
Nikollao 5:ffa498d7071f 7 #include "main.h"
Nikollao 0:2d0f77943105 8 #include "stdlib.h"
Nikollao 2:af5b5d42e835 9
Nikollao 0:2d0f77943105 10 int main()
Nikollao 0:2d0f77943105 11 {
Nikollao 6:c11bb31a06b3 12 lcd.init();
Nikollao 6:c11bb31a06b3 13 init_K64F();
Nikollao 6:c11bb31a06b3 14 init_serial();
Nikollao 7:f31a4b4beb91 15 button.fall(&button_isr); ///assign rise with ISR
Nikollao 5:ffa498d7071f 16 init_game(); ///initialize game
Nikollao 5:ffa498d7071f 17 calibrateJoystick(); ///calibrate joystick
Nikollao 0:2d0f77943105 18
Nikollao 6:c11bb31a06b3 19 ticker.attach(&timer_isr,0.1); ///attach ticker with ISR every 0.1 sec
Nikollao 5:ffa498d7071f 20 reset = level; ///set reset = level to check later if level has increased
Nikollao 7:f31a4b4beb91 21 buzzer = 0.5;
Nikollao 7:f31a4b4beb91 22 buzzer.period(1/1000);
Nikollao 7:f31a4b4beb91 23 //buzzer.write(0.5);
Nikollao 0:2d0f77943105 24
Nikollao 0:2d0f77943105 25 while (1) {
Nikollao 0:2d0f77943105 26
Nikollao 0:2d0f77943105 27 if (g_timer_flag) {
Nikollao 0:2d0f77943105 28
Nikollao 6:c11bb31a06b3 29 g_timer_flag = 0; ///reset flag
Nikollao 0:2d0f77943105 30 lcd.clear();
Nikollao 6:c11bb31a06b3 31 guidance();
Nikollao 0:2d0f77943105 32 hero();
Nikollao 3:d2cc054e8605 33 enemies();
Nikollao 0:2d0f77943105 34 obstacles();
Nikollao 0:2d0f77943105 35
Nikollao 5:ffa498d7071f 36 if (heroY < -45) { ///if hero has reached the top of the screen
Nikollao 5:ffa498d7071f 37 heroY = 0; ///hero goes back to the bottom of the screen
Nikollao 5:ffa498d7071f 38 level++; ///level increases by 1
Nikollao 0:2d0f77943105 39 }
Nikollao 0:2d0f77943105 40
Nikollao 7:f31a4b4beb91 41 if (heroY >= 0) {
Nikollao 7:f31a4b4beb91 42 heroY = 0;
Nikollao 7:f31a4b4beb91 43 }
Nikollao 5:ffa498d7071f 44 if (reset < level) { ///if level has increased
Nikollao 0:2d0f77943105 45
Nikollao 6:c11bb31a06b3 46 reset = level; ///update reset
Nikollao 5:ffa498d7071f 47 rectX = rand() % 84; ///set the position of rect enemy
Nikollao 0:2d0f77943105 48 rectY = 0;
Nikollao 5:ffa498d7071f 49 circleX = 0; ///set position of circle enemy
Nikollao 6:c11bb31a06b3 50 circleY = rand() % 47;
Nikollao 0:2d0f77943105 51 }
Nikollao 6:c11bb31a06b3 52 pc.printf("x = %f y = %f button = %d \n",joystick.x,joystick.y,joystick.button);
Nikollao 6:c11bb31a06b3 53 pc.printf("heroY = %d , heroX = %d , n = %d \n",heroY, heroX, n);
Nikollao 0:2d0f77943105 54 }
Nikollao 6:c11bb31a06b3 55 checkOverlap();
Nikollao 0:2d0f77943105 56 updateJoystick();
Nikollao 1:12803d645d32 57 //callibrateJoystick();
Nikollao 0:2d0f77943105 58 lcd.refresh();
Nikollao 0:2d0f77943105 59 sleep();
Nikollao 0:2d0f77943105 60 }
Nikollao 0:2d0f77943105 61 }
Nikollao 0:2d0f77943105 62
Nikollao 0:2d0f77943105 63 void init_serial()
Nikollao 0:2d0f77943105 64 {
Nikollao 0:2d0f77943105 65 // set to highest baud - ensure terminal software matches
Nikollao 0:2d0f77943105 66 pc.baud(115200);
Nikollao 0:2d0f77943105 67 }
Nikollao 0:2d0f77943105 68
Nikollao 0:2d0f77943105 69 void init_K64F()
Nikollao 0:2d0f77943105 70 {
Nikollao 0:2d0f77943105 71 // on-board LEDs are active-low, so set pin high to turn them off.
Nikollao 0:2d0f77943105 72 r_led = 1;
Nikollao 0:2d0f77943105 73 g_led = 1;
Nikollao 0:2d0f77943105 74 b_led = 1;
Nikollao 0:2d0f77943105 75
Nikollao 0:2d0f77943105 76 // since the on-board switches have external pull-ups, we should disable the internal pull-down
Nikollao 0:2d0f77943105 77 // resistors that are enabled by default using InterruptIn
Nikollao 0:2d0f77943105 78 sw2.mode(PullNone);
Nikollao 0:2d0f77943105 79 sw3.mode(PullNone);
Nikollao 7:f31a4b4beb91 80 button.mode(PullUp);
Nikollao 0:2d0f77943105 81 }
Nikollao 0:2d0f77943105 82
Nikollao 0:2d0f77943105 83 void timer_isr ()
Nikollao 0:2d0f77943105 84 {
Nikollao 0:2d0f77943105 85
Nikollao 0:2d0f77943105 86 g_timer_flag = 1;
Nikollao 0:2d0f77943105 87 }
Nikollao 0:2d0f77943105 88
Nikollao 0:2d0f77943105 89 void game_timer_isr()
Nikollao 0:2d0f77943105 90 {
Nikollao 0:2d0f77943105 91 g_game_timer_flag = 1;
Nikollao 0:2d0f77943105 92 }
Nikollao 0:2d0f77943105 93
Nikollao 0:2d0f77943105 94 void sw2_isr()
Nikollao 0:2d0f77943105 95 {
Nikollao 0:2d0f77943105 96 g_sw2_flag = 1;
Nikollao 0:2d0f77943105 97 }
Nikollao 0:2d0f77943105 98
Nikollao 4:f31bdc212241 99 void sw3_isr()
Nikollao 4:f31bdc212241 100 {
Nikollao 1:12803d645d32 101 g_sw3_flag = 1;
Nikollao 1:12803d645d32 102 }
Nikollao 1:12803d645d32 103
Nikollao 1:12803d645d32 104 void button_isr()
Nikollao 1:12803d645d32 105 {
Nikollao 1:12803d645d32 106 g_button_flag =1;
Nikollao 1:12803d645d32 107 }
Nikollao 1:12803d645d32 108
Nikollao 1:12803d645d32 109 void timeout_isr()
Nikollao 1:12803d645d32 110 {
Nikollao 1:12803d645d32 111 if (button) {
Nikollao 4:f31bdc212241 112 pc.printf("button is pressed! \n");
Nikollao 1:12803d645d32 113 }
Nikollao 7:f31a4b4beb91 114 }