Untitled
unknown
plain_text
10 months ago
5.9 kB
22
Indexable
char tabla[] = { '-', '-', '-', '-', '-', '-', '-', '-', '-' };
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Salut!");
Serial.println("Tu vei muta primul - esti cu X.");
Serial.println("Tabla de joc are pozitiile numerotate de la 1 la 9.");
Serial.println("1 2 3");
Serial.println("4 5 6");
Serial.println("7 8 9");
do {
mutareX();
if (victorie())
break;
mutare0();
afisare();
} while (!victorie());
delay(5000);
for (int i = 0; i < 100; i++)
Serial.println();
for (int i = 0; i < 9; i++)
tabla[i] = '-';
}
boolean victorie() {
char winner = '-';
if (winner == '-' && tabla[0] == tabla[1] && tabla[1] == tabla[2])
winner = tabla[0]; // linie 1
if (winner == '-' && tabla[3] == tabla[4] && tabla[4] == tabla[5])
winner = tabla[3]; // linie 2
if (winner == '-' && tabla[6] == tabla[7] && tabla[7] == tabla[8])
winner = tabla[6]; // linie 3
if (winner == '-' && tabla[0] == tabla[3] && tabla[3] == tabla[6])
winner = tabla[0]; // coloana 1
if (winner == '-' && tabla[1] == tabla[4] && tabla[4] == tabla[7])
winner = tabla[1]; // coloana 2
if (winner == '-' && tabla[2] == tabla[5] && tabla[5] == tabla[8])
winner = tabla[2]; // coloana 3
if (winner == '-' && tabla[0] == tabla[4] && tabla[4] == tabla[8])
winner = tabla[0]; // diagonala principala
if (winner == '-' && tabla[2] == tabla[4] && tabla[4] == tabla[6])
winner = tabla[2]; // diagonala secundara
if (winner == '-') {
winner = '*';
for (int i = 0; i < 9; i++)
if (tabla[i] == '-')
winner = '-';
}
if (winner == '-')
return false;
else {
if (winner == 'X') {
afisare();
Serial.println("Ati castigat! Felicitari!");
}
if (winner == '0')
Serial.println("Arduino a castigat! Mai incercati!");
if (winner == '*')
Serial.println("Remiza! Plictisitor!");
return true;
}
}
void afisare() {
for (int i = 0; i < 9; i++) {
Serial.print(tabla[i]);
Serial.print(" ");
if (i == 2 || i == 5 || i == 8)
Serial.println();
}
}
void mutareX() {
boolean valid = false;
int m0 = 0;
while (!valid) {
Serial.println("Alege o pozitie de la 1 la 9.");
while (m0 < '1' || m0 > '9') {
m0 = Serial.read();
delay(1000);
}
m0 = m0 - 48;
Serial.print("Ati ales pozitia: ");
Serial.print(m0, DEC);
Serial.println();
if (tabla[m0 - 1] != '-')
Serial.println("Pozitie eronata!");
else {
tabla[m0 - 1] = 'X';
valid = true;
}
}
}
void mutare0() {
int i = -1;
int primaMutare = 0;
int colturi[] = { 0, 2, 6, 8 };
while (i == -1) {
if (!primaMutare) {
if (tabla[4] == '-') i = 4;
else {
int index = random(4);
i = colturi[index];
}
primaMutare++;
} else {
for (int j = 0; j < 9; j++) {
if (j % 3 == 0) {
if (tabla[j] == '0' && tabla[j + 1] == '0') {
i = j + 2;
}
if (tabla[j + 1] == '0' && tabla[j + 2] == '0') {
i = j;
}
if (tabla[j] == '0' && tabla[j + 2] == '0') {
i = j + 1;
}
}
if (j == 0 || j == 1 || j == 2) {
if (tabla[j] == '0' && tabla[j + 3] == '0') {
i = j + 6;
}
if (tabla[j + 3] == '0' && tabla[j + 6] == '0') {
i = j;
}
if (tabla[j] == '0' && tabla[j + 6] == '0') {
i = j + 3;
}
}
if (j == 0) {
if (tabla[j] == '0' && tabla[j + 4] == '0') {
i = j + 8;
}
if (tabla[j + 4] == '0' && tabla[j + 8] == '0') {
i = j;
}
if (tabla[j] == '0' && tabla[j + 8] == '0') {
i = j + 4;
}
}
if (j == 2) {
if (tabla[j + 2] == '0' && tabla[j + 4] == '0') {
i = j;
}
if (tabla[j] == '0' && tabla[j + 4] == '0') {
i = j + 2;
}
if (tabla[j] == '0' && tabla[j + 2] == '0') {
i = j + 4;
}
}
if (j % 3 == 0)
if (tabla[j] == 'X' && tabla[j + 1] == 'X') {
i = j + 2;
}
if (tabla[j + 1] == 'X' && tabla[j + 2] == 'X') {
i = j;
}
if (tabla[j] == 'X' && tabla[j + 2] == 'X') {
i = j + 1;
}
if (j == 0 || j == 1 || j == 2) {
if (tabla[j] == 'X' && tabla[j + 3] == 'X') {
i = j + 6;
}
if (tabla[j + 3] == 'X' && tabla[j + 6] == 'X') {
i = j;
}
if (tabla[j] == 'X' && tabla[j + 6] == 'X') {
i = j + 3;
}
}
if (j == 0) {
if (tabla[j] == 'X' && tabla[j + 4] == 'X') {
i = j + 8;
}
if (tabla[j + 4] == 'X' && tabla[j + 8] == 'X') {
i = j;
}
if (tabla[j] == 'X' && tabla[j + 8] == 'X') {
i = j + 4;
}
}
if (j == 2) {
if (tabla[j + 2] == 'X' && tabla[j + 4] == 'X') {
i = j;
}
if (tabla[j] == 'X' && tabla[j + 4] == 'X') {
i = j + 2;
}
if (tabla[j] == 'X' && tabla[j + 2] == 'X') {
i = j + 4;
}
}
}
}
if (i == -1 && primaMutare) {
i = random(0, 9);
while (tabla[i] != '-') i = random(0, 9);
}
if (tabla[i] == '-') {
tabla[i] = '0';
Serial.print("Arduino a ales pozitia: ");
Serial.print(i + 1, DEC);
Serial.println();
break;
} else
i = -1;
}
}Editor is loading...
Leave a Comment