Initial publish
Dependencies: mbed
Fork of el17dg by
main/main.cpp@20:557e84189a57, 2019-03-26 (annotated)
- 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?
User | Revision | Line number | New 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 | } |