Arduino Würfelspiel

In diesem Video erklären wir, wie unser Würfelspiel, welches im Laufe der Projektarbeit zu Arduinos des Jahrganges 10 (2022) entstanden ist.

Unser Würfelspiel besteht aus 9 LEDs (7 LEDs für den Würfel und 2 LEDs für die Spieler), einem Knopf zum Würfeln, einem Mikroprozessor und dem Code, welcher zufällig bestimmt, was gewürfelt wird. Die LEDs leuchten je nach gewürfelter Zahl auf und repräsentieren das Bild eines normalen Würfels. Nachdem beide Spieler gewürfelt haben, leuchtet die LED des Gewinners auf.

Wir hatten eine Bauanleitung und Beispielcode zur Verfügung, diese haben wir jedoch zum Großteil ignoriert, um eine eigene Version zu schreiben / bauen, da uns das Beispiel nicht gefallen hat. Außerdem haben wir das Beispiel noch um einen zweiten Spieler erweitert und alle Kabel verlötet, anstatt sie einfach zu stecken.

int led[] = {12,11,10,9,8,7,6,5,4};                                                       
int button = 3;                                               
int buttonStatus;                                            
int zufall;
int spieler1;
int spieler2;

void output(int x) {
  if (x == 1) {
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
  }
  if (x == 2) {
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
  if (x == 3) {
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
  if (x == 4) {
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
  if (x == 5) {
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
    digitalWrite(7, HIGH);
    digitalWrite(8, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
  if (x == 6) {
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, HIGH);
    digitalWrite(12, HIGH);
  }
}

void setup() {
  randomSeed(analogRead(0));
  for(int index = 0; index <= 8; index++) {
    pinMode(led[index],OUTPUT);
  }
  pinMode(button, INPUT);
  digitalWrite(button, HIGH);
}

void loop() { 
  buttonStatus = digitalRead(button);
  if (buttonStatus == LOW) {
    digitalWrite(4, LOW);
    digitalWrite(9, LOW);
    
    zufall = random(1,7);
    for (int i = 0; i < 2; i++) {
      for (int ii= 1; ii < 7; ii++) {
        output(ii);
        delay(130);
      }
    }
    output(zufall);
    spieler1 = zufall;
    Serial.println("spieler 1:");
    Serial.println(spieler1);
    delay(500);
    buttonStatus = digitalRead(button);
    while (buttonStatus != LOW) { 
      delay(50);
      buttonStatus = digitalRead(button);
    }
    
    zufall = random(1,7);
    for (int i = 0; i < 2; i++) {
      for (int ii= 1; ii < 7; ii++) {
        output(ii);
        delay(130);
      }
    }
    output(zufall);
    spieler2 = zufall;
    Serial.println("spieler 2:");
    Serial.println(spieler2);
    delay(100);
    
    if (spieler1 > spieler2) {
      for (int iii = 0; iii < 4; iii++) {
        digitalWrite(4, HIGH);
        delay(125);
        digitalWrite(4, LOW);
        delay(125);
      }
      digitalWrite(4, HIGH);
    }
    if (spieler1 < spieler2) {
      for (int iii = 0; iii < 4; iii++) {
        digitalWrite(9, HIGH);
        delay(125);
        digitalWrite(9, LOW);
        delay(125);
      }
      digitalWrite(9, HIGH);
    }
    if (spieler1 == spieler2) {
      for (int iii = 0; iii < 4; iii++) {
        digitalWrite(4, HIGH);
        digitalWrite(9, HIGH);
        delay(125);
        digitalWrite(4, LOW);
        digitalWrite(9, LOW);
        delay(125);
      }
      digitalWrite(4, HIGH);
      digitalWrite(9, HIGH);
    }
    delay(500);
    
    buttonStatus = digitalRead(button);
    while (buttonStatus != LOW) { 
      delay(50);
      buttonStatus = digitalRead(button);
    }
    for(int index = 0; index <= 8; index++) {                                                           
      digitalWrite(led[index], LOW);                                                                                        
    }
    delay(750);
  }
}