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: microbit
Fork of microbit-letter-game by
Revision 2:ab61446893c8, committed 2016-04-13
- Comitter:
- AnnaBridge
- Date:
- Wed Apr 13 17:21:22 2016 +0000
- Parent:
- 1:4d2aaad38c09
- Commit message:
- Added state checking to effectively disable button presses until we are ready for them
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Apr 13 16:28:08 2016 +0000
+++ b/main.cpp Wed Apr 13 17:21:22 2016 +0000
@@ -29,17 +29,18 @@
The start of the game will be preceeded by the following message:
"Get Ready.."
- and then a small animation showing shrinking boxes.
+ and then a small animation showing shrinking/expanding boxes.
Once the game starts a random letter from A-Z will be displayed on the screen.
If it is a consonant then you press the right button.
If it is a vowel then you press the left button.
You must press the corresponding button within the time period for the current level.
- Each time you level up, the time to respond decreases. When you level up the shrinking
- box animation will be displayed again.
+ Each time you level up, the time to respond decreases. When you level up the shrinking/
+ expanding box animation will be displayed again.
The initial allowed time is defined as INITIAL_LIMIT.
The amount by which the time allowed decreases at each level is defined by SPEEDUP.
The point at which a level up occurs is defined as LEVEL_UP.
+ These can all be tweaked by updating the #defines.
*/
@@ -69,18 +70,25 @@
LATE_PRESS
} Letter_type;
+typedef enum
+{
+ BUTTONS_ENABLED,
+ BUTTONS_DISABLED
+} Button_state;
+
Letter_type buttonPress = NONE;
Letter_type type = NONE;
unsigned long time_val;
unsigned long limit;
unsigned score = 0;
+Button_state b_state = BUTTONS_DISABLED;
void level_up()
{
MicroBitImage outer("255,255,255,255,255\n255,0,0,0,255\n255,0,0,0,255\n255,0,0,0,255\n255,255,255,255,255\n");
uBit.display.print(outer, 0, 0);
uBit.sleep(200);
- MicroBitImage middle("0,0,0,0,0\n0,255,255,255,0\n0,255,0,255,0\n0,255,0,255,0\n0,0,0,0,0\n");
+ MicroBitImage middle("0,0,0,0,0\n0,255,255,255,0\n0,255,0,255,0\n0,255,255,255,0\n0,0,0,0,0\n");
uBit.display.print(middle, 0, 0);
uBit.sleep(200);
MicroBitImage inner("0,0,0,0,0\n0,0,0,0,0\n0,0,255,0,0\n0,0,0,0,0\n0,0,0,0,0\n");
@@ -104,6 +112,7 @@
level_up();
uBit.sleep(500);
display_letter();
+ b_state = BUTTONS_ENABLED;
}
void game_over()
@@ -152,6 +161,7 @@
// Increase speed
limit -= SPEEDUP;
level_up();
+ uBit.sleep(500);
}
buttonPress = NONE;
display_letter();
@@ -161,29 +171,38 @@
game_over();
uBit.sleep(1000);
start();
- }
-
+ }
}
void onButtonA(MicroBitEvent e)
{
- if (e.value == MICROBIT_BUTTON_EVT_CLICK)
+ if (b_state == BUTTONS_ENABLED)
{
- unsigned long delay = uBit.systemTime() - time_val;
- buttonPress = VOWEL;
- check_press(delay);
+ b_state = BUTTONS_DISABLED;
+ if (e.value == MICROBIT_BUTTON_EVT_CLICK)
+ {
+ unsigned long delay = uBit.systemTime() - time_val;
+ buttonPress = VOWEL;
+ check_press(delay);
+ }
+
+ b_state = BUTTONS_ENABLED;
}
}
void onButtonB(MicroBitEvent e)
{
- if (e.value == MICROBIT_BUTTON_EVT_CLICK)
+ if (b_state == BUTTONS_ENABLED)
{
- unsigned long delay = uBit.systemTime() - time_val;
- buttonPress = CONSONANT;
- check_press(delay);
- }
-
+ b_state = BUTTONS_DISABLED;
+ if (e.value == MICROBIT_BUTTON_EVT_CLICK)
+ {
+ unsigned long delay = uBit.systemTime() - time_val;
+ buttonPress = CONSONANT;
+ check_press(delay);
+ }
+ b_state = BUTTONS_ENABLED;
+ }
}
