#include <Arduino.h>
// Definisikan pin LED
const int leds[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
// Definisikan pin tombol penekan
const int buttons[9] = {11, 12, 13, A0, A1, A2, A3, A4, A5};
// Papan permainan Tic-Tac-Toe
char board[9] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '};
// Pemain aktif (X atau O)
char currentPlayer = 'X';
void setup() {
for (int i = 0; i < 9; i++) {
pinMode(leds[i], OUTPUT);
pinMode(buttons[i], INPUT_PULLUP); // Tombol penekan dengan resistor pull-up internal
}
Serial.begin(9600);
}
void loop() {
// Tampilkan papan permainan pada LED
displayBoard();
// Tunggu pemain untuk mengklik tombol
int button = waitForButtonPress();
// Jika tombol ditekan dan kotak kosong, isi kotak dengan tanda pemain
if (board[button] == ' ') {
board[button] = currentPlayer;
// Ganti pemain aktif
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}
// Cek apakah ada pemenang atau permainan berakhir
char winner = checkWinner();
if (winner != ' ' || isBoardFull()) {
displayBoard();
if (winner != ' ') {
Serial.print("Pemain ");
Serial.print(winner);
Serial.println(" menang!");
} else {
Serial.println("Permainan seri.");
}
// Mulai permainan baru
resetGame();
}
}
void displayBoard() {
for (int i = 0; i < 9; i++) {
digitalWrite(leds[i], (board[i] == 'X') ? HIGH : LOW);
}
}
int waitForButtonPress() {
int buttonPressed = -1;
while (buttonPressed == -1) {
for (int i = 0; i < 9; i++) {
if (digitalRead(buttons[i]) == LOW) {
buttonPressed = i;
delay(200); // Debouncing
break;
}
}
}
return buttonPressed;
}
char checkWinner() {
// Logika pemeriksaan pemenang
// ...
// Anda dapat menambahkan logika pemeriksaan pemenang di sini sesuai aturan Tic-Tac-Toe
// ...
return ' '; // Kembalikan spasi jika belum ada pemenang
}
bool isBoardFull() {
for (int i = 0; i < 9; i++) {
if (board[i] == ' ') {
return false;
}
}
return true;
}
void resetGame() {
for (int i = 0; i < 9; i++) {
board[i] = ' ';
}
currentPlayer = 'X';
delay(1000); // Beri waktu untuk melihat hasil permainan sebelum mulai lagi
}