My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Thu Apr 28 18:44:02 2016 +0000
Revision:
12:f591f1965abd
Parent:
11:53caf3d944a9
working on settings menu

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