ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Sat Apr 20 14:46:50 2019 +0000
Revision:
21:20478f086bc2
Parent:
20:a8cad4e044ea
Child:
26:4253656c0755
Fully documented and commented all classes and functions

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