My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Committer:
Nikollao
Date:
Mon May 02 08:56:08 2016 +0000
Revision:
16:a6ca6858af24
Parent:
15:c7af2ea5f164
Child:
17:2d424db3975f
before testing Migel's way in my code

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