Code für das TIC-TAC-TOE Spiel

From Hackteria Wiki
Jump to: navigation, search

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);

}