Initial publish

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Committer:
Noximilien
Date:
Sun Mar 31 01:04:59 2019 +0000
Revision:
23:240bc00ef25b
Parent:
21:0eb394495b8a
Child:
24:0570cb4b92d7
Made player class and stored everything related to player. Have made stars class. modified player ship movement. created gameOver function and made it using sprites. Created a collision of enemy ship and a player ship function. added more comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Noximilien 23:240bc00ef25b 1 /**
Noximilien 23:240bc00ef25b 2 ELEC2645 Embedded Systems Project
Noximilien 23:240bc00ef25b 3 School of Electronic & Electrical Engineering
Noximilien 23:240bc00ef25b 4 University of Leeds
Noximilien 23:240bc00ef25b 5 Name: Dmitrijs Griskovs
Noximilien 23:240bc00ef25b 6 Username: el17dg
Noximilien 23:240bc00ef25b 7 Student ID Number: 201160286
Noximilien 23:240bc00ef25b 8 date: start - 25/02/2019
Noximilien 0:69abdc43ae39 9 */
Noximilien 0:69abdc43ae39 10
Noximilien 21:0eb394495b8a 11 #include "constants.h"
Noximilien 0:69abdc43ae39 12
Noximilien 4:02c63aaa2df9 13 #include "main.h"
Noximilien 3:10918b0f7a7d 14 #include "game.h"
Noximilien 4:02c63aaa2df9 15 #include "menu.h"
Noximilien 19:b78fa41d04a9 16 #include "models.h"
Noximilien 3:10918b0f7a7d 17
Noximilien 0:69abdc43ae39 18
Noximilien 0:69abdc43ae39 19
Noximilien 1:5aa2312d3e94 20 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Noximilien 4:02c63aaa2df9 21
Noximilien 3:10918b0f7a7d 22 Gamepad gamepad;
Noximilien 4:02c63aaa2df9 23
Noximilien 1:5aa2312d3e94 24 AnalogIn pot(PTB2);
Noximilien 2:ec89189860e0 25 AnalogIn x_dir(PTB11);
Noximilien 2:ec89189860e0 26 AnalogIn y_dir(PTB10);
Noximilien 17:69a85c909566 27 AnalogIn rand_y(PTB3);
Noximilien 2:ec89189860e0 28
Noximilien 4:02c63aaa2df9 29 Menu menu;
Noximilien 4:02c63aaa2df9 30 Game game;
Noximilien 4:02c63aaa2df9 31
Noximilien 19:b78fa41d04a9 32 struct IntroMove {
Noximilien 19:b78fa41d04a9 33 int x;
Noximilien 19:b78fa41d04a9 34 int y;
Noximilien 19:b78fa41d04a9 35 };
Noximilien 19:b78fa41d04a9 36
Noximilien 19:b78fa41d04a9 37 IntroMove lineOne;
Noximilien 20:557e84189a57 38 IntroMove lineOneStars;
Noximilien 19:b78fa41d04a9 39 IntroMove lineTwo;
Noximilien 20:557e84189a57 40 IntroMove lineTwoShips;
Noximilien 20:557e84189a57 41 IntroMove lineThree;
Noximilien 20:557e84189a57 42
Noximilien 19:b78fa41d04a9 43
Noximilien 4:02c63aaa2df9 44 //static const unsigned int MAX_LINE_LENGTH = 14;
Noximilien 3:10918b0f7a7d 45
Noximilien 1:5aa2312d3e94 46
Noximilien 1:5aa2312d3e94 47 void intro();
Noximilien 2:ec89189860e0 48 void pointer(int x, int y);
Noximilien 2:ec89189860e0 49 void pointer_position(int menu_number);
Noximilien 3:10918b0f7a7d 50 void ship_movement();
Noximilien 4:02c63aaa2df9 51 //char line_buffer[MAX_LINE_LENGTH];
Noximilien 2:ec89189860e0 52
Noximilien 4:02c63aaa2df9 53
Noximilien 0:69abdc43ae39 54
Noximilien 4:02c63aaa2df9 55 ScreenOption current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 56
Noximilien 4:02c63aaa2df9 57 void intro();
Noximilien 4:02c63aaa2df9 58
Noximilien 1:5aa2312d3e94 59 int main(){
Noximilien 1:5aa2312d3e94 60 lcd.init();
Noximilien 4:02c63aaa2df9 61 gamepad.init();
Noximilien 1:5aa2312d3e94 62
Noximilien 1:5aa2312d3e94 63 intro();
Noximilien 17:69a85c909566 64 srand(rand_y * 1000000); //Makeing the generated y position for the enemy to be trully random.
Noximilien 1:5aa2312d3e94 65
Noximilien 4:02c63aaa2df9 66 while(1){ //Waiting for the option "start game" to be selected and for the button B to be pressed
Noximilien 1:5aa2312d3e94 67 lcd.clear();
Noximilien 2:ec89189860e0 68
Noximilien 4:02c63aaa2df9 69 if (current_screen == ScreenOption_Game) {
Noximilien 19:b78fa41d04a9 70 bool game_is_paused = game.updateAndDraw();
Noximilien 19:b78fa41d04a9 71
Noximilien 19:b78fa41d04a9 72 if (game_is_paused) {
Noximilien 4:02c63aaa2df9 73 current_screen = ScreenOption_Menu;
Noximilien 4:02c63aaa2df9 74 }
Noximilien 4:02c63aaa2df9 75 }
Noximilien 4:02c63aaa2df9 76 else if (current_screen == ScreenOption_Menu) {
Noximilien 4:02c63aaa2df9 77 bool wantsToChangeScreen = menu.updateAndDraw();
Noximilien 4:02c63aaa2df9 78 if (wantsToChangeScreen) {
Noximilien 4:02c63aaa2df9 79 current_screen = menu.getCurrentScreenSelection();
Noximilien 4:02c63aaa2df9 80 }
Noximilien 2:ec89189860e0 81 }
Noximilien 2:ec89189860e0 82
Noximilien 1:5aa2312d3e94 83 lcd.refresh();
Noximilien 14:e8de27c4d0d4 84 wait_ms(1000/fps);
Noximilien 1:5aa2312d3e94 85 }
Noximilien 1:5aa2312d3e94 86 }
Noximilien 1:5aa2312d3e94 87
Noximilien 19:b78fa41d04a9 88 void intro(){
Noximilien 20:557e84189a57 89 lineOne.x = -63; // The width of the sprite.
Noximilien 20:557e84189a57 90 lineOne.y = 1; // This just will be an intro for the game.//////////////////
Noximilien 20:557e84189a57 91 lineOneStars.x = screen_width;
Noximilien 20:557e84189a57 92 lineOneStars.y = 1;
Noximilien 19:b78fa41d04a9 93
Noximilien 20:557e84189a57 94 lineTwo.y = 15;
Noximilien 20:557e84189a57 95 lineTwo.x = screen_width;
Noximilien 20:557e84189a57 96 lineTwoShips.x = -46; // Starting position outside the screen limits, with the length of the sprite.
Noximilien 20:557e84189a57 97 lineTwoShips.y = 14; // the height of the "The last One" and a few pixels for gaps.
Noximilien 20:557e84189a57 98
Noximilien 20:557e84189a57 99 lineThree.x = 2;
Noximilien 20:557e84189a57 100 lineThree.y = screen_height; // Starting outside the screen limits on the botto - the screen's height + the sprite's height.
Noximilien 20:557e84189a57 101
Noximilien 23:240bc00ef25b 102 // the width of the line one + 2.
Noximilien 20:557e84189a57 103 for (int i = 0; i < 65; i++){
Noximilien 19:b78fa41d04a9 104 lcd.clear();
Noximilien 20:557e84189a57 105 lineOne.x +=1;
Noximilien 20:557e84189a57 106 if (lineOneStars.x > 70){
Noximilien 20:557e84189a57 107 lineOneStars.x -= 1;
Noximilien 20:557e84189a57 108 }
Noximilien 20:557e84189a57 109 // to stop moving at the position of its width.
Noximilien 20:557e84189a57 110 if (lineTwo.x > screen_width - 30){//
Noximilien 20:557e84189a57 111 lineTwo.x -=1;
Noximilien 20:557e84189a57 112 }
Noximilien 20:557e84189a57 113 if ( lineTwoShips.x < 0){
Noximilien 20:557e84189a57 114 lineTwoShips.x += 1;
Noximilien 20:557e84189a57 115 }
Noximilien 20:557e84189a57 116
Noximilien 20:557e84189a57 117 lcd.drawSprite(lineOne.x, lineOne.y, 11, 63, (int*)introLineOne);
Noximilien 20:557e84189a57 118 lcd.drawSprite(lineOneStars.x, lineOneStars.y, 13, 12, (int*)introLineOneStars);
Noximilien 20:557e84189a57 119 lcd.drawSprite(lineTwo.x, lineTwo.y, 11, 30, (int*)introLineTwo);
Noximilien 20:557e84189a57 120 lcd.drawSprite(lineTwoShips.x, lineTwoShips.y, 10, 46, (int*)introLineTwoShips);
Noximilien 20:557e84189a57 121
Noximilien 19:b78fa41d04a9 122 lcd.refresh();
Noximilien 20:557e84189a57 123 wait(0.01);
Noximilien 20:557e84189a57 124 }
Noximilien 20:557e84189a57 125
Noximilien 20:557e84189a57 126 //Stop just a few pixels above the bottom screen border.
Noximilien 20:557e84189a57 127 for (int i = 0; i < 19 + 3; i++){
Noximilien 20:557e84189a57 128 lcd.clear();
Noximilien 20:557e84189a57 129
Noximilien 20:557e84189a57 130 lcd.drawSprite(lineOne.x, lineOne.y, 11, 63, (int*)introLineOne);
Noximilien 20:557e84189a57 131 lcd.drawSprite(lineOneStars.x, lineOneStars.y, 13, 12, (int*)introLineOneStars);
Noximilien 20:557e84189a57 132 lcd.drawSprite(lineTwo.x, lineTwo.y, 11, 30, (int*)introLineTwo);
Noximilien 20:557e84189a57 133 lcd.drawSprite(lineTwoShips.x, lineTwoShips.y, 10, 46, (int*)introLineTwoShips);
Noximilien 20:557e84189a57 134
Noximilien 20:557e84189a57 135 lcd.drawSprite(lineThree.x, lineThree.y - i, 19, 78, (int*)introLineThree);
Noximilien 20:557e84189a57 136
Noximilien 20:557e84189a57 137 lcd.refresh();
Noximilien 20:557e84189a57 138 wait(0.1);
Noximilien 20:557e84189a57 139 }
Noximilien 20:557e84189a57 140 while (!gamepad.check_event(gamepad.START_PRESSED)){
Noximilien 20:557e84189a57 141 }
Noximilien 19:b78fa41d04a9 142
Noximilien 4:02c63aaa2df9 143 }