ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Sat May 04 13:26:50 2019 +0000
Revision:
27:c920c5ec31af
Parent:
26:4253656c0755
Child:
29:bdc4138b5171
Updated documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 12:ebaefda53dd0 1 #include "EngineController.h"
lewisgw 12:ebaefda53dd0 2
lewisgw 27:c920c5ec31af 3 // Define sprite array.
lewisgw 12:ebaefda53dd0 4 int intro_text[12][42] = {
lewisgw 21:20478f086bc2 5 { 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,
lewisgw 21:20478f086bc2 6 1,1,1,1 },
lewisgw 21:20478f086bc2 7 { 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,
lewisgw 21:20478f086bc2 8 1,1,1,1 },
lewisgw 21:20478f086bc2 9 { 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,
lewisgw 21:20478f086bc2 10 0,0,1,1 },
lewisgw 21:20478f086bc2 11 { 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,
lewisgw 21:20478f086bc2 12 0,0,1,1 },
lewisgw 21:20478f086bc2 13 { 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,
lewisgw 21:20478f086bc2 14 1,1,1,1 },
lewisgw 21:20478f086bc2 15 { 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,
lewisgw 21:20478f086bc2 16 1,1,1,1 },
lewisgw 21:20478f086bc2 17 { 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,
lewisgw 21:20478f086bc2 18 1,0,0,0 },
lewisgw 21:20478f086bc2 19 { 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,
lewisgw 21:20478f086bc2 20 1,0,0,0 },
lewisgw 21:20478f086bc2 21 { 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,
lewisgw 21:20478f086bc2 22 1,1,0,0 },
lewisgw 21:20478f086bc2 23 { 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,
lewisgw 21:20478f086bc2 24 1,1,0,0 },
lewisgw 21:20478f086bc2 25 { 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,
lewisgw 21:20478f086bc2 26 1,1,1,0 },
lewisgw 21:20478f086bc2 27 { 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,
lewisgw 21:20478f086bc2 28 1,1,1,1 }
lewisgw 12:ebaefda53dd0 29 };
lewisgw 12:ebaefda53dd0 30
lewisgw 21:20478f086bc2 31 // Constructor and destructor.
lewisgw 12:ebaefda53dd0 32 EngineController::EngineController() {}
lewisgw 12:ebaefda53dd0 33
lewisgw 12:ebaefda53dd0 34 EngineController::~EngineController() {}
lewisgw 12:ebaefda53dd0 35
lewisgw 12:ebaefda53dd0 36 void EngineController::init() {
lewisgw 12:ebaefda53dd0 37 _game_engine.init();
lewisgw 12:ebaefda53dd0 38 _game_counter = 0;
lewisgw 17:f377df4ea7b1 39 _speed_divider = 10;
lewisgw 21:20478f086bc2 40 _start_platform_flag = true;
lewisgw 17:f377df4ea7b1 41 _change_speed_flag = false;
lewisgw 12:ebaefda53dd0 42 }
lewisgw 12:ebaefda53dd0 43
lewisgw 12:ebaefda53dd0 44 void EngineController::run_game_engine(N5110 &lcd, Gamepad &gamepad) {
lewisgw 21:20478f086bc2 45 // The main game loop.
lewisgw 21:20478f086bc2 46 check_for_start(lcd, gamepad); // Check to see if it should print starting
lewisgw 21:20478f086bc2 47 // text.
lewisgw 21:20478f086bc2 48 if (_game_counter == 100) _game_counter = 0;
lewisgw 14:9861fe85c803 49 update_game(lcd, gamepad);
lewisgw 21:20478f086bc2 50 if (_game_counter % _speed_divider == 0)
lewisgw 21:20478f086bc2 51 _game_engine.generate_level(_game_counter); // Level speed is determined by
lewisgw 21:20478f086bc2 52 // speed divider.
lewisgw 14:9861fe85c803 53 _game_counter++;
lewisgw 17:f377df4ea7b1 54 _player_score = _game_engine.get_player_score();
lewisgw 21:20478f086bc2 55 _speed_divider = int(-0.25*_player_score + 10); // Speed divider is dependent
lewisgw 21:20478f086bc2 56 // on how many coins you have
lewisgw 14:9861fe85c803 57 }
lewisgw 14:9861fe85c803 58
lewisgw 20:a8cad4e044ea 59 void EngineController::check_for_start(N5110 &lcd, Gamepad &gamepad) {
lewisgw 21:20478f086bc2 60 // Print the intro text if the game has just started or jump has not been
lewisgw 21:20478f086bc2 61 // pressed.
lewisgw 21:20478f086bc2 62 if (_start_platform_flag) print_intro_text(lcd);
lewisgw 21:20478f086bc2 63 _game_engine.check_reset(lcd, gamepad); // Resets the game if skater has
lewisgw 21:20478f086bc2 64 // died.
lewisgw 21:20478f086bc2 65 _start_platform_flag = _game_engine.get_start_platform_flag(); // Returns
lewisgw 21:20478f086bc2 66 // false when jump is pressed.
lewisgw 14:9861fe85c803 67 }
lewisgw 14:9861fe85c803 68
lewisgw 14:9861fe85c803 69 void EngineController::print_intro_text(N5110 &lcd) {
lewisgw 14:9861fe85c803 70 lcd.drawLine(0,17,80,17,FILL_WHITE);
lewisgw 14:9861fe85c803 71 lcd.drawSprite(40,4,12,42,(int *)intro_text);
lewisgw 14:9861fe85c803 72 }
lewisgw 14:9861fe85c803 73
lewisgw 14:9861fe85c803 74 void EngineController::update_game(N5110 &lcd, Gamepad &gamepad) {
lewisgw 14:9861fe85c803 75 // Run the game engine.
lewisgw 12:ebaefda53dd0 76 _game_engine.read_input(gamepad);
lewisgw 21:20478f086bc2 77 _game_engine.set_level_condition(); // Determines if the skater is under
lewisgw 21:20478f086bc2 78 // upper platforms.
lewisgw 20:a8cad4e044ea 79 _game_engine.process_y(gamepad);
lewisgw 12:ebaefda53dd0 80 _game_engine.process_x(_game_counter);
lewisgw 12:ebaefda53dd0 81 _game_engine.process_sprite();
lewisgw 20:a8cad4e044ea 82 _game_engine.check_coin_collision(gamepad);
lewisgw 26:4253656c0755 83 _game_engine.check_fire_collision(gamepad, _game_counter);
lewisgw 26:4253656c0755 84 _game_engine.update_lcd(lcd, _game_counter);
lewisgw 12:ebaefda53dd0 85 }
lewisgw 21:20478f086bc2 86