Search the Sound Game
In dit project heb ik een minigame gemaakt met de arduino. Ik heb mijn inspiratie vooral gehaald uit de kleine spelcomputertjes die je kon krijgen bij een happy meal of als extra's bij je boodschappen. Deze games waren vaak heel simpel maar bleven leuk voor uren. Ik heb geprobeerd zo simpel mogelijk mijn eigen minigame in elkaar te zetten.
Ik heb een game gemaakt waar je als speler opzoek naar het geluid bent. Het doel is ook heel simpel, zoek het geluid. Zodra je dichtbij genoeg bent scoor je een punt. Zodra je 4 punten hebt, heb je gewonnen.
In dit project heb ik mijzelf uitgedaagd om met de mogelijkheden die ik had het meest vermakelijke spel te maken. Ik heb verschillende concepten gemaakt en uiteindelijk deze volledig uitgewerkt. Met deze configuratie van componenten kunnen overigens eindeloos veel games worden bedacht en gemaakt.
Supplies
Elektrische Componenten:
- Arduino Uno
- 4x (groene) LEDs
- 4x 160Ω Transistors
- Joystick module
- Speaker module
- Kabels om alles te verbinden
Behuizing:
- 3D Printer
- Filament
3D Printen
Deze files zijn de behuizing voor de game. Het is een soort doosje met meerdere lagen wat er voor zorgt dat alle componenten makkelijk passen/wisselbaar zijn mocht er wat fout gaan.
Elektriciteit Schema/Bouwen
Dit is het elektriciteit schema. In plaats van een breadboard heb ik voor het project een printplaatje gebruikt om te kunnen solderen. Ook heb ik wat foto's toegevoegd van de opbouw zelf.
Code
De code voor de Arduino. Hieronder zal ik het belangrijkste stukje code uitleggen:
// Read the joystick X and Y axis values and map them to the range of 0-255
xValue = map(analogRead(xPin), 0, 1023, 0, 255);
yValue = map(analogRead(yPin), 0, 1023, 0, 255);
// Update the player's position based on the joystick values
playerX = constrain(playerX + 0.002 * map(xValue, 0, 255, -1, 1), 0, 10);
playerY = constrain(playerY + 0.002 * map(yValue, 0, 255, -1, 1), 0, 10);
// Calculate the distance between the player and the sound
distance = sqrt(pow(playerX - soundX, 2) + pow(playerY - soundY, 2));
en voor het geluid:
do {
soundX = random(0, 10);
soundY = random(0, 10);
} while (abs(soundX - playerX) < 3 && abs(soundY - playerY) < 3); // Keep generating new coordinates if they are too close to the player's
Hierdoor creeër je de illusie dat de speler op een grid zit te spelen en stuur je de speler met geluid naar de bron van het geluid.