Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

3.1. Используя множества 115

Рисунок 3.7: правление Tic-Tac-Toe и множество, представляющее его.

#include <cstdlib> #include <iostream> использующий namespace станд.;

интервал константы X = 1, O =-1, ПУСТОЙ = 0;

международное правление [3] [3];

интервал currentPlayer;

пустота clearBoard ()

для (интервал i = 0; я <3; я ++)

для (интервал j = 0; j <3; j ++)

правление [я] [j] = ПУСТОЙ;

currentPlayer = X;

пустота putMark (интервал i, интервал j)

правление [я] [j] = currentPlayer;

currentPlayer =-currentPlayer;

bool isWin (международная отметка)

международная победа = 3*mark;

//системные определения//определения ввода/вывода//делают станд.:: доступный

//возможные отметки//играющее правление//нынешний игрок (X или O)

//очистите правление

//каждая клетка пуста//игрок X запусков

//колонка j ряда i отметки//отметка с нынешним игроком//переключает плееры

//действительно ли отметка - победитель?//+3 для X и-3 для O

возвратитесь ((правление [0] [0] + правление [0] [1] + правление [0] [2] == победа)

 (правление [1] [0] + правление [1] [1] + правление [1] [2] == победа)

 (правление [2] [0] + правление [2] [1] + правление [2] [2] == победа)  (правление [0] [0] + правление [1] [0] + правление [2] [0] == победа)  (правление [0] [1] + правление [1] [1] + правление [2] [1] == победа)  (правление [0] [2] + правление [1] [2] + правление [2] [2] == победа)  (правление [0] [0] + правление [1] [1] + правление [2] [2] == победа)  (правление [2] [0] + правление [1] [1] + правление [0] [2] == победа));

//ряд 0//ряд 1//ряд 2 / / co l umn 0 / / co l umn 1 / / co l umn 2 / / di ag o nal / / di ag o nal

Кодовый Фрагмент 3.11: C ++ программа для игры Tic-Tac-Toe между двумя игроками. (Продолжается в Кодовом Фрагменте 3.12.)

116

интервал getWinner ()

если (isWin (X)) возвращаются X;

Глава 3. Множества, связанные списки и рекурсия

//кто побеждает? (ПУСТОЙ означает связь),

еще, если (isWin (O)) возвращают O; еще возвратитесь ПУСТОЙ;

пустота printBoard ()

для (интервал i = 0; я <3; я ++)

для (интервал j = 0; j <3; j ++)

выключатель (правление [я] [j])

случай X: суд <<«X»; разрыв;

случай O: суд <<«O»; разрыв;

ПУСТОЙ случай: суд <<«»; разрыв;

если (j <2) суд <<«|»;

если (я <2) суд <<«\n-+-+-\n»;

//напечатайте доску

//граница колонки

//граница ряда

международное основное ()

clearBoard ();

putMark (0,0); putMark (0,1); putMark (2,0); putMark (2,2); putMark (1,0); printBoard ();

putMark (1,1); putMark (0,2); putMark (1,2); putMark (2,1);

//главная программа//очищается, правление//добавляют отметки

//напечатайте заключительную доску

международный победитель = getWinner (); если (победитель! = ПУСТОЙ)

суд <<«» <<(победитель == X? 'X' еще

единое время co <<«T i e» <<endl; возвратите ВЫХОДНОЙ УСПЕХ;

//напечатайте победителя: '0') <<«w i n s» <<endl;

Кодовый Фрагмент 3.12: C ++ программа для игры Tic-Tac-Toe между двумя игроками. (Продолженный от Кодового Фрагмента 3.11.)

X|X|O - + - + - X|O|O - + - + - X|O|X X побед

Рисунок 3.8: Продукция программы Tic-Tac-Toe.