Программа для проверки победы в игре крестики нолики - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы