ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Wed Apr 10 13:40:58 2019 +0000
Revision:
16:331be5c7ed80
Parent:
15:876c047a6ec9
Child:
17:f377df4ea7b1
Now a rotating 'ball of fire' that moves across the screen to duck and dodge. The game ends if you hit it.

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 12:ebaefda53dd0 27 _start_platform = true;
lewisgw 12:ebaefda53dd0 28 }
lewisgw 12:ebaefda53dd0 29
lewisgw 12:ebaefda53dd0 30 void EngineController::run_game_engine(N5110 &lcd, Gamepad &gamepad) {
lewisgw 14:9861fe85c803 31 // The main game loop that first checks if the game has just started and runs
lewisgw 14:9861fe85c803 32 // the game.
lewisgw 14:9861fe85c803 33 check_for_start(lcd);
lewisgw 14:9861fe85c803 34 update_game(lcd, gamepad);
lewisgw 14:9861fe85c803 35 if(_game_counter == 100) _game_counter = 0;
lewisgw 16:331be5c7ed80 36 if (_game_counter % 10 == 0) _game_engine.generate_level();
lewisgw 14:9861fe85c803 37 _game_counter++;
lewisgw 14:9861fe85c803 38 }
lewisgw 14:9861fe85c803 39
lewisgw 14:9861fe85c803 40 void EngineController::check_for_start(N5110 &lcd) {
lewisgw 14:9861fe85c803 41 // Print the intro text if the game has just started.
lewisgw 12:ebaefda53dd0 42 if(_start_platform) print_intro_text(lcd);
lewisgw 12:ebaefda53dd0 43 _game_engine.check_reset();
lewisgw 14:9861fe85c803 44 _start_platform = _game_engine.get_start_platform();
lewisgw 14:9861fe85c803 45 }
lewisgw 14:9861fe85c803 46
lewisgw 14:9861fe85c803 47 void EngineController::print_intro_text(N5110 &lcd) {
lewisgw 14:9861fe85c803 48 lcd.drawLine(0,17,80,17,FILL_WHITE);
lewisgw 14:9861fe85c803 49 lcd.drawSprite(40,4,12,42,(int *)intro_text);
lewisgw 14:9861fe85c803 50 }
lewisgw 14:9861fe85c803 51
lewisgw 14:9861fe85c803 52 void EngineController::update_game(N5110 &lcd, Gamepad &gamepad) {
lewisgw 14:9861fe85c803 53 // Run the game engine.
lewisgw 12:ebaefda53dd0 54 _game_engine.read_input(gamepad);
lewisgw 12:ebaefda53dd0 55 _game_engine.set_level_condition();
lewisgw 12:ebaefda53dd0 56 _game_engine.process_y();
lewisgw 12:ebaefda53dd0 57 _game_engine.process_x(_game_counter);
lewisgw 12:ebaefda53dd0 58 _game_engine.process_sprite();
lewisgw 15:876c047a6ec9 59 _game_engine.check_coin_collision();
lewisgw 16:331be5c7ed80 60 _game_engine.check_spikes_collision();
lewisgw 12:ebaefda53dd0 61 _game_engine.update_lcd(lcd);
lewisgw 12:ebaefda53dd0 62 }