Программа для проверки победы в игре крестики нолики - C#
Формулировка задачи:
Текст задачи на одном из обучающих курсов: "Методу GetGameResult передается поле, представленное массивом 3х3 из enum Markers. Вам надо вернуть победителя CrossWin или CircleWin, если таковой имеется или Draw, если выигрышной последовательности нет ни у одного, либо есть у обоих.
Постарайтесь придумать красивое, понятное решение.
Подумайте, как разбить задачу на более простые подзадачи. Попытайтесь выделить один или два вспомогательных метода.
На роль вспомогательного метода хорошо сойдет bool HasWinSequence(Mark[,] field, Mark mark), определяющий есть ли выигрышная последовательность у mark. Он позволит не дублировать логику для крестиков и ноликов.
HasWinSequence может быть все еще слишком сложным методом. Подумайте, как его можно разбить на подзадачи."
Сам проект прикреплен снизу. Если можно помогите упростить программу и подсказать как правильно сделать проверку в выигрышной ситуации(вроде для проверки столбцов и строк у меня получилось). Желательно свернуть мои большие награмождения из if`ов и else`ов и подскажите как отрефакторить этот код. И не использовать ничего сложнее массивов, циклов, ветвлений, ведь это только начало обучающего курса.
Решение задачи: «Программа для проверки победы в игре крестики нолики»
textual
Листинг программы
public static GameResult GetGameResult(Mark[,] field) { bool circleWin = HasWinSequence(field, Mark.Circle); bool crossWin = HasWinSequence(field, Mark.Cross); if (circleWin == crossWin) return GameResult.Draw; return circleWin ? GameResult.CircleWin : GameResult.CrossWin; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д