Игра в крестики-нолики ведётся на квадратном поле 3х3. Играют двое. Начинают "крестики". Каждый из игроков, поочерёдно, ставит свой значок, крестик или нолик, на свободную клетку. Выигрывает тот, кто первым поставит три своих значка вряд по вертикали, горизонтали или диагонали.
Задаётся последовательность ходов. Определить, кто выиграл, "крестики" или "нолики"?
Входные данные : Входной файл содержит информацию об игровом поле - 3 строки по 3 символа в каждой. Символ X означает крестик, символ O - нолик, а символ . пустую клетку.
Выходные данные :
В выходной файл OUTPUT.txt выведите в случае победы первого игрока WIN, в случае его проигрыша - Lose, и Draw в случае ничьей.
Примеры:
INPUT.txt:
.OX
.XO
XXO
OUPUT.txt :
WIN.
Другие языки программирования и технологии
Задача по программированию Крестики-нолики ( Паскаль) . Помогите с решением, пожалуйста.
Если последовательность входящих символов представить как значения массива 3х3, то проверка выигрыша той или иной стороны сводится к проверке одного из 8 вариантов.
var M : array [1..3, 1..3] of Char;
wX, wO : Boolean;
…
ReadLn(M[1,1], M[1,2], M[1,3]);
ReadLn(M[2,1], M[2,2], M[2,3]);
ReadLn(M[3,1], M[3,2], M[3,3]);
…
{ Выиграл ли X }
wX := (M[1,1]='X') and (M[1,2]='X') and (M[1,3]='X') or { 3 горизонтальных строки}
(M[2,1]='X') and (M[2,2]='X') and (M[2,3]='X') or
(M[3,1]='X') and (M[3,2]='X') and (M[3,3]='X') or
(M[1,1]='X') and (M[2,1]='X') and (M[3,1]='X') or { 3 вертикальных столбца }
(M[1,2]='X') and (M[2,2]='X') and (M[3,2]='X') or
(M[1,3]='X') and (M[2,3]='X') and (M[3,3]='X') or
(M[1,1]='X') and (M[2,2]='X') and (M[3,3]='X') or { 2 диагонали }
(M[1,3]='X') and (M[2,2]='X') and (M[3,1]='X');
{ Выиграл ли O }
wX := (M[1,1]='O') and (M[1,2]='O') and (M[1,3]='O') or { 3 горизонтальных строки}
(M[2,1]='O') and (M[2,2]='O') and (M[2,3]='O') or
(M[3,1]='O') and (M[3,2]='O') and (M[3,3]='O') or
(M[1,1]='O') and (M[2,1]='O') and (M[3,1]='O') or { 3 вертикальных столбца }
(M[1,2]='O') and (M[2,2]='O') and (M[3,2]='O') or
(M[1,3]='O') and (M[2,3]='O') and (M[3,3]='O') or
(M[1,1]='O') and (M[2,2]='O') and (M[3,3]='O') or { 2 диагонали }
(M[1,3]='O') and (M[2,2]='O') and (M[3,1]='O');
{ Анализ результата }
case wX of
True : case wO of
True : … { Оба выиграли! Как это? Что то здесь тоже нужно вывести.. . Но что? }
False : WriteLn('WIN'); { X выиграл / О проиграл }
end;
False : case wO of
True : WriteLn('LOSE'); { X проиграл / О выиграл }
False : WriteLn('DRAW'); { Х проиграл / О проиграл }
end;
Вот и всё!
var M : array [1..3, 1..3] of Char;
wX, wO : Boolean;
…
ReadLn(M[1,1], M[1,2], M[1,3]);
ReadLn(M[2,1], M[2,2], M[2,3]);
ReadLn(M[3,1], M[3,2], M[3,3]);
…
{ Выиграл ли X }
wX := (M[1,1]='X') and (M[1,2]='X') and (M[1,3]='X') or { 3 горизонтальных строки}
(M[2,1]='X') and (M[2,2]='X') and (M[2,3]='X') or
(M[3,1]='X') and (M[3,2]='X') and (M[3,3]='X') or
(M[1,1]='X') and (M[2,1]='X') and (M[3,1]='X') or { 3 вертикальных столбца }
(M[1,2]='X') and (M[2,2]='X') and (M[3,2]='X') or
(M[1,3]='X') and (M[2,3]='X') and (M[3,3]='X') or
(M[1,1]='X') and (M[2,2]='X') and (M[3,3]='X') or { 2 диагонали }
(M[1,3]='X') and (M[2,2]='X') and (M[3,1]='X');
{ Выиграл ли O }
wX := (M[1,1]='O') and (M[1,2]='O') and (M[1,3]='O') or { 3 горизонтальных строки}
(M[2,1]='O') and (M[2,2]='O') and (M[2,3]='O') or
(M[3,1]='O') and (M[3,2]='O') and (M[3,3]='O') or
(M[1,1]='O') and (M[2,1]='O') and (M[3,1]='O') or { 3 вертикальных столбца }
(M[1,2]='O') and (M[2,2]='O') and (M[3,2]='O') or
(M[1,3]='O') and (M[2,3]='O') and (M[3,3]='O') or
(M[1,1]='O') and (M[2,2]='O') and (M[3,3]='O') or { 2 диагонали }
(M[1,3]='O') and (M[2,2]='O') and (M[3,1]='O');
{ Анализ результата }
case wX of
True : case wO of
True : … { Оба выиграли! Как это? Что то здесь тоже нужно вывести.. . Но что? }
False : WriteLn('WIN'); { X выиграл / О проиграл }
end;
False : case wO of
True : WriteLn('LOSE'); { X проиграл / О выиграл }
False : WriteLn('DRAW'); { Х проиграл / О проиграл }
end;
Вот и всё!
Похожие вопросы
- Решение задач по программированию в VBA...помогите....Пожалуйста
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите решить) Задачи по программированию в Паскале
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите пожалуйста составить решение с задачей по программированию(на любом языке программирования)
- Помогите с программой, пожалуйста! (Pascal) Или подскажите, где можно найти различные решения задач на Паскале?
- помогите решить задачи по программированию в ПАСКАЛЕ!!!
- Помогите решить задачу по Программированию в паскале.
- Зачем нужен решение математические задачи в программировании
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале