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
Diff: ModeA/ModeA.cpp
- Revision:
- 19:5e3ee84d9233
- Parent:
- 18:59befe1eaa56
- Child:
- 20:d9987ed262c7
--- a/ModeA/ModeA.cpp Thu May 09 03:05:48 2019 +0000
+++ b/ModeA/ModeA.cpp Thu May 09 03:28:09 2019 +0000
@@ -10,54 +10,45 @@
}
-//initialise all values
+//initialise all values
void ModeA::initialise(N5110 &lcd)
{
x_position = 12; //x coordinate of square
y_position = 18; //y coordinate of square
- speed = 1; // speed of square
- gravity = 1; //gravitational force
-
- screen_width = 70; // pixel at which bar begins
+ speed = 1; // speed of square
+ gravity = 1; //gravitational force
+ screen_width = 70; // pixel at which bar begins
bar_width = 10; // width of the bar
-
bar_speed = 2; // spped of the bar
score = 0; // score
-
-
srand(time(NULL));
size_top = rand() % 15; //15 random lengths of the top bar
srand(time(NULL));
size_bottom = rand() % 15; //15 random length of the bottom bar
-
-
}
-//game function
+//game function
void ModeA::Game(N5110 &lcd)
-
{
-
char buffer[14];
- sprintf(buffer,"%2d",score);
- lcd.printString(buffer,70,0);
- lcd.drawRect(x_position, y_position,6,6,FILL_BLACK);
+ sprintf(buffer,"%2d",score); //print score on the screen
+ lcd.printString(buffer,70,0); // print the score at the right end of screen
+ lcd.drawRect(x_position, y_position,6,6,FILL_BLACK); //draw the square
lcd.refresh();
-
-
+ // multiply gravity with 5 for a resonable speed
if ( pad.check_event(Gamepad::Y_PRESSED) == true) {
-
speed = speed - gravity*5;
-
}
+ //if the square drops to the bottom of screen- GAME OVER
+ //redifine all parameters to 0, clear screen
+ //press back to play again
if (y_position > 44) {
-
lcd.clear();
lcd.printString("GAME OVER",6,2);
lcd.printString("Press BACK",6,4);
- pad.tone(2000.0,0.3);
+ pad.tone(2000.0,0.3); //music
lcd.refresh();
bar_speed = 0;
speed = 0;
@@ -66,43 +57,39 @@
bar_width = 0;
size_top = 0;
size_bottom = 0;
-
wait(0.5);
-
}
-
-
+ //if square goes to top part of screen, goes back down
if (y_position < 0) {
y_position = 0;
speed = 0;
}
- speed = speed + gravity;
- y_position = y_position + speed;
+ speed = speed + gravity; //increment the speed by the value of gravity
+ y_position = y_position + speed; // y coordinate changes with speed
wait(0.1);
-
+ //draw the 2 bars
+ //the top one starts at y coordinate 0 and it has a height of size_top (random)
+ //the bottom one starts size_bottom pixels above the edge of the screen
lcd.drawRect(screen_width,0,bar_width,size_top,FILL_BLACK);
lcd.drawRect(screen_width,48-size_bottom,bar_width,size_bottom,FILL_BLACK);
lcd.refresh();
-
+ // if the bar and square have the same x coordinates and
+ // their y coordinates don't intersect, score increases by 1
if ((screen_width == x_position) && (size_top < y_position)) {
score = score + 1;
lcd.clear();
- sprintf(buffer,"%2d",score);
+ sprintf(buffer,"%2d",score); //update buffer
lcd.printString("Reset",15,2);
lcd.refresh();
wait(1.0);
-
-
-
- }
+ }
-
+ //if X is pressed random hights of the bars are genetrated
if ( pad.check_event(Gamepad::X_PRESSED) == true) {
-
srand(time(NULL));
size_top = rand() % 15;
srand(time(NULL));
@@ -110,8 +97,8 @@
}
+ //if the bar and ball collide, Game Over
if ((screen_width == x_position)&& (size_top > y_position)) {
-
lcd.clear();
lcd.printString("GAME OVER",6,2);
lcd.printString("Press BACK",6,4);
@@ -130,12 +117,12 @@
wait(0.5);
}
-
-
- // if (score == 2) {
+
+
+ // if (score == 2) {
// lcd.clear();
// lcd.printString("Press Reset",6,2);
- // }
+ // }
screen_width = screen_width - bar_speed;