My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Fork of Treasure_Hunt by ELEC2645 (2015/16)

Committer:
Nikollao
Date:
Thu Apr 28 22:04:15 2016 +0000
Revision:
13:359d3aa66352
Parent:
11:53caf3d944a9
Child:
14:91ae0afe9037
working on overlap! before matrixes

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