Adam Baker 201166301

Dependencies:   mbed Gamepad N5110

Committer:
adambakerwa
Date:
Sun Apr 21 19:50:39 2019 +0000
Revision:
25:230e4163cb6b
Parent:
24:f5dd1f3db693
Child:
26:3319ddd5111d
Blockhead Engine working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adambakerwa 1:a3cce487dffe 1 #include "mbed.h"
adambakerwa 1:a3cce487dffe 2 #include "Gamepad.h"
adambakerwa 1:a3cce487dffe 3 #include "N5110.h"
adambakerwa 1:a3cce487dffe 4 #include "Runner.h"
adambakerwa 6:cef9c2853315 5 #include "Levels.h"
adambakerwa 9:ddeafaadf984 6 #include "Animation.h"
adambakerwa 25:230e4163cb6b 7 #include "BlockheadEngine.h"
adambakerwa 1:a3cce487dffe 8
adambakerwa 1:a3cce487dffe 9 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
adambakerwa 1:a3cce487dffe 10 Gamepad pad;
adambakerwa 25:230e4163cb6b 11 BlockheadEngine blockhead;
adambakerwa 13:35a459a33bbd 12 Ticker ticker;
adambakerwa 13:35a459a33bbd 13
adambakerwa 13:35a459a33bbd 14
adambakerwa 13:35a459a33bbd 15 volatile int timer_flag = 0;
adambakerwa 13:35a459a33bbd 16
adambakerwa 13:35a459a33bbd 17 void timer_isr();
adambakerwa 25:230e4163cb6b 18 int user_input(Gamepad &pad);
adambakerwa 25:230e4163cb6b 19 void select_menu_item(int input);
adambakerwa 6:cef9c2853315 20
adambakerwa 13:35a459a33bbd 21 int main()
adambakerwa 13:35a459a33bbd 22 {
adambakerwa 13:35a459a33bbd 23
adambakerwa 18:0a0976faedfb 24 int fps = 6; //6
adambakerwa 22:8218092c2e4b 25
adambakerwa 1:a3cce487dffe 26 pad.init();
adambakerwa 1:a3cce487dffe 27 lcd.init();
adambakerwa 17:ecbafe932c19 28 lcd.setContrast(0.55);
adambakerwa 24:f5dd1f3db693 29
adambakerwa 13:35a459a33bbd 30 ticker.attach(&timer_isr,1.0f/fps);
adambakerwa 13:35a459a33bbd 31
adambakerwa 24:f5dd1f3db693 32 int gameover = 0;
adambakerwa 13:35a459a33bbd 33
adambakerwa 1:a3cce487dffe 34 while(1) {
adambakerwa 1:a3cce487dffe 35
adambakerwa 14:d8ced73dbb83 36 if (timer_flag == true) {
adambakerwa 13:35a459a33bbd 37
adambakerwa 14:d8ced73dbb83 38 timer_flag = 0; // if it has, clear the flag
adambakerwa 13:35a459a33bbd 39
adambakerwa 14:d8ced73dbb83 40 lcd.clear();
adambakerwa 17:ecbafe932c19 41
adambakerwa 25:230e4163cb6b 42 gameover = blockhead.playgame(lcd, pad);
adambakerwa 13:35a459a33bbd 43
adambakerwa 13:35a459a33bbd 44 lcd.refresh();
adambakerwa 13:35a459a33bbd 45
adambakerwa 14:d8ced73dbb83 46 } else {
adambakerwa 14:d8ced73dbb83 47
adambakerwa 14:d8ced73dbb83 48 sleep();
adambakerwa 14:d8ced73dbb83 49
adambakerwa 13:35a459a33bbd 50 }
adambakerwa 1:a3cce487dffe 51 }
adambakerwa 13:35a459a33bbd 52
adambakerwa 13:35a459a33bbd 53 }
adambakerwa 13:35a459a33bbd 54
adambakerwa 13:35a459a33bbd 55 void timer_isr()
adambakerwa 13:35a459a33bbd 56 {
adambakerwa 13:35a459a33bbd 57
adambakerwa 13:35a459a33bbd 58 timer_flag = 1; // set flag in ISR
adambakerwa 1:a3cce487dffe 59 }
adambakerwa 1:a3cce487dffe 60
adambakerwa 25:230e4163cb6b 61 int user_input(Gamepad &pad)
adambakerwa 25:230e4163cb6b 62 {
adambakerwa 25:230e4163cb6b 63 int input;
adambakerwa 25:230e4163cb6b 64
adambakerwa 25:230e4163cb6b 65
adambakerwa 25:230e4163cb6b 66 if (pad.check_event(Gamepad::A_PRESSED)) {
adambakerwa 25:230e4163cb6b 67 input = 1;
adambakerwa 25:230e4163cb6b 68 } else if (pad.check_event(Gamepad::B_PRESSED)) {
adambakerwa 25:230e4163cb6b 69 input = 2;
adambakerwa 25:230e4163cb6b 70 } else {
adambakerwa 25:230e4163cb6b 71 input = 0;
adambakerwa 25:230e4163cb6b 72 }
adambakerwa 25:230e4163cb6b 73
adambakerwa 25:230e4163cb6b 74 return input;
adambakerwa 25:230e4163cb6b 75 }
adambakerwa 25:230e4163cb6b 76
adambakerwa 25:230e4163cb6b 77 void select_menu_item(int input) {
adambakerwa 25:230e4163cb6b 78 switch (input) {
adambakerwa 25:230e4163cb6b 79 case 1:
adambakerwa 25:230e4163cb6b 80 menu_item_1();
adambakerwa 25:230e4163cb6b 81 break;
adambakerwa 25:230e4163cb6b 82 case 2:
adambakerwa 25:230e4163cb6b 83 menu_item_2();
adambakerwa 25:230e4163cb6b 84 break;
adambakerwa 25:230e4163cb6b 85 default:
adambakerwa 25:230e4163cb6b 86 exit(1);
adambakerwa 25:230e4163cb6b 87 break;
adambakerwa 25:230e4163cb6b 88 }
adambakerwa 25:230e4163cb6b 89 }
adambakerwa 25:230e4163cb6b 90
adambakerwa 25:230e4163cb6b 91 void menu_playgame(N5110 &lcd, Gamepad &pad)
adambakerwa 25:230e4163cb6b 92 {
adambakerwa 25:230e4163cb6b 93
adambakerwa 25:230e4163cb6b 94
adambakerwa 25:230e4163cb6b 95
adambakerwa 25:230e4163cb6b 96
adambakerwa 25:230e4163cb6b 97
adambakerwa 1:a3cce487dffe 98
adambakerwa 13:35a459a33bbd 99 //rtos
adambakerwa 24:f5dd1f3db693 100 /**
adambakerwa 24:f5dd1f3db693 101 char buffer[14];
adambakerwa 24:f5dd1f3db693 102 sprintf(buffer,"%i", gameover);
adambakerwa 24:f5dd1f3db693 103 lcd.printString(buffer,0,0);
adambakerwa 24:f5dd1f3db693 104 */
adambakerwa 24:f5dd1f3db693 105 //NEED TO RESET POS CORDS EACH NEW LEVEL TO PREVENT UNNECERSARRY GAME OVER (have fun x)