Dizaster
Gebruiker
- Lid geworden
- 16 okt 2007
- Berichten
- 35
Code:
void compMove() {
short int square = 0;
short int score = 0;
short int test1 = 0;
short int test2 = 0;
short int test3 = 0;
short int test4 = 0;
short int test5 = 0;
short int test6 = 0;
short int test7 = 0;
short int test8 = 0;
short int test9 = 0;
if (square1 == ' ') {
if ((square2 == 'O' && square3 == 'O') || (square4 == 'O' && square7 == 'O') || (square5 == 'O' && square9 == 'O')) test1 = 1000;
else if ((square2 == 'X' && square3 == 'X') || (square4 == 'X' && square7 == 'X') || (square5 == 'X' && square9 == 'X')) test1 = 100;
else if (square2 == 'X' || square3 == 'X' || square4 == 'X' || square5 == 'X' || square7 == 'X' || square9 == 'X') test1 = 10;
else test1 = 1;
}
if (square3 == ' ') {
if ((square2 == 'O' && square1 == 'O') || (square5 == 'O' && square7 == 'O') || (square6 == 'O' && square9 == 'O')) test3 = 1000;
else if ((square2 == 'X' && square1 == 'X') || (square5 == 'X' && square7 == 'X') || (square6 == 'X' && square9 == 'X')) test3 = 100;
else if (square2 == 'X' || square1 == 'X' || square5 == 'X' || square6 == 'X' || square7 == 'X' || square9 == 'X') test3 = 10;
else test3 = 1;
}
if (square7 == ' ') {
if ((square1 == 'O' && square4 == 'O') || (square3 == 'O' && square5 == 'O') || (square8 == 'O' && square9 == 'O')) test7 = 1000;
else if ((square1 == 'X' && square4 == 'X') || (square3 == 'X' && square5 == 'X') || (square8 == 'X' && square9 == 'X')) test7 = 100;
else if (square1 == 'X' || square4 == 'X' || square3 == 'X' || square5 == 'X' || square8 == 'X' || square9 == 'X') test7 = 10;
else test7 = 1;
}
if (square9 == ' ') {
if ((square1 == 'O' && square5 == 'O') || (square3 == 'O' && square6 == 'O') || (square7 == 'O' && square8 == 'O')) test9 = 1000;
else if ((square1 == 'X' && square5 == 'X') || (square3 == 'X' && square6 == 'X') || (square7 == 'X' && square8 == 'X')) test9 = 100;
else if (square1 == 'X' || square5 == 'X' || square3 == 'X' || square6 == 'X' || square7 == 'X' || square8 == 'X') test9 = 10;
else test9 = 1;
}
if (square2 == ' ') {
if ((square1 == 'O' && square3 == 'O') || (square5 == 'O' && square8 == 'O')) test2 = 1000;
else if ((square1 == 'X' && square3 == 'X') || (square5 == 'X' && square8 == 'X')) test8 = 100;
else if (square1 == 'X' || square3 == 'X' || square5 == 'X' || square8 == 'X') test2 = 10;
else test2 = 1;
}
if (square4 == ' ') {
if ((square1 == 'O' && square7 == 'O') || (square5 == 'O' && square6 == 'O')) test4 = 1000;
else if ((square1 == 'X' && square7 == 'X') || (square5 == 'X' && square6 == 'X')) test4 = 100;
else if (square1 == 'X' || square7 == 'X' || square5 == 'X' || square6 == 'X') test4 = 10;
else test4 = 1;
}
if (square6 == ' ') {
if ((square3 == 'O' && square9 == 'O') || (square4 == 'O' && square5 == 'O')) test6 = 1000;
else if ((square3 == 'X' && square9 == 'X') || (square4 == 'X' && square5 == 'X')) test6 = 100;
else if (square3 == 'X' || square9 == 'X' || square4 == 'X' || square5 == 'X') test6 = 10;
else test6 = 1;
}
if (square8 == ' ') {
if ((square2 == 'O' && square5 == 'O') || (square7 == 'O' && square9 == 'O')) test8 = 1000;
else if ((square2 == 'X' && square5 == 'X') || (square7 == 'X' && square9 == 'X')) test8 = 100;
else if (square2 == 'X' || square5 == 'X' || square7 == 'X' || square9 == 'X') test8 = 10;
else test8 = 1;
}
if (square5 == ' ') {
if ((square1 == 'O' && square9 == 'O') || (square2 == 'O' && square8 == 'O') || (square3 == 'O' && square7 == 'O') || (square4 == 'O' && square6 == 'O')) test5 = 1000;
else if ((square1 == 'X' && square9 == 'X') || (square2 == 'X' && square8 == 'X') || (square3 == 'X' && square7 == 'X') || (square4 == 'X' && square6 == 'X')) test5 = 100;
else if (square1 == 'X' || square9 == 'X' || square2 == 'X' || square8 == 'X' || square3 == 'X' || square7 == 'X' || square4 == 'X' || square6 == 'X') test5 = 10;
else test5 = 1;
}
if (score < test1) square = 1; score = test1 + 1;
if (score < test2) square = 2; score = test2 + 1;
if (score < test3) square = 3; score = test3 + 1;
if (score < test4) square = 4; score = test4 + 1;
if (score < test5) square = 5; score = test5 + 1;
if (score < test6) square = 6; score = test6 + 1;
if (score < test7) square = 7; score = test7 + 1;
if (score < test8) square = 8; score = test8 + 1;
if (score < test9) square = 9; score = test9 + 1;
drawFieldPC(square);
}
Dit is een hele simpele AI voor boter kaas en eieren, het lijkt mij ok, maar hij weigert als bijvoorbeeld 1 en 2 kruisje zijn om dan in 3 een rondje te zetten, terwijl hij dat volgens mij hoort te doen als dat het enige vakje is met een "score" van 101
Code:
while (boolWin() != true && checkFull() != true) {
if (firstTurn() != true) {
if (boolWin() != true) compMove();
}
if (boolWin() == true) goto gogo;
square = inputSquare1P();
drawField1P(square);
}
Zo wordt de functie compMove aangeroepen, zoals je ziet heb ik al geprobeerd om de computer in het script eerst te laten gaan, behalve bij de 1e beurt om op het scherm de speler het eerst te laten gaan, Ik weet dat het er slordig uitziet, maar daar was ik nog niet aan toe. Wat is er fout aan deze AI functie waardoor hij niet doet wat hij moet doen. Hij moet elk vakje checken en daar een waarde aan toe kennen en dan op het vakje met de hoogste waarde de functie drawField1P() uitvoeren.
Alvast bedankt
EDIT: als ik een kruisje op 5 zet dan zet de AI hem op 6 terwijl hij volgens dit AI script hem dan op 1 zou moeten zetten.. ?? raar ??
Laatst bewerkt: