Smart board-spel (16 / 21 steg)
Steg 16: Main spelet modulen - kombinera koden
Nu när vi har all kod som vi behöver för det spela kretsar kan vi kombinera det hela. Jag har två versioner av kombinerade koden. En är med dlc och en är withouth DLC. Koden är också fäst som en nedladdning så du även kan använda som en. Koden är redo att gå om du använder alla portar på samma sätt som vi gjorde. Om du har ändrat några av portar arround kontrollera vars i koden och ändra dem om det behövs.
Den koden utan DLC:
< p > //Vars för Gameloop < br3 #include
int gameChooser = 0;
int ChoosenGame = 0;
int Gamewin = 0;
int scoreP1 = 0;
int scoreP2 = 0;
int Turn = 0;
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
int buttonGCPin = 10;
int buttonSelectPin = 11;
int TurnEnable = 1;
booleska currentButtonState = låg;
booleska lastButtonState = låg; < /p >< p > //Vars för buzzwire
int wireRodPin = A3;
int wireFeedbackPin = 53;
int BuzzHit = 0; < /p >< p > //Vars för Simon Says
#include
Tone speakerpin; < /p >< p > int starttune [] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int Företagsvaraktighet 2 [] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int Observera [] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
int längd [] = {100, 100, 100, 300, 100, 300};
int knappen [] = {26, 27, 28, 29}; Vier knop pins
int ledpin [] = {22, 23, 24, 25}; LED stift
int turnss = 0; turnss counter
int buttonstate = 0; knappen stat checker
int randomArray [100]. Verschillende volgorde
int inputArray [100]; < /p >< p > //Global vars
int liv = 3; < /p >< p > void setup() {
Serial.BEGIN(9600);
LCD.BEGIN (16, 2); < /p >< p > //GameLoop inställningar
pinMode (buttonGCPin, ingång);
pinMode(buttonSelectPin, INPUT); < /p >< p > //Buzzwire inställningar
pinMode (wireRodPin, ingång);
pinMode(wireFeedbackPin, OUTPUT); < /p >< p > / / Simon säger Setup
speakerpin.BEGIN(30); talaren op stift 10 < /p >< p > för (int jag = 0; jag < 4; i ++) {
pinMode (ledpin [i], produktionen);
} < /p >< p > för (int jag = 0; jag < 4; i ++) {
pinMode (knappen [i], mata);
digitalWrite (knappen [i], hög);
} < /p >< p > randomSeed(analogRead(15)); Läggas till för att generera "mer slumpmässighet" med randomArray för funktionen output
för (int thisNote = 0; thisNote < 13; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(starttune[thisNote]);
Håll anteckningen:
om (thisNote == 0 || thisNote == 2 || thisNote == 4 || thisNote == 6)
{
digitalWrite (ledpin [0], hög);
}
om (thisNote == 1 || thisNote == 3 || thisNote == 5 || thisNote == 7 || thisNote == 9 || thisNote == 11)
{
digitalWrite (ledpin [1], hög);
}
om (thisNote == 8 || thisNote == 12)
{
digitalWrite (ledpin [2], hög);
}
om (thisNote == 10)
{
digitalWrite (ledpin [3], hög);
}
Delay(duration2[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
Delay(25);
}
Delay(1000);
} < /p >< p > void loop() {
om (vända == 0 & & TurnEnable == 1) {
lcd.setCursor (0, 0);
LCD.Print ("Player 1 turn");
lcd.setCursor (0, 1);
LCD.Print ("väntan för spelet");
currentButtonState = digitalRead(buttonSelectPin);
om (currentButtonState == hög & & lastButtonState == låg) {
gameChooser = 1;
TurnEnable = 0;
LCD.Clear();
}
}
om (vända == 1 & & TurnEnable == 1) {
lcd.setCursor (0, 0);
LCD.Print ("spelare 2 turn");
lcd.setCursor (0, 1);
LCD.Print ("väntan för spelet");
currentButtonState = digitalRead(buttonSelectPin);
om (currentButtonState == hög & & lastButtonState == låg) {
gameChooser = 1;
TurnEnable = 0;
LCD.Clear();
}
} < /p >< p > om (gameChooser == 1) {
gamePicker();
}
lastButtonState = currentButtonState; < /p >< p > //Simon säger
om (ChoosenGame == 1) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print ("Simon säger");
om (bor == 0) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
turnss = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
turnss = 0;
TurnSwitch();
} annat {
SimonSays();
}
} < /p >< p >
BuzzWire
om (ChoosenGame == 2) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print("BuzzWire");
Buzzwire();
om (bor == 0) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
TurnSwitch();
}
}
}</p><p>////////////////////////////////////////////////////////////////////////
// //
Spelet funktioner / /
// //
< /p >< p > void TurnSwitch() {
om (vända == 0) {
Vända = 1;
TurnEnable = 1;
bor = 3;
} else om (vända == 1) {
Vända = 0;
TurnEnable = 1;
bor = 3;
}
} < /p >< p > void gamePicker() {
int sensorValue = analogRead(A0);
spel kies-menyn
om (sensorValue < 500) {
lcd.setCursor (0, 0); //
LCD.Print ("> Simon Says <");
lcd.setCursor (0, 1);
LCD.Print ("BuzzWire");
} else om (sensorValue > 500) {
lcd.setCursor (0, 0);
LCD.Print ("> BuzzWire <");
lcd.setCursor (0, 1);
LCD.Print("");
} < /p >< p > currentButtonState = digitalRead(buttonGCPin);
om (currentButtonState == hög & & lastButtonState == låg & & sensorValue < 500) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("Simon säger");
Delay(2000);
LCD.Clear();
ChoosenGame = 1;
gameChooser = 0;
} else om (currentButtonState == hög & & lastButtonState == låg & & sensorValue > 500) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("BuzzWire");
Delay(2000);
LCD.Clear();
ChoosenGame = 2;
gameChooser = 0;
}
lastButtonState = currentButtonState;
} < /p >< p > void victorysound() {
för (int thisNote = 0; thisNote < 6; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(Note[thisNote]);
Håll anteckningen:
Delay(duration[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
Delay(25);
}
} < /p >< p > void failsound() {
för (int y = 0; y < = 2; y ++) {
speakerpin.Play (NOTE_G3, 300);
Delay(200);
speakerpin.Play (NOTE_C3, 300);
Delay(200);
}
}</p><p>////////////////////////////////////////////////////////////////////////
// //
Simon säger funktioner / /
// //
< /p >< p > void SimonSays() {
för (int y = 0; y < = 99; y ++)
{< /p >< p > //function för att skapa matrisen ska matchas av spelaren
digitalWrite (ledpin [0], hög);
digitalWrite (ledpin [1], hög);
digitalWrite (ledpin [2], hög);
digitalWrite (ledpin [3], hög); < /p >< p > för (int thisNote = 0; thisNote < 6; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(Note[thisNote]);
Håll anteckningen:
Delay(duration[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
Delay(25);
} < /p >< p > digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
Delay(1000); < /p >< p > för (int y = turnss, y < = turnss, y ++)
{//Limited av variabeln turnss
Serial.println(""); Vissa seriella produktionen att följa
Serial.Print ("vända:");
Serial.Print(y);
Serial.println("");
randomArray [y] = random (1, 5); Ge ett slumpmässigt nummer (1-4) randomArray [y], räkna y är turnss
för (int jag = 0; jag < = turnss; i ++)
{
Serial.Print(randomArray[i]); < /p >< p > för (int y = 0; y < 4; y ++)
{< /p >< p > om (randomArray [i] == 1 & & ledpin [y] == 22)
{//if deklarationer Visa lagrade värden i matrisen
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_G3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 2 & & ledpin [y] == 23)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_A3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 3 & & ledpin [y] == 24)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_B3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 4 & & ledpin [y] == 25)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_C4, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
}
}
}
} 0
input(); < /p >< p > / /} < /p >< p >} < /p >< p > void input() {< /p >< p > för (int jag = 0; jag < = turnss;)
{
för (int y = 0; y < 4; y ++)
{< /p >< p > buttonstate = digitalRead(button[y]); < /p >< p > om (buttonstate == låg & & knappen [y] == 26)
{//Checking för knappen push
digitalWrite (ledpin [0], hög);
speakerpin.Play (NOTE_G3, 100);
Delay(200);
digitalWrite (ledpin [0], låg);
inputArray [i] = 1;
Delay(250);
Serial.Print("");
Serial.Print(1);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
}
om (buttonstate == låg & & knappen [y] == 27)
{
digitalWrite (ledpin [1], hög);
speakerpin.Play (NOTE_A3, 100);
Delay(200);
digitalWrite (ledpin [1], låg);
inputArray [i] = 2;
Delay(250);
Serial.Print("");
Serial.Print(2);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
} < /p >< p > om (buttonstate == låg & & knappen [y] == 28)
{
digitalWrite (ledpin [2], hög);
speakerpin.Play (NOTE_B3, 100);
Delay(200);
digitalWrite (ledpin [2], låg);
inputArray [i] = 3;
Delay(250);
Serial.Print("");
Serial.Print(3);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
} < /p >< p > om (buttonstate == låg & & knappen [y] == 29)
{
digitalWrite (ledpin [3], hög);
speakerpin.Play (NOTE_C4, 100);
Delay(200);
digitalWrite (ledpin [3], låg);
inputArray [i] = 4;
Delay(250);
Serial.Print("");
Serial.Print(4);
om (inputArray [i]! = randomArray[i])
{
Fail();
}
i ++;
}
}
}
Delay(500);
turnss ++;
om (turnss == 4) {
bor = 5;
}
} < /p >< p > void fail() {< /p >< p > för (int y = 0; y < = 2; y ++)
{//Flashes lights för misslyckande < /p >< p > digitalWrite (ledpin [0], hög);
digitalWrite (ledpin [1], hög);
digitalWrite (ledpin [2], hög);
digitalWrite (ledpin [3], hög);
speakerpin.Play (NOTE_G3, 300);
Delay(200);
digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
speakerpin.Play (NOTE_C3, 300);
Delay(200);
}
Delay(500);
turnss--;
liv--;
Serial.println ("bor:" + String(lives));
}</p><p>////////////////////////////////////////////////////////////////////////
// //
BuzzWire funktioner / /
// //
< /p >< p > void buzzwire() {
BuzzHit = analogRead(wireRodPin); < /p >< p > om (BuzzHit > 1000) {
Serial.println ("förlora hit");
digitalWrite (wireFeedbackPin, hög);
Delay(1500);
digitalWrite (wireFeedbackPin, låg);
liv--;
} annat {
digitalWrite (wireFeedbackPin, låg);
}
currentButtonState = digitalRead(buttonGCPin);
om (currentButtonState == hög & & lastButtonState == låg) {
Serial.println ("win hit");
bor = 5;
}
lastButtonState = currentButtonState;
} < /p >
Den koden med DLC:
< p > //Vars för Gameloop < br > #include < LiquidCrystal.h >
int gameChooser = 0;
int ChoosenGame = 0;
int Gamewin = 0;
int scoreP1 = 0;
int scoreP2 = 0;
int Turn = 0;
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
int buttonGCPin = 10;
int buttonSelectPin = 11;
int TurnEnable = 1;
booleska currentButtonState = låg;
booleska lastButtonState = låg; < /p >< p > //Vars för buzzwire
int wireRodPin = A3;
int wireFeedbackPin = 53;
int BuzzHit = 0; < /p >< p > //Vars för wirepuller
int wireOut1 = 31;
int wireIn1 = 32.
int wireOut2 = 33.
int wireIn2 = 34.
int wireOut3 = 35.
int wireIn3 = 36.
booleska current1 = låg;
booleska current2 = låg;
booleska current3 = låg;
booleska previous1 = låg;
booleska previous2 = låg;
booleska previous3 = låg;
int randNumber = 0; < /p >< p > //Vars för noisedetector
int micPin = A2;
int micValue = 0;
int micCounter = 1;
int micTimer = 0;
int micSeconds = 0; < /p >< p > //Vars för frågesport
LiquidCrystal lcdquiz (44, 45, 46, 47, 48, 49);
int buttonQuizPin = 52;
booleska currentQuizButtonState = låg;
booleska lastQuizButtonState = låg; < /p >< p > //Vars för Simon Says
#include
Tone speakerpin; < /p >< p > int starttune [] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int Företagsvaraktighet 2 [] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int Observera [] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
int längd [] = {100, 100, 100, 300, 100, 300};
int knappen [] = {26, 27, 28, 29}; Vier knop pins
int ledpin [] = {22, 23, 24, 25}; LED stift
int turnss = 0; turnss counter
int buttonstate = 0; knappen stat checker
int randomArray [100]. Verschillende volgorde
int inputArray [100]; < /p >< p > //Global vars
int liv = 3; < /p >< p > void setup() {
Serial.BEGIN(9600);
LCD.BEGIN (16, 2); < /p >< p > //GameLoop inställningar
pinMode (buttonGCPin, ingång);
pinMode(buttonSelectPin, INPUT); < /p >< p > //Buzzwire inställningar
pinMode (wireRodPin, ingång);
pinMode(wireFeedbackPin, OUTPUT); < /p >< p > //WirePuller inställningar
pinMode (wireOut1, produktionen);
pinMode (wireIn1, ingång);
pinMode (wireOut2, produktionen);
pinMode (wireIn2, ingång);
pinMode (wireOut3, produktionen);
pinMode (wireIn3, ingång);
randomSeed(analogRead(A7));
randNumber = random(3);
randNumber ++;
Serial.println(randNumber); < /p >< p > //Noisedetector inställningar
pinMode(micPin, INPUT); < /p >< p > //Quiz inställningar
lcdquiz.BEGIN (16, 2);
pinMode(buttonQuizPin, INPUT); < /p >< p > / / Simon säger Setup
speakerpin.BEGIN(30); talaren op stift 10 < /p >< p > för (int jag = 0; jag < 4; i ++) {
pinMode (ledpin [i], produktionen);
} < /p >< p > för (int jag = 0; jag < 4; i ++) {
pinMode (knappen [i], mata);
digitalWrite (knappen [i], hög);
} < /p >< p > randomSeed(analogRead(15)); Läggas till för att generera "mer slumpmässighet" med randomArray för funktionen output
för (int thisNote = 0; thisNote < 13; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(starttune[thisNote]);
Håll anteckningen:
om (thisNote == 0 || thisNote == 2 || thisNote == 4 || thisNote == 6)
{
digitalWrite (ledpin [0], hög);
}
om (thisNote == 1 || thisNote == 3 || thisNote == 5 || thisNote == 7 || thisNote == 9 || thisNote == 11)
{
digitalWrite (ledpin [1], hög);
}
om (thisNote == 8 || thisNote == 12)
{
digitalWrite (ledpin [2], hög);
}
om (thisNote == 10)
{
digitalWrite (ledpin [3], hög);
}
Delay(duration2[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
Delay(25);
}
Delay(1000);
} < /p >< p > void loop() {
om (vända == 0 & & TurnEnable == 1) {
lcd.setCursor (0, 0);
LCD.Print ("Player 1 turn");
lcd.setCursor (0, 1);
LCD.Print ("väntan för spelet");
currentButtonState = digitalRead(buttonSelectPin);
om (currentButtonState == hög & & lastButtonState == låg) {
gameChooser = 1;
TurnEnable = 0;
LCD.Clear();
}
}
om (vända == 1 & & TurnEnable == 1) {
lcd.setCursor (0, 0);
LCD.Print ("spelare 2 turn");
lcd.setCursor (0, 1);
LCD.Print ("väntan för spelet");
currentButtonState = digitalRead(buttonSelectPin);
om (currentButtonState == hög & & lastButtonState == låg) {
gameChooser = 1;
TurnEnable = 0;
LCD.Clear();
}
} < /p >< p > om (gameChooser == 1) {
gamePicker();
}
lastButtonState = currentButtonState; < /p >< p > //Simon säger
om (ChoosenGame == 1) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print ("Simon säger");
om (bor == 0) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
turnss = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
turnss = 0;
TurnSwitch();
} annat {
SimonSays();
}
} < /P >< p > / / WirePuller
om (ChoosenGame == 2) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print("Wirepuller");
wirepuller();
om (bor == 0) {
lcdquiz.Clear();
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
TurnSwitch();
} else om (bor == 5) {
lcdquiz.Clear();
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
TurnSwitch();
}
}
BuzzWire
om (ChoosenGame == 3) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print("BuzzWire");
Buzzwire();
om (bor == 0) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
TurnSwitch();
}
}
NoiseDetector
om (ChoosenGame == 4) {
lcd.setCursor (0, 0);
LCD.Print("Playing:");
lcd.setCursor (0, 1);
LCD.Print("Noisedetector");
noisedetector();
om (bor == 0) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
TurnSwitch();
}
}
Frågesport
om (ChoosenGame == 5) {
Quiz();
om (bor == 0) {
LCD.Clear();
lcdquiz.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("är Gameover!");
failsound();
Delay(2500);
ChoosenGame = 0;
TurnSwitch();
} else om (bor == 5) {
LCD.Clear();
lcdquiz.Clear();
lcd.setCursor (0, 0);
LCD.Print ("Spelaren" + sträng (Turn + 1));
lcd.setCursor (0, 1);
LCD.Print ("fick en punkt!");
Delay(2500);
victorysound();
ChoosenGame = 0;
TurnSwitch();
}
}
}</p><p>////////////////////////////////////////////////////////////////////////
// //
Spelet funktioner / /
// //
< /p >< p > void TurnSwitch() {
om (vända == 0) {
Vända = 1;
TurnEnable = 1;
bor = 3;
} else om (vända == 1) {
Vända = 0;
TurnEnable = 1;
bor = 3;
}
} < /p >< p > void gamePicker() {
int sensorValue = analogRead(A0);
spel kies-menyn
om (sensorValue < 200) {
lcd.setCursor (0, 0); //
LCD.Print ("> Simon Says <");
lcd.setCursor (0, 1);
LCD.Print ("WirePuller");
} else om (sensorValue > 200 & & sensorValue < 400) {
lcd.setCursor (0, 0);
LCD.Print ("> WirePuller <");
lcd.setCursor (0, 1);
LCD.Print ("BuzzWire");
} else om (sensorValue > 400 & & sensorValue < 600) {
lcd.setCursor (0, 0);
LCD.Print ("> BuzzWire <");
lcd.setCursor (0, 1);
LCD.Print ("NoiseDetector");
} else om (sensorValue > 600 & & sensorValue < 800) {
lcd.setCursor (0, 0);
LCD.Print ("> NoiseDetector <");
lcd.setCursor (0, 1);
LCD.Print ("Quiz");
} else om (sensorValue > 800) {
lcd.setCursor (0, 0);
LCD.Print ("> Quiz <");
lcd.setCursor (0, 1);
LCD.Print("");
} < /p >< p > currentButtonState = digitalRead(buttonGCPin);
om (currentButtonState == hög & & lastButtonState == låg & & sensorValue < 200) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("Simon säger");
Delay(2000);
LCD.Clear();
ChoosenGame = 1;
gameChooser = 0;
} else om (currentButtonState == hög & & lastButtonState == låg & & sensorValue > 200 & & sensorValue < 400) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("WirePuller");
Delay(2000);
LCD.Clear();
ChoosenGame = 2;
gameChooser = 0;
} else om (currentButtonState == hög & & lastButtonState == låg & & sensorValue > 400 & & sensorValue < 600) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("BuzzWire");
Delay(2000);
LCD.Clear();
ChoosenGame = 3;
gameChooser = 0;
} else om (currentButtonState == hög & & lastButtonState == låg & & sensorValue > 600 & & sensorValue < 800) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("NoiseDetector");
Delay(2000);
LCD.Clear();
ChoosenGame = 4;
gameChooser = 0;
} else om (currentButtonState == hög & & lastButtonState == låg & & sensorValue > 800) {
lcd.setCursor (0, 0);
LCD.Print ("start:");
lcd.setCursor (0, 1);
LCD.Print ("Quiz");
Delay(2000);
LCD.Clear();
ChoosenGame = 5;
gameChooser = 0;
}
lastButtonState = currentButtonState;
} < /p >< p > void victorysound() {
för (int thisNote = 0; thisNote < 6; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(Note[thisNote]);
Håll anteckningen:
Delay(duration[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
Delay(25);
}
} < /p >< p > void failsound() {
för (int y = 0; y < = 2; y ++) {
speakerpin.Play (NOTE_G3, 300);
Delay(200);
speakerpin.Play (NOTE_C3, 300);
Delay(200);
}
}</p><p>////////////////////////////////////////////////////////////////////////
// //
Simon säger funktioner / /
// //
< /p >< p > void SimonSays() {
för (int y = 0; y < = 99; y ++)
{< /p >< p > //function för att skapa matrisen ska matchas av spelaren
digitalWrite (ledpin [0], hög);
digitalWrite (ledpin [1], hög);
digitalWrite (ledpin [2], hög);
digitalWrite (ledpin [3], hög); < /p >< p > för (int thisNote = 0; thisNote < 6; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(Note[thisNote]);
Håll anteckningen:
Delay(duration[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
Delay(25);
} < /p >< p > digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
Delay(1000); < /p >< p > för (int y = turnss, y < = turnss, y ++)
{//Limited av variabeln turnss
Serial.println(""); Vissa seriella produktionen att följa
Serial.Print ("vända:");
Serial.Print(y);
Serial.println("");
randomArray [y] = random (1, 5); Ge ett slumpmässigt nummer (1-4) randomArray [y], räkna y är turnss
för (int jag = 0; jag < = turnss; i ++)
{
Serial.Print(randomArray[i]); < /p >< p > för (int y = 0; y < 4; y ++)
{< /p >< p > om (randomArray [i] == 1 & & ledpin [y] == 22)
{//if deklarationer Visa lagrade värden i matrisen
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_G3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 2 & & ledpin [y] == 23)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_A3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 3 & & ledpin [y] == 24)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_B3, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
} < /p >< p > om (randomArray [i] == 4 & & ledpin [y] == 25)
{
digitalWrite (ledpin [y], hög);
speakerpin.Play (NOTE_C4, 100);
Delay(400);
digitalWrite (ledpin [y], låg);
Delay(100);
}
}
}
} 0
input(); < /p >< p > / /} < /p >< p >} < /p >< p > void input() {< /p >< p > för (int jag = 0; jag < = turnss;)
{
för (int y = 0; y < 4; y ++)
{< /p >< p > buttonstate = digitalRead(button[y]); < /p >< p > om (buttonstate == låg & & knappen [y] == 26)
{//Checking för knappen push
digitalWrite (ledpin [0], hög);
speakerpin.Play (NOTE_G3, 100);
Delay(200);
digitalWrite (ledpin [0], låg);
inputArray [i] = 1;
Delay(250);
Serial.Print("");
Serial.Print(1);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
}
om (buttonstate == låg & & knappen [y] == 27)
{
digitalWrite (ledpin [1], hög);
speakerpin.Play (NOTE_A3, 100);
Delay(200);
digitalWrite (ledpin [1], låg);
inputArray [i] = 2;
Delay(250);
Serial.Print("");
Serial.Print(2);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
} < /p >< p > om (buttonstate == låg & & knappen [y] == 28)
{
digitalWrite (ledpin [2], hög);
speakerpin.Play (NOTE_B3, 100);
Delay(200);
digitalWrite (ledpin [2], låg);
inputArray [i] = 3;
Delay(250);
Serial.Print("");
Serial.Print(3);
om (inputArray [i]! = randomArray[i]) {
Fail();
}
i ++;
} < /p >< p > om (buttonstate == låg & & knappen [y] == 29)
{
digitalWrite (ledpin [3], hög);
speakerpin.Play (NOTE_C4, 100);
Delay(200);
digitalWrite (ledpin [3], låg);
inputArray [i] = 4;
Delay(250);
Serial.Print("");
Serial.Print(4);
om (inputArray [i]! = randomArray[i])
{
Fail();
}
i ++;
}
}
}
Delay(500);
turnss ++;
om (turnss == 4) {
bor = 5;
}
} < /p >< p > void fail() {< /p >< p > för (int y = 0; y < = 2; y ++)
{//Flashes lights för misslyckande < /p >< p > digitalWrite (ledpin [0], hög);
digitalWrite (ledpin [1], hög);
digitalWrite (ledpin [2], hög);
digitalWrite (ledpin [3], hög);
speakerpin.Play (NOTE_G3, 300);
Delay(200);
digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
speakerpin.Play (NOTE_C3, 300);
Delay(200);
}
Delay(500);
turnss--;
liv--;
Serial.println ("bor:" + String(lives));
}</p><p>////////////////////////////////////////////////////////////////////////
// //
WirePuller funktioner / /
// //
< /p >< p > void wirepuller() {
digitalWrite (wireOut1, hög);
digitalWrite (wireOut2, hög);
digitalWrite (wireOut3, hög);
current1 = digitalRead(wireIn1);
current2 = digitalRead(wireIn2);
current3 = digitalRead(wireIn3);
Serial.println(String(current1) + "" + String(previous1));
Serial.println(String(current2) + "" + String(previous2));
Serial.println(String(current3) + "" + String(previous3));
Serial.println(randNumber);
om (current1 == previous1 & & randNumber == 1) {
Serial.println ("le eerste win");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current1 == previous1) {
Serial.println ("le eerste");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
om (current2 == previous2 & & randNumber == 2) {
Serial.println ("le tweetste win");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current2 == previous2) {
Serial.println ("le tweeste");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
om (current3 == previous3 & & randNumber == 3) {< /p >< p > Serial.println ("le drieste win");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current3 == previous3) {
Serial.println ("le drieste");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
previous1 = current1;
previous2 = current2;
previous3 = current3;
digitalWrite (wireOut1, låg);
digitalWrite (wireOut2, låg);
digitalWrite (wireOut3, låg);
current1 = digitalRead(wireIn1);
current2 = digitalRead(wireIn2);
current3 = digitalRead(wireIn3);
om (current1 == previous1 & & randNumber == 1) {
Serial.println ("le eerste win kolla 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current1 == previous1) {
Serial.println ("le eerste kontrollera 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
om (current2 == previous2 & & randNumber == 2) {
Serial.println ("le tweerste win kolla 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current2 == previous2) {
Serial.println ("le tweerste kontrollera 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
om (current3 == previous3 & & randNumber == 3) {< /p >< p > Serial.println ("le driederste win kolla 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("rätt wire");
Delay(2500);
lcdquiz.Clear();
bor = 5;
} else om (current3 == previous3) {
Serial.println ("le driederste kontrollera 2");
lcdquiz.Clear();
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du drog");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("fel wire");
Delay(2500);
lcdquiz.Clear();
bor = 0;
}
previous1 = current1;
previous2 = current2;
previous3 = current3;
}</p><p>////////////////////////////////////////////////////////////////////////
// //
BuzzWire funktioner / /
// //
< /p >< p > void buzzwire() {
BuzzHit = analogRead(wireRodPin); < /p >< p > om (BuzzHit > 1000) {
Serial.println ("förlora hit");
digitalWrite (wireFeedbackPin, hög);
Delay(1500);
digitalWrite (wireFeedbackPin, låg);
liv--;
} annat {
digitalWrite (wireFeedbackPin, låg);
}
currentButtonState = digitalRead(buttonGCPin);
om (currentButtonState == hög & & lastButtonState == låg) {
Serial.println ("win hit");
bor = 5;
}
lastButtonState = currentButtonState;
} < /p >< p >
////////////////////////////////////////////////////////////////////////
// //
NoiseDetector funktioner / /
// //
////////////////////////////////////////////////////////////////////////
void noisedetector() {
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("GO GO GO!");
om (micSeconds > 10) {
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du förlorar!");
micTimer = 0;
micCounter = 0;
micSeconds = 0;
Delay(1000);
bor = 0;
lcdquiz.Clear();
} annat {
om (micCounter > 500) {
micCounter = 0;
micTimer = 0;
micSeconds = 0;
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("du vinna!");
Delay(1000);
bor = 5;
lcdquiz.Clear();
}
micValue = analogRead(micPin);
Serial.println(micValue);
om (micValue > 95) {
micCounter ++;
lcdquiz.setCursor (0, 1);
lcdquiz.Print(micCounter);
}
micTimer ++;
om (micTimer == 150) {
micSeconds ++;
micTimer = 0;
}
}
}
////////////////////////////////////////////////////////////////////////
// //
Quiz funktioner / /
// //
////////////////////////////////////////////////////////////////////////
< /p >< p > void quiz() {
int sensorValue = analogRead(A1);
lcd.setCursor (0, 0);
LCD.Print ("hur gammal är");
lcd.setCursor (0, 1);
LCD.Print("Floris?");
om (sensorValue < 250) {
lcdquiz.setCursor (0, 0); //
lcdquiz.Print ("> 20 < 21");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("22 23");
} else om (sensorValue > 250 & & sensorValue < 500) {
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("20 > 21 <");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("22 23");
} else om (sensorValue > 500 & & sensorValue < 750) {
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("20 21");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("> 22 < 23");
} else om (sensorValue > 750) {
lcdquiz.setCursor (0, 0);
lcdquiz.Print ("20 21");
lcdquiz.setCursor (0, 1);
lcdquiz.Print ("22 > 23 <");
} < /p >< p > currentQuizButtonState = digitalRead(buttonQuizPin);
om (currentQuizButtonState == hög & & lastQuizButtonState == låg & & sensorValue > 750) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print("correct!");
Delay(2500);
bor = 5;
} else om (currentQuizButtonState == hög & & lastQuizButtonState == låg & & sensorValue < 750) {
LCD.Clear();
lcd.setCursor (0, 0);
LCD.Print("Wrong!");
lcd.setCursor (0, 1);
LCD.Print ("försök igen!");
Delay(2500);
LCD.Clear();
liv--;
}
lastQuizButtonState = currentQuizButtonState;
< /p >