Code für das TIC-TAC-TOE Spiel
From Hackteria Wiki
int pos = 0;
int button1_state = LOW; int button2_state = LOW; int player2_count = 10;
int player = 1; int places = 0;
boolean game_over = false;
boolean blink = true;
int leds[] = { 13, 12, 11, 10, 9, 8, 7, 6, 5 }; int state[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
void setup() {
Serial.begin(9600);
pinMode(A1, INPUT); pinMode(A0, INPUT); pinMode(2, OUTPUT);
for (int n=0; n < 9; n++) pinMode(leds[n], OUTPUT);
}
void check_button1() {
// BUTTON 1 int button = analogRead(A0); if (button >= 800 && button1_state == LOW) { button1_state = HIGH; boolean ok = false; while(!ok) { pos++; if (pos > 8) pos = 0; if (state[pos] == 0) ok = true; } } if (button == LOW && button1_state == HIGH) button1_state = LOW;
}
void check_button2() {
// BUTTON 2 int button = analogRead(A1); if (button >= 800 && button2_state == LOW) { // set led state state[pos] = player; places++; Serial.println(places); Serial.print(button2_state); Serial.print(button1_state); button2_state = HIGH;
// next player player++; if (player > 2) player = 1; if (places == 9) game_over = true;
}
if (button == LOW && button2_state == HIGH) button2_state = LOW;
}
void setLed(int id, int player) {
if (player == 0) { digitalWrite(id, LOW); } if (player == 1) { digitalWrite(id, HIGH); } if (player == 2) { if (player2_count > 5) { digitalWrite(id, HIGH); } else { digitalWrite(id, LOW); } }
}
void loop() {
if (!game_over) { check_button1(); check_button2(); } for (int n = 0; n < 9; n++) { if (n != pos) setLed(leds[n], state[n]); } if (!game_over) { if (blink) digitalWrite(leds[pos], HIGH); else digitalWrite(leds[pos], LOW); blink = !blink; } // Steuere Pin 3 basierend auf dem aktuellen Spieler if (player == 1) { digitalWrite(2, HIGH); // Spieler 1 ist dran, schalte Pin 3 ein } else { digitalWrite(2, LOW); // Spieler 2 ist dran, schalte Pin 3 aus } player2_count--; if (player2_count < 0) player2_count = 10;
delay(100);
}