ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Thu Apr 11 11:37:49 2019 +0000
Revision:
17:f377df4ea7b1
Parent:
16:331be5c7ed80
Child:
18:304700b5d8f8
Ball of fire moves up and down the screen, platforms and ball move faster as you collect more coins to make the game more challenging.

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 16:331be5c7ed80 64 _game_engine.check_spikes_collision();
lewisgw 12:ebaefda53dd0 65 _game_engine.update_lcd(lcd);
lewisgw 12:ebaefda53dd0 66 }