De RainbowBox
De RainbowBox is een doos (zoals de naam al weggeeft) met zes kanten. Elke kant heeft een andere kleur. Wanneer je de RainbowBox aanzet verschijnt er een willekeurige kleur op het scherm.
Het doel op dat moment is om die kleur naar boven te houden voordat de countdown is afgelopen.
Wanneer je de goede kleur omhoog houd voor de countdown eindigt ga je verder naar de volgende ronde.
Elke ronde gaat de countdown sneller. Het is dus steeds lastiger om snel genoeg de goede kleur naar boven te houden. Het speel gaat door tot dat je een fout maakt. Zodra je een fout maakt kun je weer vanaf het begin beginnen.
Iteraties
Voor mijn eerste concept (zie eerste foto) had ik in gedachten om Unity te gaan gebruiken, maar na een gesprek met de begeleider werd het wel duidelijk dat ik out of the box moest denken. Een fysiek uitgewerkt idee is veel leuker dan iets wat half digitaal is. Ik was van plan om servo's te gaan gebruiken om een soort slot te openen.
(zie tweede foto) Door met de draaiknoppen te bewegen zouden de servo's gaan draaien en het slot open kunnen maken. Ik vond hierbij alleen de interactie niet zo leuk. Het voelde heel erg voor de hand liggend.
Ik kwam toen op het idee om het te combineren met Simon Says. Het idee was dat je een door servo's aangestuurde kubus zou besturen om Simon Says te spelen.
De besturing met servo's voelde echter erg sloom en daarom heb ik ervoor gekozen dat je de kubus gewoon zelf vast kan houden. Uiteindelijk heb ik het Simon Says spel iets moeten aanpassen omdat ik vanwege tijdsnood geen lichtjes op de kubus kon toevoegen.
Reflectie
Tijdens dit project ben ik er achter gekomen dat uit je comfortzone komen erg leuk kan zijn. Het project was erg leuk maar ook erg nieuw en eng. Daarom heb ik er ook lang over gedaan om tot een origineel idee te komen. Mijn eerste ideeën waren dan ook erg voor de hand liggend. Ik heb geleerd dat dingen niet nieuw zijn niet altijd onmogelijk zijn.
Elektronische Schema
Code
int side = 0;
int input_side = 0;
int started = 0;
int countdown_speed = 1000;
int score = 0;
void setup() {
Serial.begin(9600);
randomSeed(millis());
}
void loop() {
if (started == 0) {
start();
}
generate_side();
show_side();
countdown();
get_side();
check_side();
}
void generate_side() {
side = random(1,7);
}
void show_side() {
if (side == 1){
Serial.println("green");
}
if (side == 2){
Serial.println("blue");
}
if (side == 3){
Serial.println("yellow");
}
if (side == 4){
Serial.println("red");
}
if (side == 5){
Serial.println("orange");
}
if (side == 6){
Serial.println("purple");
}
}
void get_side() {
if(digitalRead(7) == 0)
{
if(digitalRead(6) == 1)
{
input_side = 1;
}
}
if(digitalRead(6) == 0)
{
if(digitalRead(7) == 1)
{
input_side = 2;
}
}
if(digitalRead(10) == 0)
{
if(digitalRead(11) == 1)
{
input_side = 3;
}
}
if(digitalRead(11) == 0)
{
if(digitalRead(10) == 1)
{
input_side = 4;
}
}
if(digitalRead(13) == 0)
{
if(digitalRead(3) == 1)
{
input_side = 5;
}
}
if(digitalRead(3) == 0)
{
if(digitalRead(13) == 1)
{
input_side = 6;
}
}
}
void countdown() {
delay(countdown_speed);
Serial.println("3");
delay(countdown_speed);
Serial.println("2");
delay(countdown_speed);
Serial.println("1");
delay(countdown_speed);
}
void check_side() {
if (side == input_side) {
Serial.println("That is correct!");
delay(1000);
Serial.println("Get ready for the next one");
delay(1000);
++score;
countdown_speed = countdown_speed - (score *5);
}
else {
Serial.println("Not quite right...");
delay(1000);
Serial.print(F("You completed "));
Serial.print(score);
Serial.println(F(" rounds!"));
delay(1000);
Serial.println("Thanks for playing!");
delay(5000);
Serial.println("Rotate the box to start again");
score = 0;
countdown_speed = 1000;
get_side();
side = input_side;
start_again();
}
}
void start_again() {
get_side();
if (side != input_side)
{
Serial.println("Starting in");
countdown();
return;
} else {
start_again();
}
}
void start() {
get_side();
side = input_side;
Serial.println("Rotate the box to start");
start_again();
started = 1;
}
Uitleg Van Code
De code checht eerst of de game al gestart is, zo niet start het de game.
Vervolgens wordt er random een kleur gekozen.
De countdown begint vervolgens en meteen daarna checkt de code of de doos de goede kant op staat.
Zo niet niet eindigt het spel, zo wel dan gaat de score met 1 omhoog en begint het opnieuw.