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…
x
Reference in New Issue
Block a user