ELEC2645 (2018/19) / Mbed 2 deprecated el17kz

Dependencies:   mbed

Committer:
kamtas
Date:
Thu May 09 15:39:17 2019 +0000
Revision:
8:5fde4e54a2f4
Parent:
5:df0bf821b4cc
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kamtas 2:1900a4144537 1 #include "GameEngine.h"
kamtas 2:1900a4144537 2
kamtas 2:1900a4144537 3 GameEngine::GameEngine()
kamtas 2:1900a4144537 4 {
kamtas 2:1900a4144537 5
kamtas 2:1900a4144537 6 }
kamtas 2:1900a4144537 7
kamtas 2:1900a4144537 8 GameEngine::~GameEngine()
kamtas 2:1900a4144537 9 {
kamtas 2:1900a4144537 10
kamtas 2:1900a4144537 11 }
kamtas 2:1900a4144537 12
kamtas 3:59e67155e2dd 13 void GameEngine::init(int runner_width,int runner_height, int obstacle_width, int obstacle_height)
kamtas 2:1900a4144537 14 {
kamtas 2:1900a4144537 15 // initialise the game parameters
kamtas 2:1900a4144537 16 _runner_width = runner_width;
kamtas 2:1900a4144537 17 _runner_height = runner_height;
kamtas 3:59e67155e2dd 18
kamtas 3:59e67155e2dd 19 _obstacle_width = obstacle_width;
kamtas 3:59e67155e2dd 20 _obstacle_height = obstacle_height;
kamtas 2:1900a4144537 21
kamtas 2:1900a4144537 22 // x position on screen - WIDTH is defined in N5110.h
kamtas 5:df0bf821b4cc 23 _rx = START;
kamtas 2:1900a4144537 24
kamtas 3:59e67155e2dd 25 _o1y = 32;
kamtas 3:59e67155e2dd 26 // _o2y = 25;
kamtas 3:59e67155e2dd 27
kamtas 2:1900a4144537 28 _r.init(_rx,_runner_height,_runner_width);
kamtas 3:59e67155e2dd 29
kamtas 3:59e67155e2dd 30 _o1.init(_o1y,_obstacle_height,_obstacle_width);
kamtas 2:1900a4144537 31 }
kamtas 2:1900a4144537 32
kamtas 2:1900a4144537 33 void GameEngine::read_input(Gamepad &pad)
kamtas 2:1900a4144537 34 {
kamtas 3:59e67155e2dd 35 _j = pad.check_event(Gamepad::Y_PRESSED);
kamtas 5:df0bf821b4cc 36 _ran = true;
kamtas 2:1900a4144537 37 }
kamtas 2:1900a4144537 38
kamtas 2:1900a4144537 39 void GameEngine::draw(N5110 &lcd)
kamtas 2:1900a4144537 40 {
kamtas 2:1900a4144537 41 // draw the elements in the LCD buffer
kamtas 2:1900a4144537 42 lcd.drawLine(0,FLOOR,WIDTH,FLOOR,1);
kamtas 2:1900a4144537 43
kamtas 5:df0bf821b4cc 44 print_scores(lcd);
kamtas 5:df0bf821b4cc 45
kamtas 2:1900a4144537 46 _r.draw(lcd);
kamtas 3:59e67155e2dd 47
kamtas 3:59e67155e2dd 48 _o1.draw(lcd);
kamtas 2:1900a4144537 49 }
kamtas 2:1900a4144537 50
kamtas 2:1900a4144537 51 void GameEngine::update(Gamepad &pad)
kamtas 2:1900a4144537 52 {
kamtas 5:df0bf821b4cc 53 check_pass(pad);
kamtas 5:df0bf821b4cc 54
kamtas 3:59e67155e2dd 55 _r.update(_j);
kamtas 3:59e67155e2dd 56
kamtas 4:7fca66882a00 57 _o1.update(_ran);
kamtas 5:df0bf821b4cc 58
kamtas 5:df0bf821b4cc 59 check_obstacle_collisions(pad);
kamtas 5:df0bf821b4cc 60
kamtas 2:1900a4144537 61 }
kamtas 5:df0bf821b4cc 62
kamtas 5:df0bf821b4cc 63 void GameEngine::check_obstacle_collisions(Gamepad &pad)
kamtas 5:df0bf821b4cc 64 {
kamtas 5:df0bf821b4cc 65 Vector2D o1_pos = _o1.get_pos();
kamtas 8:5fde4e54a2f4 66
kamtas 5:df0bf821b4cc 67 Vector2D r_pos = _r.get_pos();
kamtas 5:df0bf821b4cc 68
kamtas 5:df0bf821b4cc 69 // see if obstacle has hit the runner by checking for overlaps
kamtas 5:df0bf821b4cc 70 if (
kamtas 5:df0bf821b4cc 71 (o1_pos.y >= r_pos.y) && //top
kamtas 5:df0bf821b4cc 72 (o1_pos.y <= r_pos.y + _runner_height) && //bottom
kamtas 5:df0bf821b4cc 73 (o1_pos.x >= _rx) && //left
kamtas 5:df0bf821b4cc 74 (o1_pos.x <= _rx + _runner_width) //right
kamtas 5:df0bf821b4cc 75 ) {
kamtas 8:5fde4e54a2f4 76 pad.tone(1200.0,1.0); // audio feedback
kamtas 5:df0bf821b4cc 77 while(1) {
kamtas 5:df0bf821b4cc 78 pad.leds_on();
kamtas 5:df0bf821b4cc 79 }
kamtas 5:df0bf821b4cc 80 }
kamtas 5:df0bf821b4cc 81
kamtas 5:df0bf821b4cc 82
kamtas 5:df0bf821b4cc 83 }
kamtas 5:df0bf821b4cc 84
kamtas 5:df0bf821b4cc 85 void GameEngine::check_pass(Gamepad &pad)
kamtas 5:df0bf821b4cc 86 {
kamtas 5:df0bf821b4cc 87 Vector2D o1_pos = _o1.get_pos();
kamtas 5:df0bf821b4cc 88 if (o1_pos.x == START - 5) {
kamtas 5:df0bf821b4cc 89 _r.add_score();
kamtas 5:df0bf821b4cc 90 pad.tone(1500.0,0.3);
kamtas 5:df0bf821b4cc 91 }
kamtas 5:df0bf821b4cc 92
kamtas 5:df0bf821b4cc 93 }
kamtas 5:df0bf821b4cc 94
kamtas 5:df0bf821b4cc 95 void GameEngine::print_scores(N5110 &lcd)
kamtas 5:df0bf821b4cc 96 {
kamtas 5:df0bf821b4cc 97 // get score
kamtas 5:df0bf821b4cc 98 int r_score = _r.get_score();
kamtas 5:df0bf821b4cc 99
kamtas 8:5fde4e54a2f4 100 // print to LCD
kamtas 5:df0bf821b4cc 101 char buffer1[14];
kamtas 5:df0bf821b4cc 102 sprintf(buffer1,"%2d",r_score);
kamtas 5:df0bf821b4cc 103 lcd.printString(buffer1,WIDTH/2 - 20,1); // font is 8 wide, so leave 4 pixel gape from middle assuming two digits
kamtas 8:5fde4e54a2f4 104
kamtas 5:df0bf821b4cc 105 }