ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Thu Mar 21 15:12:07 2019 +0000
Revision:
19:b78fa41d04a9
Parent:
18:6becc9f9de5e
Child:
20:557e84189a57
I have made a game over screen when the player dies. I made the red light flash (when health is low). I have started making a new intro to my game - animated. I have made a "game over" title - need to add to the screen. Have made multiple led flash.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Noximilien 0:69abdc43ae39 1 /*
Noximilien 0:69abdc43ae39 2 ELEC2645 Embedded Systems Project
Noximilien 0:69abdc43ae39 3 School of Electronic & Electrical Engineering
Noximilien 0:69abdc43ae39 4 University of Leeds
Noximilien 0:69abdc43ae39 5 Name: Dmitrijs Griskovs
Noximilien 0:69abdc43ae39 6 Username: el17dg
Noximilien 0:69abdc43ae39 7 Student ID Number: 201160286
Noximilien 0:69abdc43ae39 8 Date: start - 25/02/2019
Noximilien 0:69abdc43ae39 9 */
Noximilien 0:69abdc43ae39 10
Noximilien 0:69abdc43ae39 11
Noximilien 4:02c63aaa2df9 12 #include "main.h"
Noximilien 3:10918b0f7a7d 13 #include "game.h"
Noximilien 4:02c63aaa2df9 14 #include "menu.h"
Noximilien 19:b78fa41d04a9 15 #include "models.h"
Noximilien 3:10918b0f7a7d 16
Noximilien 0:69abdc43ae39 17
Noximilien 0:69abdc43ae39 18
Noximilien 1:5aa2312d3e94 19 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Noximilien 4:02c63aaa2df9 20
Noximilien 3:10918b0f7a7d 21 Gamepad gamepad;
Noximilien 4:02c63aaa2df9 22
Noximilien 1:5aa2312d3e94 23 AnalogIn pot(PTB2);
Noximilien 2:ec89189860e0 24 AnalogIn x_dir(PTB11);
Noximilien 2:ec89189860e0 25 AnalogIn y_dir(PTB10);
Noximilien 17:69a85c909566 26 AnalogIn rand_y(PTB3);
Noximilien 2:ec89189860e0 27
Noximilien 4:02c63aaa2df9 28 Menu menu;
Noximilien 4:02c63aaa2df9 29 Game game;
Noximilien 4:02c63aaa2df9 30
Noximilien 19:b78fa41d04a9 31 struct IntroMove {
Noximilien 19:b78fa41d04a9 32 int x;
Noximilien 19:b78fa41d04a9 33 int y;
Noximilien 19:b78fa41d04a9 34 };
Noximilien 19:b78fa41d04a9 35
Noximilien 19:b78fa41d04a9 36 IntroMove lineOne;
Noximilien 19:b78fa41d04a9 37 IntroMove lineTwo;
Noximilien 19:b78fa41d04a9 38
Noximilien 4:02c63aaa2df9 39 //static const unsigned int MAX_LINE_LENGTH = 14;
Noximilien 3:10918b0f7a7d 40
Noximilien 1:5aa2312d3e94 41
Noximilien 1:5aa2312d3e94 42 void intro();
Noximilien 2:ec89189860e0 43 void pointer(int x, int y);
Noximilien 2:ec89189860e0 44 void pointer_position(int menu_number);
Noximilien 3:10918b0f7a7d 45 void ship_movement();
Noximilien 4:02c63aaa2df9 46 //char line_buffer[MAX_LINE_LENGTH];
Noximilien 2:ec89189860e0 47
Noximilien 4:02c63aaa2df9 48
Noximilien 0:69abdc43ae39 49
Noximilien 4:02c63aaa2df9 50 ScreenOption current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 51
Noximilien 4:02c63aaa2df9 52 void intro();
Noximilien 4:02c63aaa2df9 53
Noximilien 1:5aa2312d3e94 54 int main(){
Noximilien 1:5aa2312d3e94 55 lcd.init();
Noximilien 4:02c63aaa2df9 56 gamepad.init();
Noximilien 17:69a85c909566 57 //gamepad.leds_on();
Noximilien 18:6becc9f9de5e 58 //gamepad.led(1,1.0);
Noximilien 1:5aa2312d3e94 59
Noximilien 1:5aa2312d3e94 60 intro();
Noximilien 17:69a85c909566 61 srand(rand_y * 1000000); //Makeing the generated y position for the enemy to be trully random.
Noximilien 1:5aa2312d3e94 62
Noximilien 4:02c63aaa2df9 63 while(1){ //Waiting for the option "start game" to be selected and for the button B to be pressed
Noximilien 1:5aa2312d3e94 64 lcd.clear();
Noximilien 2:ec89189860e0 65
Noximilien 4:02c63aaa2df9 66 if (current_screen == ScreenOption_Game) {
Noximilien 19:b78fa41d04a9 67 bool game_is_paused = game.updateAndDraw();
Noximilien 19:b78fa41d04a9 68
Noximilien 19:b78fa41d04a9 69 if (game_is_paused) {
Noximilien 4:02c63aaa2df9 70 current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 71 }
Noximilien 4:02c63aaa2df9 72 }
Noximilien 4:02c63aaa2df9 73 else if (current_screen == ScreenOption_Menu) {
Noximilien 4:02c63aaa2df9 74 bool wantsToChangeScreen = menu.updateAndDraw();
Noximilien 4:02c63aaa2df9 75 if (wantsToChangeScreen) {
Noximilien 4:02c63aaa2df9 76 current_screen = menu.getCurrentScreenSelection();
Noximilien 4:02c63aaa2df9 77 }
Noximilien 2:ec89189860e0 78 }
Noximilien 19:b78fa41d04a9 79 bool game_over = game.checkGameOver();
Noximilien 19:b78fa41d04a9 80 if (game_over){
Noximilien 19:b78fa41d04a9 81 lcd.clear();
Noximilien 19:b78fa41d04a9 82 lcd.printString("GameOver",0,1);
Noximilien 19:b78fa41d04a9 83 lcd.refresh();
Noximilien 19:b78fa41d04a9 84 wait(1);
Noximilien 19:b78fa41d04a9 85 lcd.printString("Press Y",0,4);
Noximilien 19:b78fa41d04a9 86 lcd.printString("to restart",0,5);
Noximilien 19:b78fa41d04a9 87 lcd.refresh();
Noximilien 19:b78fa41d04a9 88 bool led_state = false;
Noximilien 19:b78fa41d04a9 89 while (!gamepad.check_event(gamepad.Y_PRESSED)){//////////////////////////////
Noximilien 19:b78fa41d04a9 90 gamepad.led(1,(float)led_state);
Noximilien 19:b78fa41d04a9 91 gamepad.led(2,(float)!led_state);
Noximilien 19:b78fa41d04a9 92 gamepad.led(3,(float)led_state);
Noximilien 19:b78fa41d04a9 93 gamepad.led(4,(float)!led_state);
Noximilien 19:b78fa41d04a9 94 gamepad.led(5,(float)led_state);
Noximilien 19:b78fa41d04a9 95 gamepad.led(6,(float)!led_state);
Noximilien 19:b78fa41d04a9 96 wait(0.5);
Noximilien 19:b78fa41d04a9 97 led_state = !led_state;
Noximilien 19:b78fa41d04a9 98 }
Noximilien 19:b78fa41d04a9 99 current_screen = ScreenOption_Menu;
Noximilien 19:b78fa41d04a9 100 }
Noximilien 2:ec89189860e0 101
Noximilien 1:5aa2312d3e94 102 lcd.refresh();
Noximilien 14:e8de27c4d0d4 103 wait_ms(1000/fps);
Noximilien 1:5aa2312d3e94 104 }
Noximilien 1:5aa2312d3e94 105 }
Noximilien 1:5aa2312d3e94 106
Noximilien 19:b78fa41d04a9 107 void intro(){
Noximilien 19:b78fa41d04a9 108 lineOne.x = -63;
Noximilien 19:b78fa41d04a9 109 lineOne.y = 2; // This just will be an intro for the game.//////////////////
Noximilien 19:b78fa41d04a9 110
Noximilien 19:b78fa41d04a9 111 for (int i = 0; i < 67; i++){
Noximilien 19:b78fa41d04a9 112 lcd.clear();
Noximilien 19:b78fa41d04a9 113 lcd.drawSprite(lineOne.x + i, lineOne.y, 11, 63, (int*)introLineOne);
Noximilien 19:b78fa41d04a9 114 lcd.refresh();
Noximilien 19:b78fa41d04a9 115 wait(0.00001);
Noximilien 19:b78fa41d04a9 116 }
Noximilien 19:b78fa41d04a9 117 /*lcd.printString(" StarBarians",1,1);
Noximilien 1:5aa2312d3e94 118 lcd.refresh();
Noximilien 2:ec89189860e0 119 wait(0.5);
Noximilien 1:5aa2312d3e94 120 lcd.printString(" And the quest ",1,2);
Noximilien 4:02c63aaa2df9 121 lcd.printString(" of the Princess Spacecate",1,3);
Noximilien 19:b78fa41d04a9 122 lcd.printString(" Spacecate",1,4);*/
Noximilien 19:b78fa41d04a9 123
Noximilien 4:02c63aaa2df9 124 }