try {
winPlayer.start();
}
catch (MediaException me) {
}
status = "You won!";
}
else { //ΠΠ³ΡΠΎΠΊ ΠΏΡΠΎΠΈΠ³ΡΠ°Π»
// Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π²ΡΠΊ ΠΏΠΎΡΠ°ΠΆΠ΅Π½ΠΈΡ
try {
losePlayer.start();
}
catch (MediaException me) {
}
status = "You lost!";
}
gameOver = true;
}
else if (gameState.isTie()) { //ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π»ΠΈ ΠΈΠ³ΡΠ° Π½ΠΈΡΡΠ΅ΠΉ
// Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π²ΡΠΊ Π½ΠΈΡΡΠ΅ΠΉ
try {
losePlayer.start();
}
catch (MediaException me) {
}
status = "The game ended in a tie!";
gameOver = true;
}
else {
// ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΡΠ°ΡΡΡΠ΅
status = myMove ? "Waiting for other player..." : "Your turn.";
}
return true;
}Π― Π·Π½Π°Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ makeMove() Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΠ°Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠΉ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Π°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, β ΡΡΠΎ ΠΈΠ³ΡΠΎΠΊ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ²Π΅ΡΡΠ°Π΅ΡΡΡ Ρ ΠΎΠ΄. ΠΠ΅ΡΠΎΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π²ΡΠ·ΠΎΠ²Π° dropPiece(), Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ gameState. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΈΡΠΊΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ. Π― Π³ΠΎΠ²ΠΎΡΡ Β«ΠΏΡΡΠ°Π΅ΡΡΡΒ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠ½. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΎΠ΄ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ.
ΠΡΠ»ΠΈ Ρ ΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ makeMove() Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π»ΠΈ ΡΡΠΎΡ Ρ ΠΎΠ΄ ΠΈΠ³ΡΡ. Π Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ isWinner() ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ, ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ, ΡΠ΄Π΅Π»Π°Π²ΡΠΈΠΉ Ρ ΠΎΠ΄. ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΠΊΡΠΎ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» β ΠΈΠ³ΡΠΎΠΊ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠΎΠΏΠ΅ΡΠ½ΠΈΠΊ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ gameOver ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true.
ΠΠ³ΡΠ° Connect 4 ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ, Π° Π½ΠΈΠΊΡΠΎ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π½Π΅ ΡΠΌΠΎΠ³ Π²ΡΡΡΠ°Π²ΠΈΡΡ 4 ΡΠΈΡΠΊΠΈ Π² ΡΡΠ΄. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΈΡΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ isTie() ΠΊΠ»Π°ΡΡΠ° C4Canvas. ΠΠ΅ΡΠΎΠ΄ makeMove() Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ isTie() ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΎΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π»ΠΈ ΠΈΠ³ΡΠ° Π½ΠΈΡΡΠ΅ΠΉ.
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ Connect 4
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Connect 4 β ΡΡΠΎ ΠΊΠ»Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈΠ³ΡΡ Connect 4, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅ΠΊ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄ΠΎΡΠΊΠ΅. ΠΠ»Π°ΡΡ C4State ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ Connect 4, ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:private static boolean[][][] map;
private int[][] score = new int[2][winPlaces];
public static final int winPlaces = 69, maxPieces = 42, Empty = 2;
private int numPieces;
public int[][] board = new int[7][6];Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π·Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠ° C4State, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ winPlaces, maxPieces ΠΈ Empty ΡΠΈΠΏΠ° static final. Π’Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΈ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ winPlaces, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΉ ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ Π½Π° Π΄ΠΎΡΠΊΠ΅:
winPlaces = 4*w*h β 3*w*n β 3*h*n + 3*h β 4*n + 2*n*n;
ΠΡΠΎ ΠΎΠ±ΡΠ΅Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Π»ΡΠ±ΠΎΠΉ ΠΈΠ³ΡΠ΅ ΡΠΈΠΏΠ° Connect X. Π ΡΡΠΎΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ: w ΠΈ h β ΡΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° Π΄ΠΎΡΠΊΠΈ Π² ΡΡΠ΅ΠΉΠΊΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π° n β ΡΠΈΡΠ»ΠΎ ΡΠΈΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ±Π΅Π΄Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΈΠ³ΡΠ΅ Connect 4 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 7 6, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ±Π΅Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ 4 ΡΠΈΡΠΊΠΈ, ΡΠΎ Π²Ρ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ winPlaces ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ 69. ΠΠ°ΠΊ ΡΠ°Π· ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ C4State. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ maxPieces ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΈΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π° Π΄ΠΎΡΠΊΡ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
maxPieces = w*h;
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΈΡΡΠ΅ΠΉ. ΠΠΈΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ Π½Π° Π΄ΠΎΡΠΊΠ΅ Π·Π°Π½ΡΡΡ, Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π½Π΅ ΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΏΠΎΠ±Π΅Π΄Ρ.
ΠΡΡΠ³Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ° β ΡΡΠΎ Empty, ΠΎΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ Π½Π° Π΄ΠΎΡΠΊΠ΅. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° Π½Π° Π΄ΠΎΡΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΡΠ»ΠΎ 0, 1 ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Empty β 2.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΊΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ map β ΡΡΠΎ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π±ΡΠ»Π΅Π²ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΠΌΠ°ΡΡΠΈΠ² map, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ. Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ Π½Π΅ΠΌΡ ΡΡΠ΅ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ² ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π²ΡΠΈΠ³ΡΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π² ΠΈΠ³ΡΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ (Π΄Π»ΠΈΠ½Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π²Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ winPlaces). ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΡΡΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π²ΡΠΈΠ³ΡΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² map. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Π²Π΅ΡΡ Π½ΠΈΠΉ Π»Π΅Π²ΡΠΉ ΡΠ³ΠΎΠ» ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ (ΡΠΈΡ. 15.1). ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°Π·ΠΎΠ²Π΅ΠΌ ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (0,0). Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π΄Π°Π΅ΡΠ΅ΡΡ? ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΈΡ. 15.4.
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (0,0) Π½Π° Π΄ΠΎΡΠΊΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (0,0) ΠΎΡΡΠ°Π·ΠΈΡ ΡΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ΅Π΅ΠΊ true, ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΊΠ°Ρ Π±ΡΠ΄ΡΡ false. ΠΡΠ»ΠΈ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΈΡ. 15.4, Π±ΡΠ΄ΡΡ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ 11β13, ΠΌΠ°ΡΡΠΈΠ² map ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΡΡ Π±Ρ ΡΠ°ΠΊ:β¦
map[0][0][9] = false;
map[0][0][10] = false;
map[0][0][11] = true;
map[0][0][12] = true;
map[0][0][13] = true;
map[0][0][14] = false;
map[0][0][15] = false;
β¦ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² map ΡΠΎΠ·Π΄Π°Π½, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΡΠΎ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² ΠΏΠΎΠ±Π΅Π΄ΠΈΠ».
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ board β ΡΡΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 7 6, ΠΎΠ½ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: 0, 1 (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠ°) ΠΈΠ»ΠΈ Empty.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ score β ΡΡΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΡΡΠ΅Ρ ΠΈΠ³ΡΡ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ score ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π΄Π»ΠΈΠ½ΠΎΠΉ winPlaces. ΠΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² ΠΊ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π²ΡΠΈΠ³ΡΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΠ΅ΠΊ, Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊ: Π΅ΡΠ»ΠΈ Π² Π²ΡΠΈΠ³ΡΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π½Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΠΊΠΈ, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ°Π²Π½ΠΎ 0. ΠΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΠΊΠΈ, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ m, Π³Π΄Π΅ m β ΡΠΈΡΠ»ΠΎ ΡΠΈΡΠ΅ΠΊ. ΠΡΠ»ΠΈ Π² ΡΡΠ΅ΠΉΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎ 16, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ³ΡΠΎΠΊ ΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΏΠΎΠ±Π΅Π΄Ρ....Π‘ΠΎΠ²Π΅Ρ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ
ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ C4State ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΡΠΊΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° β ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ. Π₯ΠΈΡΡΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΎΡΠΊΠΎΠ² β ΡΡΠΎ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ Π² ΠΈΠ³ΡΠ΅ Connect 4, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ ΡΡΠΎΠ»Ρ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π²ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΠΌΠΈΠ΄Π»Π΅ΡΠ°.
ΠΠΎΡ ΠΈ Π²ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° C4State. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° C4State ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² map, ΠΈΠ³ΡΠΎΠ²ΡΡ Π΄ΠΎΡΠΊΡ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΡΠ΅ΡΠ° (Π»ΠΈΡΡΠΈΠ½Π³ 15.11).
ΠΠΈΡΡΠΈΠ½Π³ 15.11. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ C4State() ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² map ΠΈΠ³ΡΡ Connect 4 ΠΈ ΠΈΠ³ΡΠΎΠ²ΡΡ Π΄ΠΎΡΠΊΡ
public C4State() {
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ map
int i, j, k, count = 0;
if (map == null) {
map = new boolean[7][6][winPlaces];
for (i = 0; i < 7; i++)
for (j = 0; j < 6; j++)
for (k = 0; k < winPlaces; k++)
map[i][j][k] = false;
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ
for (i = 0; i < 6; i++)
for (j = 0; j < 4; j++) {
for (k = 0; k < 4; k++)
map[j + k][i][count] = true;
count++;
}
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ
for (i = 0; i < 7; i++)
for (j = 0; j < 3; j++) {
for (k = 0; k < 4; k++)
map[i][j + k][count] = true;
count++;
}
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΡΠΌΡΠ΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++) {
for (k = 0; k < 4; k++)
map[j + k][i + k][count] = true;
count++;
}
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ
for (i = 0; i < 3; i++)
for (j = 6; j >= 3; jβ) {
for (k = 0; k < 4; k++)
map[j β k][i + k][count] = true;
count++;
}
}
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΠΊΡ
for (i = 0; i < 7; i++) //Π Π½Π°ΡΠ°Π»Π΅ ΠΈΠ³ΡΡ Π½Π° Π΄ΠΎΡΠΊΠ΅ Π½Π΅Ρ ΡΠΈΡΠ΅ΠΊ
for (j = 0; j < 6; j++)
board[i][j] = Empty;
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅Ρ
for (i = 0; i < 2; i++)
for (j = 0; j < winPlaces; j++)
score[i][j] = 1;
numPieces = 0;
}
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, Π² Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π»ΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ±Π΅Π΄Π½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ.
ΠΠ΅ΡΠΎΠ΄ isWinner() ΠΊΠ»Π°ΡΡΠ° C4State (Π»ΠΈΡΡΠΈΠ½Π³ 15.12) ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ.
ΠΠΈΡΡΠΈΠ½Π³ 15.12. ΠΠ΅ΡΠΎΠ΄ isWinner() ΠΊΠ»Π°ΡΡΠ° C4State ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΎΠ΄Π΅ΡΠΆΠ°Π» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ ΠΏΠΎΠ±Π΅Π΄Ρpublic boolean isWinner(int player) {
// ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ
for (int i = 0; i < winPlaces; i++)
if (score[player][i] == 16) //Π§ΠΈΡΠ»ΠΎ 16 Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΡΠ΅ΡΠ° Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΠΏΠΎΠ±Π΅Π΄Π΅
return true;
return false;
}ΠΠ΅ΡΠΎΠ΄ isWinner() ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ±Π΅Π΄Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° score Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ 16.
ΠΠ΅ΡΠΎΠ΄ isTie() ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½ΠΈΡΡΡ Π² ΠΈΠ³ΡΠ΅, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ numPieces ΠΈ maxPieces. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ°Π²Π½Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΎΡΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°. ΠΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° isTie() ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 15.13.
ΠΠΈΡΡΠΈΠ½Π³ 15.13. ΠΠ΅ΡΠΎΠ΄ isTie() ΠΊΠ»Π°ΡΡΠ° C4State ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π»ΠΈ ΠΈΠ³ΡΠ° Π½ΠΈΡΡΠ΅ΠΉpublic boolean isTie() {
// ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½ΠΈΡΡΡ
return (numPieces == maxPieces);
}ΠΠ΅ΡΠΎΠ΄ dropPiece() ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΡΠΊΡ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ Π½Π° Π΄ΠΎΡΠΊΠ΅ (Π»ΠΈΡΡΠΈΠ½Π³ 15.14). ΠΠΈΡΡΠΈΠ½Π³ 15.14. ΠΠ΅ΡΠΎΠ΄ dropPiece() ΠΊΠ»Π°ΡΡΠ° C4Stste ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ
public int dropPiece(int player, int xPos) {
// ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΌΠ΅ΡΡΠΎ
int yPos = 0;
while ((board[xPos][yPos] != Empty) && (++yPos < 6))
;
// ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°
if (yPos == 6) //ΠΠΎΠ»ΠΎΠ½ΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΡΠΈΠ±ΠΊΠ΅ (-1)
return -1;
// Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ
board[xPos][yPos] = player;
numPieces++;
updateScore(player, xPos, yPos);
return yPos;
}ΠΠ΅ΡΠΎΠ΄ dropPiece() Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Π΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΠ³ΡΠΎΠ²Π°Ρ Π΄ΠΎΡΠΊΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ board Π²Π²Π΅ΡΡ ΡΠΎΡΠΌΠ°ΡΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠ°Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠΊΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ. ΠΡΠ»ΠΈ Ρ ΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° board ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΠ³ΡΠΎΠΊΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ numPieces ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² score, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ updateScore().
ΠΠ΅ΡΠΎΠ΄ updateScore() ΠΊΠ»Π°ΡΡΠ° C4State ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° score (Π»ΠΈΡΡΠΈΠ½Π³ 15.15).