ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Fri Apr 12 11:30:25 2019 +0000
Revision:
18:304700b5d8f8
Parent:
17:f377df4ea7b1
Child:
20:a8cad4e044ea
Added a large menu artwork and re-named variables and functions to make the code more readable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 12:ebaefda53dd0 1 #include "EngineController.h"
lewisgw 12:ebaefda53dd0 2
lewisgw 12:ebaefda53dd0 3 int intro_text[12][42] = {
lewisgw 12:ebaefda53dd0 4 { 1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
lewisgw 12:ebaefda53dd0 5 { 1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
lewisgw 12:ebaefda53dd0 6 { 1,1,0,0,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1 },
lewisgw 12:ebaefda53dd0 7 { 1,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1 },
lewisgw 12:ebaefda53dd0 8 { 1,1,0,0,0,0,0,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1 },
lewisgw 12:ebaefda53dd0 9 { 1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
lewisgw 12:ebaefda53dd0 10 { 1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0 },
lewisgw 12:ebaefda53dd0 11 { 0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0 },
lewisgw 12:ebaefda53dd0 12 { 0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0 },
lewisgw 12:ebaefda53dd0 13 { 0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0 },
lewisgw 12:ebaefda53dd0 14 { 1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0 },
lewisgw 12:ebaefda53dd0 15 { 1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1 }
lewisgw 12:ebaefda53dd0 16 };
lewisgw 12:ebaefda53dd0 17
lewisgw 14:9861fe85c803 18 // Constructor and destructor
lewisgw 12:ebaefda53dd0 19 EngineController::EngineController() {}
lewisgw 12:ebaefda53dd0 20
lewisgw 12:ebaefda53dd0 21 EngineController::~EngineController() {}
lewisgw 12:ebaefda53dd0 22
lewisgw 12:ebaefda53dd0 23 void EngineController::init() {
lewisgw 14:9861fe85c803 24 // Initialise the game engine, game counter and starting text flag.
lewisgw 12:ebaefda53dd0 25 _game_engine.init();
lewisgw 12:ebaefda53dd0 26 _game_counter = 0;
lewisgw 17:f377df4ea7b1 27 _speed_divider = 10;
lewisgw 12:ebaefda53dd0 28 _start_platform = true;
lewisgw 17:f377df4ea7b1 29 _change_speed_flag = false;
lewisgw 12:ebaefda53dd0 30 }
lewisgw 12:ebaefda53dd0 31
lewisgw 12:ebaefda53dd0 32 void EngineController::run_game_engine(N5110 &lcd, Gamepad &gamepad) {
lewisgw 14:9861fe85c803 33 // The main game loop that first checks if the game has just started and runs
lewisgw 14:9861fe85c803 34 // the game.
lewisgw 14:9861fe85c803 35 check_for_start(lcd);
lewisgw 17:f377df4ea7b1 36 if(_game_counter == 100) _game_counter = 0;
lewisgw 14:9861fe85c803 37 update_game(lcd, gamepad);
lewisgw 17:f377df4ea7b1 38 if (_game_counter % _speed_divider == 0) _game_engine.generate_level(_game_counter);
lewisgw 14:9861fe85c803 39 _game_counter++;
lewisgw 17:f377df4ea7b1 40 _player_score = _game_engine.get_player_score();
lewisgw 17:f377df4ea7b1 41 _speed_divider = int(-0.25*_player_score + 10);
lewisgw 14:9861fe85c803 42 }
lewisgw 14:9861fe85c803 43
lewisgw 14:9861fe85c803 44 void EngineController::check_for_start(N5110 &lcd) {
lewisgw 14:9861fe85c803 45 // Print the intro text if the game has just started.
lewisgw 12:ebaefda53dd0 46 if(_start_platform) print_intro_text(lcd);
lewisgw 17:f377df4ea7b1 47 _game_engine.check_reset(lcd);
lewisgw 14:9861fe85c803 48 _start_platform = _game_engine.get_start_platform();
lewisgw 14:9861fe85c803 49 }
lewisgw 14:9861fe85c803 50
lewisgw 14:9861fe85c803 51 void EngineController::print_intro_text(N5110 &lcd) {
lewisgw 14:9861fe85c803 52 lcd.drawLine(0,17,80,17,FILL_WHITE);
lewisgw 14:9861fe85c803 53 lcd.drawSprite(40,4,12,42,(int *)intro_text);
lewisgw 14:9861fe85c803 54 }
lewisgw 14:9861fe85c803 55
lewisgw 14:9861fe85c803 56 void EngineController::update_game(N5110 &lcd, Gamepad &gamepad) {
lewisgw 14:9861fe85c803 57 // Run the game engine.
lewisgw 12:ebaefda53dd0 58 _game_engine.read_input(gamepad);
lewisgw 12:ebaefda53dd0 59 _game_engine.set_level_condition();
lewisgw 12:ebaefda53dd0 60 _game_engine.process_y();
lewisgw 12:ebaefda53dd0 61 _game_engine.process_x(_game_counter);
lewisgw 12:ebaefda53dd0 62 _game_engine.process_sprite();
lewisgw 15:876c047a6ec9 63 _game_engine.check_coin_collision();
lewisgw 18:304700b5d8f8 64 _game_engine.check_fire_collision();
lewisgw 12:ebaefda53dd0 65 _game_engine.update_lcd(lcd);
lewisgw 12:ebaefda53dd0 66 }