Initial publish

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Tue Mar 26 10:52:53 2019 +0000
Revision:
20:557e84189a57
Parent:
19:b78fa41d04a9
Child:
21:0eb394495b8a
Have made the intro for my game. I need to implement class system again in order to get more marks. Need to a function that will be resetting in game values when the game is over.;

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 20:557e84189a57 37 IntroMove lineOneStars;
Noximilien 19:b78fa41d04a9 38 IntroMove lineTwo;
Noximilien 20:557e84189a57 39 IntroMove lineTwoShips;
Noximilien 20:557e84189a57 40 IntroMove lineThree;
Noximilien 20:557e84189a57 41
Noximilien 19:b78fa41d04a9 42
Noximilien 4:02c63aaa2df9 43 //static const unsigned int MAX_LINE_LENGTH = 14;
Noximilien 3:10918b0f7a7d 44
Noximilien 1:5aa2312d3e94 45
Noximilien 1:5aa2312d3e94 46 void intro();
Noximilien 2:ec89189860e0 47 void pointer(int x, int y);
Noximilien 2:ec89189860e0 48 void pointer_position(int menu_number);
Noximilien 3:10918b0f7a7d 49 void ship_movement();
Noximilien 4:02c63aaa2df9 50 //char line_buffer[MAX_LINE_LENGTH];
Noximilien 2:ec89189860e0 51
Noximilien 4:02c63aaa2df9 52
Noximilien 0:69abdc43ae39 53
Noximilien 4:02c63aaa2df9 54 ScreenOption current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 55
Noximilien 4:02c63aaa2df9 56 void intro();
Noximilien 4:02c63aaa2df9 57
Noximilien 1:5aa2312d3e94 58 int main(){
Noximilien 1:5aa2312d3e94 59 lcd.init();
Noximilien 4:02c63aaa2df9 60 gamepad.init();
Noximilien 17:69a85c909566 61 //gamepad.leds_on();
Noximilien 18:6becc9f9de5e 62 //gamepad.led(1,1.0);
Noximilien 1:5aa2312d3e94 63
Noximilien 1:5aa2312d3e94 64 intro();
Noximilien 17:69a85c909566 65 srand(rand_y * 1000000); //Makeing the generated y position for the enemy to be trully random.
Noximilien 1:5aa2312d3e94 66
Noximilien 4:02c63aaa2df9 67 while(1){ //Waiting for the option "start game" to be selected and for the button B to be pressed
Noximilien 1:5aa2312d3e94 68 lcd.clear();
Noximilien 2:ec89189860e0 69
Noximilien 4:02c63aaa2df9 70 if (current_screen == ScreenOption_Game) {
Noximilien 19:b78fa41d04a9 71 bool game_is_paused = game.updateAndDraw();
Noximilien 19:b78fa41d04a9 72
Noximilien 19:b78fa41d04a9 73 if (game_is_paused) {
Noximilien 4:02c63aaa2df9 74 current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 75 }
Noximilien 4:02c63aaa2df9 76 }
Noximilien 4:02c63aaa2df9 77 else if (current_screen == ScreenOption_Menu) {
Noximilien 4:02c63aaa2df9 78 bool wantsToChangeScreen = menu.updateAndDraw();
Noximilien 4:02c63aaa2df9 79 if (wantsToChangeScreen) {
Noximilien 4:02c63aaa2df9 80 current_screen = menu.getCurrentScreenSelection();
Noximilien 4:02c63aaa2df9 81 }
Noximilien 2:ec89189860e0 82 }
Noximilien 19:b78fa41d04a9 83 bool game_over = game.checkGameOver();
Noximilien 19:b78fa41d04a9 84 if (game_over){
Noximilien 19:b78fa41d04a9 85 lcd.clear();
Noximilien 19:b78fa41d04a9 86 lcd.printString("GameOver",0,1);
Noximilien 19:b78fa41d04a9 87 lcd.refresh();
Noximilien 19:b78fa41d04a9 88 wait(1);
Noximilien 19:b78fa41d04a9 89 lcd.printString("Press Y",0,4);
Noximilien 19:b78fa41d04a9 90 lcd.printString("to restart",0,5);
Noximilien 19:b78fa41d04a9 91 lcd.refresh();
Noximilien 19:b78fa41d04a9 92 bool led_state = false;
Noximilien 19:b78fa41d04a9 93 while (!gamepad.check_event(gamepad.Y_PRESSED)){//////////////////////////////
Noximilien 19:b78fa41d04a9 94 gamepad.led(1,(float)led_state);
Noximilien 19:b78fa41d04a9 95 gamepad.led(2,(float)!led_state);
Noximilien 19:b78fa41d04a9 96 gamepad.led(3,(float)led_state);
Noximilien 19:b78fa41d04a9 97 gamepad.led(4,(float)!led_state);
Noximilien 19:b78fa41d04a9 98 gamepad.led(5,(float)led_state);
Noximilien 19:b78fa41d04a9 99 gamepad.led(6,(float)!led_state);
Noximilien 19:b78fa41d04a9 100 wait(0.5);
Noximilien 19:b78fa41d04a9 101 led_state = !led_state;
Noximilien 19:b78fa41d04a9 102 }
Noximilien 20:557e84189a57 103 //game.gameValuesInit();
Noximilien 19:b78fa41d04a9 104 current_screen = ScreenOption_Menu;
Noximilien 19:b78fa41d04a9 105 }
Noximilien 2:ec89189860e0 106
Noximilien 1:5aa2312d3e94 107 lcd.refresh();
Noximilien 14:e8de27c4d0d4 108 wait_ms(1000/fps);
Noximilien 1:5aa2312d3e94 109 }
Noximilien 1:5aa2312d3e94 110 }
Noximilien 1:5aa2312d3e94 111
Noximilien 19:b78fa41d04a9 112 void intro(){
Noximilien 20:557e84189a57 113 lineOne.x = -63; // The width of the sprite.
Noximilien 20:557e84189a57 114 lineOne.y = 1; // This just will be an intro for the game.//////////////////
Noximilien 20:557e84189a57 115 lineOneStars.x = screen_width;
Noximilien 20:557e84189a57 116 lineOneStars.y = 1;
Noximilien 19:b78fa41d04a9 117
Noximilien 20:557e84189a57 118 lineTwo.y = 15;
Noximilien 20:557e84189a57 119 lineTwo.x = screen_width;
Noximilien 20:557e84189a57 120 lineTwoShips.x = -46; // Starting position outside the screen limits, with the length of the sprite.
Noximilien 20:557e84189a57 121 lineTwoShips.y = 14; // the height of the "The last One" and a few pixels for gaps.
Noximilien 20:557e84189a57 122
Noximilien 20:557e84189a57 123 lineThree.x = 2;
Noximilien 20:557e84189a57 124 lineThree.y = screen_height; // Starting outside the screen limits on the botto - the screen's height + the sprite's height.
Noximilien 20:557e84189a57 125
Noximilien 20:557e84189a57 126 // the width of the lione one + 2.
Noximilien 20:557e84189a57 127 for (int i = 0; i < 65; i++){
Noximilien 19:b78fa41d04a9 128 lcd.clear();
Noximilien 20:557e84189a57 129 lineOne.x +=1;
Noximilien 20:557e84189a57 130 if (lineOneStars.x > 70){
Noximilien 20:557e84189a57 131 lineOneStars.x -= 1;
Noximilien 20:557e84189a57 132 }
Noximilien 20:557e84189a57 133 // to stop moving at the position of its width.
Noximilien 20:557e84189a57 134 if (lineTwo.x > screen_width - 30){//
Noximilien 20:557e84189a57 135 lineTwo.x -=1;
Noximilien 20:557e84189a57 136 }
Noximilien 20:557e84189a57 137 if ( lineTwoShips.x < 0){
Noximilien 20:557e84189a57 138 lineTwoShips.x += 1;
Noximilien 20:557e84189a57 139 }
Noximilien 20:557e84189a57 140
Noximilien 20:557e84189a57 141 lcd.drawSprite(lineOne.x, lineOne.y, 11, 63, (int*)introLineOne);
Noximilien 20:557e84189a57 142 lcd.drawSprite(lineOneStars.x, lineOneStars.y, 13, 12, (int*)introLineOneStars);
Noximilien 20:557e84189a57 143 lcd.drawSprite(lineTwo.x, lineTwo.y, 11, 30, (int*)introLineTwo);
Noximilien 20:557e84189a57 144 lcd.drawSprite(lineTwoShips.x, lineTwoShips.y, 10, 46, (int*)introLineTwoShips);
Noximilien 20:557e84189a57 145
Noximilien 19:b78fa41d04a9 146 lcd.refresh();
Noximilien 20:557e84189a57 147 wait(0.01);
Noximilien 20:557e84189a57 148 }
Noximilien 20:557e84189a57 149
Noximilien 20:557e84189a57 150 //Stop just a few pixels above the bottom screen border.
Noximilien 20:557e84189a57 151 for (int i = 0; i < 19 + 3; i++){
Noximilien 20:557e84189a57 152 lcd.clear();
Noximilien 20:557e84189a57 153
Noximilien 20:557e84189a57 154 lcd.drawSprite(lineOne.x, lineOne.y, 11, 63, (int*)introLineOne);
Noximilien 20:557e84189a57 155 lcd.drawSprite(lineOneStars.x, lineOneStars.y, 13, 12, (int*)introLineOneStars);
Noximilien 20:557e84189a57 156 lcd.drawSprite(lineTwo.x, lineTwo.y, 11, 30, (int*)introLineTwo);
Noximilien 20:557e84189a57 157 lcd.drawSprite(lineTwoShips.x, lineTwoShips.y, 10, 46, (int*)introLineTwoShips);
Noximilien 20:557e84189a57 158
Noximilien 20:557e84189a57 159 lcd.drawSprite(lineThree.x, lineThree.y - i, 19, 78, (int*)introLineThree);
Noximilien 20:557e84189a57 160
Noximilien 20:557e84189a57 161 lcd.refresh();
Noximilien 20:557e84189a57 162 wait(0.1);
Noximilien 20:557e84189a57 163 }
Noximilien 20:557e84189a57 164 while (!gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 20:557e84189a57 165 }
Noximilien 19:b78fa41d04a9 166 /*lcd.printString(" StarBarians",1,1);
Noximilien 1:5aa2312d3e94 167 lcd.refresh();
Noximilien 2:ec89189860e0 168 wait(0.5);
Noximilien 1:5aa2312d3e94 169 lcd.printString(" And the quest ",1,2);
Noximilien 4:02c63aaa2df9 170 lcd.printString(" of the Princess Spacecate",1,3);
Noximilien 19:b78fa41d04a9 171 lcd.printString(" Spacecate",1,4);*/
Noximilien 19:b78fa41d04a9 172
Noximilien 4:02c63aaa2df9 173 }