My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Mon Apr 18 09:59:32 2016 +0000
Revision:
8:606a488fa720
Parent:
7:f31a4b4beb91
Child:
9:ce2d9c42edea
Improve obstacles level 6

Who changed what in which revision?

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