Adam Baker 201166301
Dependencies: mbed Gamepad N5110
main.cpp@25:230e4163cb6b, 2019-04-21 (annotated)
- 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?
User | Revision | Line number | New 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) |