Final dice game with the guessing and whatnot
This commit is contained in:
parent
af4691730f
commit
6dabe79ddd
88
arduino/msaqsg/ch03/DiceGame/DiceGame.ino
Normal file
88
arduino/msaqsg/ch03/DiceGame/DiceGame.ino
Normal file
@ -0,0 +1,88 @@
|
||||
// vim:filetype=arduino
|
||||
#include <Bounce.h>
|
||||
|
||||
const unsigned int LED_BIT0 = 10;
|
||||
const unsigned int LED_BIT1 = 11;
|
||||
const unsigned int LED_BIT2 = 12;
|
||||
const unsigned int START_BUTTON_PIN = 5;
|
||||
const unsigned int GUESS_BUTTON_PIN = 7;
|
||||
const unsigned int BAUD_RATE = 9600;
|
||||
|
||||
const unsigned int DEBOUNCE_DELAY = 20;
|
||||
Bounce startButton = Bounce();
|
||||
Bounce guessButton = Bounce();
|
||||
int guess = 0;
|
||||
|
||||
void outputResult(const long result) {
|
||||
digitalWrite(LED_BIT0, result & B001);
|
||||
digitalWrite(LED_BIT1, result & B010);
|
||||
digitalWrite(LED_BIT2, result & B100);
|
||||
}
|
||||
|
||||
void hooray() {
|
||||
for (unsigned int i = 0; i < 3; i++) {
|
||||
outputResult(7);
|
||||
delay(500);
|
||||
outputResult(0);
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
|
||||
void handleGuessButton() {
|
||||
if (!guessButton.update()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (guessButton.read() == HIGH) {
|
||||
guess = (guess % 6) + 1;
|
||||
outputResult(guess);
|
||||
Serial.print("Guess: ");
|
||||
Serial.println(guess);
|
||||
}
|
||||
}
|
||||
|
||||
void handleStartButton() {
|
||||
if (!startButton.update()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (startButton.read() == HIGH) {
|
||||
const int result = random(1, 7);
|
||||
outputResult(result);
|
||||
Serial.print("Result: ");
|
||||
Serial.println(result);
|
||||
|
||||
if (guess > 0) {
|
||||
if (result == guess) {
|
||||
Serial.println("You win!");
|
||||
hooray();
|
||||
} else {
|
||||
Serial.println("You lose!");
|
||||
}
|
||||
}
|
||||
|
||||
delay(2000);
|
||||
guess = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(LED_BIT0, OUTPUT);
|
||||
pinMode(LED_BIT1, OUTPUT);
|
||||
pinMode(LED_BIT2, OUTPUT);
|
||||
pinMode(START_BUTTON_PIN, INPUT);
|
||||
pinMode(GUESS_BUTTON_PIN, INPUT);
|
||||
randomSeed(analogRead(A0));
|
||||
Serial.begin(BAUD_RATE);
|
||||
|
||||
startButton.attach(START_BUTTON_PIN);
|
||||
startButton.interval(DEBOUNCE_DELAY);
|
||||
|
||||
guessButton.attach(GUESS_BUTTON_PIN);
|
||||
guessButton.interval(DEBOUNCE_DELAY);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
handleGuessButton();
|
||||
handleStartButton();
|
||||
}
|
1
arduino/msaqsg/ch03/DiceGame/Makefile
Symbolic link
1
arduino/msaqsg/ch03/DiceGame/Makefile
Symbolic link
@ -0,0 +1 @@
|
||||
../../../arduino.mk
|
Loading…
Reference in New Issue
Block a user