My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Fri Apr 29 14:19:57 2016 +0000
Revision:
14:91ae0afe9037
Parent:
13:359d3aa66352
Child:
15:c7af2ea5f164
lcd normal and inverse!

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