Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
GameEngine/GameEngine.cpp@8:5fde4e54a2f4, 2019-05-09 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |