Dependencies:   mbed

Committer:
ale_carb0ni
Date:
Tue May 26 22:53:42 2020 +0000
Revision:
7:8d381315f72c
Parent:
6:a2c72def99f9
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ale_carb0ni 7:8d381315f72c 1 /*
ale_carb0ni 6:a2c72def99f9 2 ELEC2645 Embedded Systems Project
ale_carb0ni 6:a2c72def99f9 3 School of Electronic & Electrical Engineering
ale_carb0ni 6:a2c72def99f9 4 University of Leeds
ale_carb0ni 6:a2c72def99f9 5 2019/20
ale_carb0ni 6:a2c72def99f9 6
ale_carb0ni 6:a2c72def99f9 7 Name: Alessandro Carboni
ale_carb0ni 6:a2c72def99f9 8 Username: el18ac
ale_carb0ni 6:a2c72def99f9 9 Student ID Number: 201253364
ale_carb0ni 6:a2c72def99f9 10 Date: 10/03/2020
ale_carb0ni 6:a2c72def99f9 11 */
ale_carb0ni 6:a2c72def99f9 12
ale_carb0ni 7:8d381315f72c 13 // includes
ale_carb0ni 0:25d71a181bcd 14 #include "mbed.h"
ale_carb0ni 0:25d71a181bcd 15 #include "Gamepad.h"
ale_carb0ni 0:25d71a181bcd 16 #include "N5110.h"
ale_carb0ni 0:25d71a181bcd 17 #include <vector>
ale_carb0ni 2:7fa08670b1fc 18 #include "Menu.h"
ale_carb0ni 2:7fa08670b1fc 19 #include "Game.h"
ale_carb0ni 0:25d71a181bcd 20
ale_carb0ni 7:8d381315f72c 21 //objects
ale_carb0ni 0:25d71a181bcd 22 N5110 lcd;
ale_carb0ni 0:25d71a181bcd 23 Gamepad pad;
ale_carb0ni 2:7fa08670b1fc 24 Menu menu(lcd,pad);
ale_carb0ni 3:c61d0c70eda4 25
ale_carb0ni 0:25d71a181bcd 26
ale_carb0ni 7:8d381315f72c 27 //functions
ale_carb0ni 0:25d71a181bcd 28 void init();
ale_carb0ni 2:7fa08670b1fc 29 void game_function();
ale_carb0ni 1:a084ee340d74 30
ale_carb0ni 3:c61d0c70eda4 31 //variables
ale_carb0ni 3:c61d0c70eda4 32 int g_check = 0;
ale_carb0ni 3:c61d0c70eda4 33
ale_carb0ni 7:8d381315f72c 34
ale_carb0ni 0:25d71a181bcd 35 int main()
ale_carb0ni 0:25d71a181bcd 36 {
ale_carb0ni 7:8d381315f72c 37 //initialises the lcd and the gamepad
ale_carb0ni 0:25d71a181bcd 38 init();
ale_carb0ni 2:7fa08670b1fc 39 lcd.clear();
ale_carb0ni 7:8d381315f72c 40 //creates the initial screen
ale_carb0ni 2:7fa08670b1fc 41 menu.initscreen();
ale_carb0ni 7:8d381315f72c 42 //infinite loop for the game and menu
ale_carb0ni 2:7fa08670b1fc 43 while(1) {
ale_carb0ni 7:8d381315f72c 44 //checks if the gameover function is returning new game or menu
ale_carb0ni 3:c61d0c70eda4 45 if (g_check == 2 || g_check == 0) {
ale_carb0ni 3:c61d0c70eda4 46 menu.menu_screen();
ale_carb0ni 3:c61d0c70eda4 47 game_function();
ale_carb0ni 3:c61d0c70eda4 48 } else if ( g_check == 1) {
ale_carb0ni 3:c61d0c70eda4 49 game_function();
ale_carb0ni 2:7fa08670b1fc 50 }
ale_carb0ni 0:25d71a181bcd 51 }
ale_carb0ni 0:25d71a181bcd 52 }
ale_carb0ni 0:25d71a181bcd 53 void init()
ale_carb0ni 0:25d71a181bcd 54 {
ale_carb0ni 7:8d381315f72c 55 lcd.init();//initialises the screen
ale_carb0ni 7:8d381315f72c 56 pad.init();//initialises the gamepad
ale_carb0ni 0:25d71a181bcd 57 }
ale_carb0ni 0:25d71a181bcd 58
ale_carb0ni 3:c61d0c70eda4 59 void game_function()
ale_carb0ni 3:c61d0c70eda4 60 {
ale_carb0ni 7:8d381315f72c 61 //creates class objects
ale_carb0ni 3:c61d0c70eda4 62 Game game;
ale_carb0ni 3:c61d0c70eda4 63 game.movement(pad);
ale_carb0ni 3:c61d0c70eda4 64 game.draw(lcd, pad);
ale_carb0ni 3:c61d0c70eda4 65 while(1) {
ale_carb0ni 3:c61d0c70eda4 66 lcd.clear();
ale_carb0ni 3:c61d0c70eda4 67 //printf("clear\n");
ale_carb0ni 3:c61d0c70eda4 68 game.movement(pad);
ale_carb0ni 3:c61d0c70eda4 69 //printf("movement\n");
ale_carb0ni 4:17d5b53b8815 70 game.updating_position();
ale_carb0ni 6:a2c72def99f9 71 //printf("updating_position");
ale_carb0ni 3:c61d0c70eda4 72 game.draw(lcd, pad);
ale_carb0ni 3:c61d0c70eda4 73 //printf("draw\n");
ale_carb0ni 7:8d381315f72c 74 /*this part is executed if you die, and
ale_carb0ni 7:8d381315f72c 75 chose to return to the main menu*/
ale_carb0ni 3:c61d0c70eda4 76 if (game.death(lcd, pad) == 2) {
ale_carb0ni 7:8d381315f72c 77 g_check = 2;
ale_carb0ni 7:8d381315f72c 78 break;
ale_carb0ni 7:8d381315f72c 79 /*this part is executed if you die, and
ale_carb0ni 7:8d381315f72c 80 chose to play again*/
ale_carb0ni 3:c61d0c70eda4 81 } else if (game.death(lcd, pad) == 1) {
ale_carb0ni 7:8d381315f72c 82 g_check = 1;
ale_carb0ni 7:8d381315f72c 83 break;
ale_carb0ni 3:c61d0c70eda4 84 }
ale_carb0ni 3:c61d0c70eda4 85 //printf("death\n");
ale_carb0ni 3:c61d0c70eda4 86 game.point(lcd, pad);
ale_carb0ni 3:c61d0c70eda4 87 //printf("point\n");
ale_carb0ni 3:c61d0c70eda4 88 lcd.refresh();
ale_carb0ni 7:8d381315f72c 89 /*based on the value of the potentiometer
ale_carb0ni 7:8d381315f72c 90 the refresh rate can be increased and
ale_carb0ni 7:8d381315f72c 91 by doing so you can increase the speed*/
ale_carb0ni 7:8d381315f72c 92 for(int i = 0; i < pad.read_pot2()*50; i++) {
ale_carb0ni 7:8d381315f72c 93 wait(0.01);
ale_carb0ni 4:17d5b53b8815 94 game.movement(pad);
ale_carb0ni 4:17d5b53b8815 95 }
ale_carb0ni 3:c61d0c70eda4 96 }
ale_carb0ni 3:c61d0c70eda4 97 }
ale_carb0ni 3:c61d0c70eda4 98