ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Tue May 07 17:21:00 2019 +0000
Revision:
29:bdc4138b5171
Parent:
27:c920c5ec31af
Final Submission. I have read and agreed with the Statement of Academic Integrity.

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