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@9:f0213e632379, 2020-05-22 (annotated)
- Committer:
- sdlashmar
- Date:
- Fri May 22 11:08:40 2020 +0000
- Revision:
- 9:f0213e632379
- Parent:
- 8:1e4182ebb063
- Child:
- 10:3958fb08696d
GAME OVER FUNCTION NOW WORKING
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sdlashmar | 7:c67a5c6a874f | 1 | #include "GameEngine.h" |
sdlashmar | 7:c67a5c6a874f | 2 | |
sdlashmar | 7:c67a5c6a874f | 3 | GameEngine::GameEngine() |
sdlashmar | 7:c67a5c6a874f | 4 | { |
sdlashmar | 7:c67a5c6a874f | 5 | |
sdlashmar | 7:c67a5c6a874f | 6 | } |
sdlashmar | 7:c67a5c6a874f | 7 | |
sdlashmar | 7:c67a5c6a874f | 8 | GameEngine::~GameEngine() |
sdlashmar | 7:c67a5c6a874f | 9 | { |
sdlashmar | 7:c67a5c6a874f | 10 | |
sdlashmar | 7:c67a5c6a874f | 11 | } |
sdlashmar | 7:c67a5c6a874f | 12 | |
sdlashmar | 7:c67a5c6a874f | 13 | void GameEngine::init(int head_size, int head_speed) |
sdlashmar | 7:c67a5c6a874f | 14 | { |
sdlashmar | 9:f0213e632379 | 15 | _game_over = false; |
sdlashmar | 7:c67a5c6a874f | 16 | _score = 0; |
sdlashmar | 8:1e4182ebb063 | 17 | _mouse = 0; |
sdlashmar | 7:c67a5c6a874f | 18 | _head_size = head_size; |
sdlashmar | 7:c67a5c6a874f | 19 | _head_speed = head_speed; |
sdlashmar | 7:c67a5c6a874f | 20 | |
sdlashmar | 7:c67a5c6a874f | 21 | head.init(_head_size, _head_speed); |
sdlashmar | 7:c67a5c6a874f | 22 | |
sdlashmar | 7:c67a5c6a874f | 23 | } |
sdlashmar | 7:c67a5c6a874f | 24 | |
sdlashmar | 7:c67a5c6a874f | 25 | void GameEngine::read_input(Gamepad& pad) |
sdlashmar | 7:c67a5c6a874f | 26 | { |
sdlashmar | 7:c67a5c6a874f | 27 | _d = pad.get_direction(); |
sdlashmar | 7:c67a5c6a874f | 28 | } |
sdlashmar | 7:c67a5c6a874f | 29 | |
sdlashmar | 7:c67a5c6a874f | 30 | void GameEngine::update(Gamepad &pad, N5110 &lcd) |
sdlashmar | 7:c67a5c6a874f | 31 | { |
sdlashmar | 7:c67a5c6a874f | 32 | head.change_direction(_d); |
sdlashmar | 7:c67a5c6a874f | 33 | head.update(); |
sdlashmar | 7:c67a5c6a874f | 34 | check_mouse_eaten(pad); |
sdlashmar | 7:c67a5c6a874f | 35 | check_wall_collision(pad, lcd); |
sdlashmar | 7:c67a5c6a874f | 36 | } |
sdlashmar | 7:c67a5c6a874f | 37 | |
sdlashmar | 7:c67a5c6a874f | 38 | void GameEngine::draw(N5110 &lcd) |
sdlashmar | 7:c67a5c6a874f | 39 | { |
sdlashmar | 7:c67a5c6a874f | 40 | lcd.drawRect(0, 0, WIDTH, HEIGHT, FILL_TRANSPARENT); |
sdlashmar | 7:c67a5c6a874f | 41 | head.draw(lcd); |
sdlashmar | 9:f0213e632379 | 42 | if (_mouse < 1) { |
sdlashmar | 9:f0213e632379 | 43 | spawn_mouse(lcd); |
sdlashmar | 9:f0213e632379 | 44 | }; |
sdlashmar | 7:c67a5c6a874f | 45 | } |
sdlashmar | 7:c67a5c6a874f | 46 | |
sdlashmar | 7:c67a5c6a874f | 47 | void GameEngine::spawn_mouse(N5110 &lcd) |
sdlashmar | 7:c67a5c6a874f | 48 | { |
sdlashmar | 7:c67a5c6a874f | 49 | //create random x and y coordinates for mouse |
sdlashmar | 7:c67a5c6a874f | 50 | srand(time(NULL)); |
sdlashmar | 7:c67a5c6a874f | 51 | int _mouse_x = rand() %WIDTH; |
sdlashmar | 7:c67a5c6a874f | 52 | int _mouse_y = rand() %HEIGHT; |
sdlashmar | 7:c67a5c6a874f | 53 | //check if mouse count is less than one, we only want one mouse spawned at a time |
sdlashmar | 9:f0213e632379 | 54 | lcd.drawRect(_mouse_x, _mouse_y, 2, 2, FILL_BLACK); |
sdlashmar | 9:f0213e632379 | 55 | _mouse = 1; |
sdlashmar | 9:f0213e632379 | 56 | |
sdlashmar | 7:c67a5c6a874f | 57 | } |
sdlashmar | 7:c67a5c6a874f | 58 | |
sdlashmar | 7:c67a5c6a874f | 59 | void GameEngine::check_mouse_eaten(Gamepad &pad) |
sdlashmar | 7:c67a5c6a874f | 60 | { |
sdlashmar | 7:c67a5c6a874f | 61 | Vector2D headPos = head.get_pos(); |
sdlashmar | 7:c67a5c6a874f | 62 | int headX = headPos.x; |
sdlashmar | 7:c67a5c6a874f | 63 | int headY = headPos.y; |
sdlashmar | 7:c67a5c6a874f | 64 | |
sdlashmar | 7:c67a5c6a874f | 65 | if(headX == _mouse_x && headY == _mouse_y) { |
sdlashmar | 7:c67a5c6a874f | 66 | _score = _score + 10; |
sdlashmar | 9:f0213e632379 | 67 | _mouse = 0; |
sdlashmar | 7:c67a5c6a874f | 68 | pad.tone(750.0, 0.1); |
sdlashmar | 7:c67a5c6a874f | 69 | } |
sdlashmar | 7:c67a5c6a874f | 70 | } |
sdlashmar | 7:c67a5c6a874f | 71 | |
sdlashmar | 7:c67a5c6a874f | 72 | void GameEngine::check_wall_collision(Gamepad &pad, N5110 &lcd) |
sdlashmar | 7:c67a5c6a874f | 73 | { |
sdlashmar | 7:c67a5c6a874f | 74 | Vector2D headPos = head.get_pos(); |
sdlashmar | 7:c67a5c6a874f | 75 | int headX = headPos.x; |
sdlashmar | 7:c67a5c6a874f | 76 | int headY = headPos.y; |
sdlashmar | 7:c67a5c6a874f | 77 | |
sdlashmar | 8:1e4182ebb063 | 78 | if (headX < 0+2 || headX > WIDTH-3) { |
sdlashmar | 9:f0213e632379 | 79 | _game_over = true; |
sdlashmar | 7:c67a5c6a874f | 80 | game_over(lcd, pad); |
sdlashmar | 7:c67a5c6a874f | 81 | } |
sdlashmar | 8:1e4182ebb063 | 82 | if (headY < 0+2 || headY > HEIGHT-3) { |
sdlashmar | 9:f0213e632379 | 83 | _game_over = true; |
sdlashmar | 7:c67a5c6a874f | 84 | game_over(lcd, pad); |
sdlashmar | 7:c67a5c6a874f | 85 | } |
sdlashmar | 7:c67a5c6a874f | 86 | } |
sdlashmar | 7:c67a5c6a874f | 87 | |
sdlashmar | 7:c67a5c6a874f | 88 | void GameEngine::game_over(N5110 &lcd, Gamepad &pad) |
sdlashmar | 7:c67a5c6a874f | 89 | { |
sdlashmar | 9:f0213e632379 | 90 | |
sdlashmar | 9:f0213e632379 | 91 | |
sdlashmar | 7:c67a5c6a874f | 92 | pad.tone(NOTE_E5, 0.1); |
sdlashmar | 9:f0213e632379 | 93 | wait(0.1); |
sdlashmar | 7:c67a5c6a874f | 94 | pad.tone(NOTE_D5, 0.1); |
sdlashmar | 9:f0213e632379 | 95 | wait(0.1); |
sdlashmar | 7:c67a5c6a874f | 96 | pad.tone(NOTE_C5, 0.1); |
sdlashmar | 9:f0213e632379 | 97 | while(_game_over == true){ |
sdlashmar | 9:f0213e632379 | 98 | lcd.clear(); |
sdlashmar | 9:f0213e632379 | 99 | lcd.printString(" GAME OVER! ", 5, 0); |
sdlashmar | 7:c67a5c6a874f | 100 | char buffer[14]; |
sdlashmar | 7:c67a5c6a874f | 101 | sprintf(buffer, "%2d", _score); |
sdlashmar | 9:f0213e632379 | 102 | lcd.printString(" You scored: ", 2, 2); |
sdlashmar | 9:f0213e632379 | 103 | lcd.printString(buffer, 8, 4); |
sdlashmar | 9:f0213e632379 | 104 | lcd.refresh(); |
sdlashmar | 9:f0213e632379 | 105 | }; |
sdlashmar | 7:c67a5c6a874f | 106 | } |
sdlashmar | 7:c67a5c6a874f | 107 | |
sdlashmar | 7:c67a5c6a874f | 108 | |
sdlashmar | 7:c67a5c6a874f | 109 |