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.
lib/Banana/Banana.cpp@17:ac0cb2980f6e, 2019-05-08 (annotated)
- Committer:
- Kern_EL17KJTF
- Date:
- Wed May 08 22:17:24 2019 +0000
- Revision:
- 17:ac0cb2980f6e
- Parent:
- 13:94abfe83a294
- Child:
- 32:dca62ba807de
Documentation - Banana Class Complete.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kern_EL17KJTF | 10:28575a6eaa13 | 1 | /* |
Kern_EL17KJTF | 10:28575a6eaa13 | 2 | ELEC2645 Project |
Kern_EL17KJTF | 10:28575a6eaa13 | 3 | Banana.cpp |
Kern_EL17KJTF | 10:28575a6eaa13 | 4 | Class file for Banana in Donkey Kong game. |
Kern_EL17KJTF | 10:28575a6eaa13 | 5 | */ |
Kern_EL17KJTF | 10:28575a6eaa13 | 6 | |
Kern_EL17KJTF | 10:28575a6eaa13 | 7 | #include "Banana.h" |
Kern_EL17KJTF | 10:28575a6eaa13 | 8 | |
Kern_EL17KJTF | 17:ac0cb2980f6e | 9 | // Constructor - Doesn't require any setup. |
Kern_EL17KJTF | 10:28575a6eaa13 | 10 | Banana::Banana() |
Kern_EL17KJTF | 10:28575a6eaa13 | 11 | { |
Kern_EL17KJTF | 10:28575a6eaa13 | 12 | |
Kern_EL17KJTF | 10:28575a6eaa13 | 13 | } |
Kern_EL17KJTF | 10:28575a6eaa13 | 14 | |
Kern_EL17KJTF | 17:ac0cb2980f6e | 15 | // Deconstructor - Doesn't require any setup. |
Kern_EL17KJTF | 10:28575a6eaa13 | 16 | Banana::~Banana() |
Kern_EL17KJTF | 10:28575a6eaa13 | 17 | { |
Kern_EL17KJTF | 10:28575a6eaa13 | 18 | |
Kern_EL17KJTF | 10:28575a6eaa13 | 19 | } |
Kern_EL17KJTF | 10:28575a6eaa13 | 20 | |
Kern_EL17KJTF | 17:ac0cb2980f6e | 21 | // External variables to be used inside and out of the class. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 22 | int banana_x = 0; // Banana's coordinates. |
Kern_EL17KJTF | 11:b288d01533cc | 23 | int banana_y = 0; |
Kern_EL17KJTF | 17:ac0cb2980f6e | 24 | int banana_speed = 0; // Banana's dropspeed. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 25 | int banana_min = 0; // Banana's min and max spawn positions - limited by screen size. |
Kern_EL17KJTF | 11:b288d01533cc | 26 | int banana_max = 76; |
Kern_EL17KJTF | 17:ac0cb2980f6e | 27 | int banana_time = 0; // Time Banana has been on screen, for score. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 28 | int score = 0; // Player score. |
Kern_EL17KJTF | 11:b288d01533cc | 29 | |
Kern_EL17KJTF | 17:ac0cb2980f6e | 30 | int game_banana[8][8] = { // Banana sprite. |
Kern_EL17KJTF | 10:28575a6eaa13 | 31 | {0,0,0,0,0,0,1,0,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 32 | {0,0,0,0,0,1,1,1,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 33 | {0,0,0,0,0,1,1,1,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 34 | {0,0,0,0,1,1,1,1,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 35 | {0,0,0,1,1,1,1,0,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 36 | {0,1,1,1,1,1,1,0,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 37 | {1,1,1,1,1,1,0,0,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 38 | {0,1,1,1,0,0,0,0,}, |
Kern_EL17KJTF | 10:28575a6eaa13 | 39 | }; |
Kern_EL17KJTF | 12:50a7abf21f18 | 40 | |
Kern_EL17KJTF | 17:ac0cb2980f6e | 41 | // Spawns a banana at a random x location, then slowly falls down screen. When reaches bottom or collected by player it restarts. |
Kern_EL17KJTF | 12:50a7abf21f18 | 42 | void Banana::banana_drop(Gamepad &pad, N5110 &lcd, Barrel &barrel, Donkey &dky) { |
Kern_EL17KJTF | 17:ac0cb2980f6e | 43 | if (((banana_x + 8) >= barrel_x) & (banana_x <= (barrel_x + 16)) & (banana_y <= 4)) { // Makes sure not in same position as barrel sprite. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 44 | banana_x = rand() % (banana_max + 1 - banana_min) + banana_min; // Random x spawn coordinate. |
Kern_EL17KJTF | 10:28575a6eaa13 | 45 | } |
Kern_EL17KJTF | 17:ac0cb2980f6e | 46 | lcd.drawSprite(banana_x,banana_y,8,8,(int *)game_banana); // Draws the banana sprite on screen with the correct coordinates. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 47 | char buffer[14]; // Shows score on screen. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 48 | sprintf(buffer,"%i",score); |
Kern_EL17KJTF | 13:94abfe83a294 | 49 | lcd.printString(buffer,60,0); |
Kern_EL17KJTF | 10:28575a6eaa13 | 50 | lcd.refresh(); |
Kern_EL17KJTF | 10:28575a6eaa13 | 51 | wait_ms(50); |
Kern_EL17KJTF | 17:ac0cb2980f6e | 52 | banana_y = banana_y + 1 + banana_time; // Moves banana slowly down screen. |
Kern_EL17KJTF | 17:ac0cb2980f6e | 53 | if (banana_y > 44) { // If banana reaches the bottom of screen, then resets. |
Kern_EL17KJTF | 10:28575a6eaa13 | 54 | banana_y = 0; |
Kern_EL17KJTF | 10:28575a6eaa13 | 55 | banana_time = banana_time + 0.1; |
Kern_EL17KJTF | 12:50a7abf21f18 | 56 | banana_x = rand() % (banana_max + 1 - banana_min) + banana_min; |
Kern_EL17KJTF | 10:28575a6eaa13 | 57 | } |
Kern_EL17KJTF | 17:ac0cb2980f6e | 58 | if ((banana_y >= 34) & ((banana_x + 7) >= donkeykong_x) & (banana_x <= (donkeykong_x + 15))) { // If banana collides with player sprite, then adds to score and resets. |
Kern_EL17KJTF | 10:28575a6eaa13 | 59 | score = score + 10 + banana_time; |
Kern_EL17KJTF | 12:50a7abf21f18 | 60 | banana_y = 0; |
Kern_EL17KJTF | 12:50a7abf21f18 | 61 | banana_x = rand() % (banana_max + 1 - banana_min) + banana_min; |
Kern_EL17KJTF | 17:ac0cb2980f6e | 62 | //printf("Banana Hit - Score: %d \n", score); // Prints running score to external computer screen. |
Kern_EL17KJTF | 12:50a7abf21f18 | 63 | //printf("Banana x %d \n", banana_x); |
Kern_EL17KJTF | 12:50a7abf21f18 | 64 | //printf("Barrel x %d \n", barrel_x); |
Kern_EL17KJTF | 10:28575a6eaa13 | 65 | } |
Kern_EL17KJTF | 17:ac0cb2980f6e | 66 | } |