Initial publish
Dependencies: mbed
Fork of el17dg by
main/main.cpp
- Committer:
- Noximilien
- Date:
- 2019-04-15
- Revision:
- 29:579e00b7f118
- Parent:
- 28:35af3843de8f
- Child:
- 30:d454d0cb72bc
File content as of revision 29:579e00b7f118:
/** ELEC2645 Embedded Systems Project School of Electronic & Electrical Engineering University of Leeds Name: Dmitrijs Griskovs Username: el17dg Student ID Number: 201160286 date: start - 25/02/2019 */ #include "constants.h" #include "main.h" #include "game.h" #include "menu.h" #include "models.h" #include "tutorial.h" #include "gameobject.h" N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); AnalogIn pot(PTB2); AnalogIn x_dir(PTB11); AnalogIn y_dir(PTB10); AnalogIn rand_y(PTB3); Menu menu; Game game; Tutorial tutorial; Gamepad gamepad; GameObject lineOne; GameObject lineOneStars; GameObject lineTwo; GameObject lineTwoShips; GameObject lineThree; void setupIntroValues(); void updateAndDrawIntroPartOne(); void updateAndDrawIntroPartTwo(); void introPartOneText(); void intro(); void pointer(int x, int y); void pointer_position(int menu_number); void ship_movement(); void menuSelection(); ScreenOption current_screen = ScreenOption_Menu; void intro(); int main(){ lcd.init(); gamepad.init(); //printf("Intro starts\n"); intro(); srand(rand_y * 1000000); //Makeing the generated y position for the enemy to be trully random. while(1){ //Waiting for the option "start game" to be selected and for the button B to be pressed lcd.clear(); menuSelection(); lcd.refresh(); wait_ms(1000/fps); } } void intro(){ setupIntroValues(); int start_game_text_counter = 0; updateAndDrawIntroPartOne(); updateAndDrawIntroPartTwo(); wait(1); //Stop just a few pixels above the bottom screen border. while (!gamepad.check_event(gamepad.START_PRESSED)){ lcd.clear(); introPartOneText(); if (start_game_text_counter >= 2){ lcd.printString("Press START",10,5); if (start_game_text_counter == 4){start_game_text_counter = 0;} } start_game_text_counter += 1; lcd.refresh(); } } void setupIntroValues(){ lineOne.pos.x = -63; // The width of the sprite. lineOne.pos.y = 1; // This just will be an intro for the game.////////////////// lineOneStars.pos.x = screen_width; lineOneStars.pos.y = 1; lineTwo.pos.y = 15; lineTwo.pos.x = screen_width; lineTwoShips.pos.x = -46; // Starting position outside the screen limits, with the length of the sprite. lineTwoShips.pos.y = 14; // the height of the "The last One" and a few pixels for gaps. lineThree.pos.x = 2; lineThree.pos.y = screen_height; // Starting outside the screen limits on the botto - the screen's height + the sprite's height. } void updateAndDrawIntroPartOne(){ // the width of the line one + 2. for (int i = 0; i < 65; i++){ lcd.clear(); lineOne.pos.x +=1; if (lineOneStars.pos.x > 70){ lineOneStars.pos.x -= 1; } // to stop moving at the position of its width. if (lineTwo.pos.x > screen_width - 30){ lineTwo.pos.x -=1; } if (lineTwoShips.pos.x < 0){ lineTwoShips.pos.x += 1; } introPartOneText(); lcd.refresh(); wait(0.01); } } void updateAndDrawIntroPartTwo(){ for (int i = 0; i < 19 + 3; i++){ lcd.clear(); lineThree.pos.y -= 1; introPartOneText(); drawSprite(lineThree.pos, intro_line_three_sprite); lcd.refresh(); wait(0.1); } } /**@brief * I have put the upper part of the intro into a separate function because it * it is being called several times in this file */ void introPartOneText(){ drawSprite(lineOne.pos, intro_line_one_sprite); drawSprite(lineOneStars.pos, intro_line_one_stars_sprite); drawSprite(lineTwo.pos, intro_line_two_sprite); drawSprite(lineTwoShips.pos, intro_line_two_ships_sprite); } void menuSelection(){ if (current_screen == ScreenOption_Game) { bool game_is_paused = game.updateAndDraw(); if (game_is_paused) { current_screen = ScreenOption_Menu; } } if (current_screen == ScreenOption_Tutorial) { bool back_to_menu = tutorial.updateAndWriteTutorial(); if (back_to_menu) { current_screen = ScreenOption_Menu; } } else if (current_screen == ScreenOption_Menu) { bool wantsToChangeScreen = menu.updateAndDraw(); if (wantsToChangeScreen) { current_screen = menu.getCurrentScreenSelection(); } } }