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

Игра Ход конем 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
201.1 kB
KnightMove-main.zip
573.7 kB
Оцени работу

0

рейтинг

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