На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Игра Ход конем C# (Курсовая с отчетом)

Задание

Реализовать компьютерную игру “Ход конем” со следующими правилами. Имеется шахматная доска с конем b1. Игроку предлагается “обскакать” все клетки доски, стремясь минимизировать количество повторных попаданий в одну и ту же клетку. Игра окончена, когда конь посетил все клетки хотя бы по одному разу. Приложение должно вести счет ходов в текущей партии, а также хранить лучший (наименьший) счет текущего пользователя. Завершив игру, пользователь должен иметь возможность сохранить путь коня в файл.

Функционал программы

  • Непосредственно игра «Ход конём»
  • Подсчет ходов в текущей партии
  • Сохранение параметров (рекорды, настройки) при перезапуске игры для каждого пользователя
  • Запись пути коня в файл
  • Справочное окно

Содержание отчета к программе

В отчете 30 страниц.

  • Введение
  • Задание на курсовую работу
  • Постановка задачи
  • Теоретическая часть
  • Общие сведения
  • Функциональное назначение
  • Структура решения
  • Описание программного интерфейса
  • Описание внетреннего взаимодействия
  • Проектная часть
  • Заключение
  • Список использованных источников
  • Приложение 1. Chessboard.cs
  • Приложение 2. MainForm.cs
  • Приложение 3. GameControl.cs
  • Приложение 4. ChessboardControl.cs

Фрагмент программного кода

/// <summary> 
/// Данный элемент управления выполняет следующие задачи 
/// <list type="number"> 
/// <item>Визуализация состояния игровой модели пользователю</item> 
/// <item>Получение команд на перемещение коня и передача их игровой модели</item> 
/// </list> 
/// </summary> 
public partial class ChessboardControl : UserControl 
{ 
    private readonly Coordinate occupiedCoordinate = new Coordinate("b1"); // координата клетки, где сейчас конь
    private SquareControl occupiedSquare; // сама клетка, где сейчас конь
    private List<SquareControl> destinationSquares = new List<SquareControl>(); // клетки, в которые конь может пойти
  
    public ChessboardControl() 
    { 
        InitializeComponent(); 
        destinationSquares.AddRange(new[] // в начале игры, конь - в b1
        { 
            a3SquareControl, 
            c3SquareControl, 
            d2SquareControl 
        }); 
    } 
    // свойство для возврата координаты клетки, в которой находится конь из переменной; используется для оптимизации
    private SquareControl OccupiedSquare => occupiedSquare 
        ?? (occupiedSquare = Controls.OfType<SquareControl>().Single(sc => sc.Coordinate == occupiedCoordinate)); 
      // получает и возвращает координату клетки, в которой находится конь; при установке координаты: конь снимается со своей клетки и помещается в новую + увеличивается счет
    public Coordinate OccupiedCoordinate 
    { 
        get => occupiedCoordinate; 
        set 
        { 
            occupiedCoordinate.Assign(value); 
            OccupiedSquare.Mode = SquareMode.Clean; 
            occupiedSquare = Controls.OfType<SquareControl>().Single(sc => sc.Coordinate == value); 
            occupiedSquare.Mode = SquareMode.Occupied; 
            occupiedSquare.Score++; 
        } 
    } 
      // свойство для доступа к переменной, хранящей список клеток, в которые может пойти конь; особенно интересна установка: очищает все клетки, в которые конь мог пойти из предыдущей клетки и устанавливает новые    // согласно текущей клетке, в которой  сейчас (после совершения хода) находится конь
    public IEnumerable<Coordinate> DestinationCoordinates 
    { 
        get => destinationSquares.Select(ds => new Coordinate(ds.Coordinate)); 
        set 
        { 
            foreach (var square in destinationSquares.Where(ds => ds.Mode != SquareMode.Occupied)) 
            { 
                square.Mode = SquareMode.Clean; 
            } 
            destinationSquares = value.Select(d => Controls.OfType<SquareControl>().Single(c => c.Coordinate == d)).ToList(); 
            destinationSquares.ForEach(ds => ds.Mode = SquareMode.Destination); 
        } 
    } 
      // событие, которое происходит при ходе конем; используется в родительских контролах
    [Browsable(true), Category(Constant.Miscellaneous.Name)] 
    public event MoveKnightEventHandler MoveKnight; 
      // генерация события MoveKnight (вызов обработчиков)
    protected virtual void OnMoveKnight(MoveKnightEventArgs e) 
    { 
        if (MoveKnight != null) 
        { 
            MoveKnight(this, e); 
        } 
    } 
      // обработчик щелчка пользователя по клетке шахматной доски
    private void SquareControl_Click(object sender, System.EventArgs e) 
    { 
        var destination = (SquareControl)sender; // щелкнутая клетка
        if (destination.Mode != SquareMode.Destination) 
        { 
            return; // если в эту клетку нельзя пойти, то ничего не произойдет
        } 
        OnMoveKnight(new MoveKnightEventArgs { DestinationCoordinate = destination.Coordinate }); // генерируем событие хода; оно обработается в родительском контроле => изменяется данные => обновится доска
    } 
      // сброс игры в начальное состояние, используется для обработки команды меню Игра→Заново
    public void Reset() 
    { 
        foreach (var control in Controls.OfType<SquareControl>()) 
        { 
            control.Mode = SquareMode.Clean; 
            control.Score = 0; 
        } 
    } 
} 

Скриншот архива с проектом

Пояснения по запуску программы

Прежде всего, распакуйте полученный архив. Я разрабатывал в Visual Studio Community 2022 под .NET Framework 4.7.2. Определенная совместимость вперед-назад по среде разработке и платформе, естественно, имеется, но проще использовать то же самое (разве что Visual Studio можно взять не Community, а Professional, если есть :p).

Загрузите решение KinightMove.sln (из директории KnightMove-main) в Visual Studio. Для работы с файлами используются NuGet-пакеты, их надо скачать. Для этого в Solution Explorer (Ctrl-Alt-L) щелкните правой кнопкой по решению и, далее, Restore NuGet Packages.

Запускать нужно проект WinApp: в Solution Explorer его название должно иметь полужирное начертание. В принципе это так и есть, но вдруг... Тогда нужно сделать щелчок правой кнопкой мыши по WinApp и выбрать Set as Startup Project.

Запускается стандартно, кнопкой Start (F5).

Правила игры – F1. Вкратце: нужно щелкать по клеткам доски для перемещения коня, чтобы во всех клетках появилась зеленая галочка.

Купить 2000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

2000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

ExplanatoryNote.docx
205907
KnightMove-main.zip
587427
Оцени работу

рейтинг

Игра Ход конем C# (Курсовая с отчетом)
Курсовая работа по программированию. Язык: C#. Игра «Ход конём». В архиве: – пояснительная записка (30 страниц, теоретическая часть: обзор прочитанной литературы о проектировании ПО); – исходники.
Категория: Образование
Стоимость: 2000,00