Kern Fowler / Mbed 2 deprecated Donkey_Kong_Game

Dependencies:   mbed

Committer:
Kern_EL17KJTF
Date:
Thu May 09 01:52:56 2019 +0000
Revision:
32:dca62ba807de
Parent:
17:ac0cb2980f6e
Added some sounds when scoring.

Who changed what in which revision?

UserRevisionLine numberNew 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 32:dca62ba807de 42 void Banana::banana_drop(Gamepad &pad, N5110 &lcd, Barrel &barrel, Donkey &dky, Options &opt) {
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 32:dca62ba807de 60 banana_hit(pad, lcd, barrel, dky, opt);
Kern_EL17KJTF 12:50a7abf21f18 61 banana_y = 0;
Kern_EL17KJTF 12:50a7abf21f18 62 banana_x = rand() % (banana_max + 1 - banana_min) + banana_min;
Kern_EL17KJTF 17:ac0cb2980f6e 63 //printf("Banana Hit - Score: %d \n", score); // Prints running score to external computer screen.
Kern_EL17KJTF 12:50a7abf21f18 64 //printf("Banana x %d \n", banana_x);
Kern_EL17KJTF 12:50a7abf21f18 65 //printf("Barrel x %d \n", barrel_x);
Kern_EL17KJTF 10:28575a6eaa13 66 }
Kern_EL17KJTF 32:dca62ba807de 67 }
Kern_EL17KJTF 32:dca62ba807de 68
Kern_EL17KJTF 32:dca62ba807de 69 void Banana::banana_hit(Gamepad &pad, N5110 &lcd, Barrel &barrel, Donkey &dky, Options &opt) {
Kern_EL17KJTF 32:dca62ba807de 70 if (opt_volume == 1) {
Kern_EL17KJTF 32:dca62ba807de 71 pad.tone(2400, 0.2);
Kern_EL17KJTF 32:dca62ba807de 72 }
Kern_EL17KJTF 17:ac0cb2980f6e 73 }