Computer Science на языке Java 2022 Дэвид Копец Классические задачи Computer Science на языке Java 2022 ббк



Download 6,2 Mb.
Pdf ko'rish
bet177/236
Sana25.02.2022
Hajmi6,2 Mb.
#464393
1   ...   173   174   175   176   177   178   179   180   ...   236
Bog'liq
Kopec Klassicheskie zadachi Computer Science na yazyke Java 643091

O

E
; // E — пустая клетка
@Override
public 
TTTPiece opposite() {
switch 
(
this
) {
case X
:
return 
TTTPiece.
O
;
case O
:
return 
TTTPiece.
X
;
default
: // E, пустая клетка
return 
TTTPiece.
E
;
}
}
@Override
public 
String toString() {
switch 
(
this
) {
case X
:
return 
"X";
case O
:
return 
"O";
default
: // E, пустая клетка
return 
" ";
}
}
}
В.игре.в.крестики-нолики.существует.девять.позиций,.образующих.три.ряда.
по.три.столбца..Для.простоты.эти.девять.позиций.можно.представить.в.виде.
одномерного.списка..То,.какие.клетки.получат.какие.номера.(другими.словами,.
индексы.в.массиве),.не.имеет.значения,.но.мы.будем.придерживаться.схемы,.
показанной.на.рис..8.1.
0
1
2
3
4
5
6
7
8
. .
Рис. 8.1.
Каждой клетке на игровом поле 
соответствует индекс одномерного списка


220
Глава 8.
Состязательный поиск
Главным.хранилищем.состояния.игры.будет.класс.
TTTBoard
..Он.отслеживает.два.
элемента.состояния:.позицию,.представленную.вышеупомянутым.одномерным.
списком,.и.игрока,.который.сейчас.делает.ход.(листинг.8.4).
Листинг 8.4. 
TTTBoard.java
package 
chapter8;
import 
java.util.ArrayList;
import 
java.util.Arrays;
import 
java.util.List;
public class 
TTTBoard 
implements 
Board {
private static final int NUM_SQUARES 
= 9;
private 
TTTPiece[] position;
private 
TTTPiece turn;
public 
TTTBoard(TTTPiece[] position, TTTPiece turn) {
this
.position = position;
this
.turn = turn;
}
public 
TTTBoard() {
// по умолчанию в начале игры поле пустое
position = 
new 
TTTPiece[
NUM_SQUARES
];
Arrays.
fill
(position, TTTPiece.
E
);
// Первый игрок ставит X
turn = TTTPiece.
X
;
}
@Override
public 
Piece getTurn() {
return 
turn;
}
Исходное.состояние.поля.—.такое,.при.котором.еще.не.сделано.ни.одного.хода.
(пустое.поле)..Конструктор.без.параметров.для.
TTTBoard
.инициализирует.такую.
позицию,.при.которой.первый.игрок.готовится.поставить.
X
.(обычный.первый.ход.
в.игре)..
getTurn()
.указывает,.чья.очередь.находится.в.текущей.позиции,.
X
.или.
O
.
TTTBoard
.—.это.по.соглашению.неизменяемая.структура.данных:.структуры.
TTTBoard
.не.должны.изменяться..Вместо.этого.каждый.раз,.когда.необходимо.
сделать.ход,.будет.генерироваться.новая.структура.
TTTBoard
,.позиция.которой.
изменена.с.учетом.хода..Впоследствии.это.пригодится.в.алгоритме.поиска..
При.ветвлении.поиска.мы.не.сможем.случайно.изменить.положение.на.поле,.
начиная.с.которого.все.еще.анализируются.потенциально.возможные.ходы.
(листинг.8.5).
Допустимым.ходом.в.игре.является.любая.пустая.клетка..
getLegalMoves()
.ищет.
любые.пустые.клетки.на.поле.и.возвращает.их.список.(листинг.8.6).


8.2. Крестики-нолики

Download 6,2 Mb.

Do'stlaringiz bilan baham:
1   ...   173   174   175   176   177   178   179   180   ...   236




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish