Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11

Шашки, как способ скоротать время

06.02.2019, 19:36. Показов 7400. Ответов 9

Студворк — интернет-сервис помощи студентам
Всем привет! Начинаю новую безделушку.

Основную заготовку для шашек сделал, дальше - развитие.

Что уже есть:
1. Модель доски и её клеток (ячеек).
2. Проверка правильности выбора фишек для начала хода.
3. Правила для хода и боя шашек и дамок (для дамок только пока на один ход).
4. Подсчёт результата игры и запись лога партии, с возможностью просмотра предыдущих ходов.

Пока никакой автоматизации.

Что в планах:
1. Ход и бой "летающей" дамки.
2. Программирование игры против компьютера (алгоритм игры за компьютер буду подключать через плагин)
3. Игра по локальной сети.



Текущее состояние проекта в репозитории: https://github.com/ashsvis/Checkers
2
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2019, 19:36
Ответы с готовыми решениями:

Давайте создадим шашки онлайн, шашки между людьми
Давайте я создам шашки для двух игроков,со сменой цветов,с именами,с расстановкой шашек и сохранением позиции. А вы сделаете чтобы играть...

Игра шашки: Исправить копирование шашки заместо переставления
Почти написал шашки на с++, но есть одна проблема,При захвате шашки оно ейо не перставляет а копирует,вот код: //...

Есть ли способ во время исполнения процедуры узнать ее имя?
Есть ли способ во время исполнения проседуры узнать ее имя? Например: Private Form_Load() 'Какието действия Dim ProcName As...

9
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
06.02.2019, 20:21
Цитата Сообщение от ashsvis Посмотреть сообщение
Программирование игры против компьютера
прикрутите туда нейросеть, будет интересно
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
06.02.2019, 20:40  [ТС]
Цитата Сообщение от Рядовой Посмотреть сообщение
прикрутите туда нейросеть
Да, это сейчас модно. Но нейросеть предполагает обучение.
Для обучения обычно предлагается запустить игру программы самой с собой.
И для этого нужно сначала создать хотя бы самый "глупый" алгоритм для самостоятельной игры...

Так что начнём пока с оценочных функций, создадим базу дебютов...
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.02.2019, 16:51  [ТС]
Продолжаем делать "Русские шашки".

По плану работ:
1. Ход и бой "летающей" дамки.
2. Игра по локальной сети.
3. Механизм подключения плагинов с алгоритмами игры

С проверкой допустимости ходов фишек закончил:


Сейчас игра функциональна для двух игроков - гуманоидов, которые, толкаясь, играют на одном компьютере
и передают друг другу манипулятор "мышь" после очередного хода.

Содержимое проекта на момент публикации этой записи: Checkers.zip,
ну и про репозиторий не забывайте (ссылка в первом посте).
1
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
22.02.2019, 19:48  [ТС]
Для реализации пункта плана работ: 2. Игра по локальной сети,
пришлось сделать новое решение с поддержкой нескольких проектов.

Размещение нового репозитория: https://github.com/ashsvis/MoreCheckers
В первом проекте - сетевой клиент. Во втором - сервер приложений на WCF.

Потом появилась мысль перенести на сервер не только логику игры, но и отрисовку доски и шашек.
Клиент отрисовывает положение фишек, используя передаваемый ему сервером скрипт
(идея Storm23 из его блога: https://www.cyberforum.ru/blogs/529033/blog3834.html#comment20104)

То есть, отправляем нажатия и перемещения курсора мыши серверу, а получаем новый скрип, компилируем его и отрисовываем новую позицию.
2
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
04.03.2019, 18:29  [ТС]
Продолжаем делать "Русские шашки".

По плану работ:
1. Ход и бой "летающей" дамки.
2. Игра по локальной сети.
3. Механизм подключения плагинов с алгоритмами игры

Игру по локальной сети сделал:


Сейчас игра функциональна для двух игроков - гуманоидов, которые, уже не толкаясь,
играют каждый на своём компьютере по локальной сети.

Содержимое проекта на момент публикации этой записи: MoreCheckers.zip
Репозиторий игры находится здесь: https://github.com/ashsvis/MoreCheckers
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
04.03.2019, 23:54
ashsvis,
А почему код не разбит на модель, интерфейс, другие слои?
Почему все так сложно и зачем там рефлексия применяется?
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.03.2019, 11:31  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
код не разбит на модель, интерфейс,
Отчего же не разбит? В проекте CheckersAppServer классы Board, Cell и Address отвечают за модель,
класс Io отвечает за формирования вывода и приём событий движения курсора.

Собственно, сам проект Checkers с формой CheckersForms является интерфейсной частью.

Цитата Сообщение от Storm23 Посмотреть сообщение
Почему все так сложно
Как только пишешь что-нибудь посложнее, чем Hello World, то начинается сложно. Вроде всё нужно.

Цитата Сообщение от Storm23 Посмотреть сообщение
зачем там рефлексия применяется?
Если имеется ввиду механизм уведомления от сервера, то что в этом плохого?

Добавлено через 3 часа 0 минут
Цитата Сообщение от ashsvis Посмотреть сообщение
Почему все так сложно
Если я пишу простое приложение, делаю так:
C#
1
2
3
4
private void Button_Click(object sender, EventArgs e)
{
    this.Text = "Hello, World!";
}
А если я пишу приложение с поддержкой асинхронности, то делаю так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private void Button_Click(object sender, EventArgs e)
{
    SayHello();
}
 
private async void SayHello()
{
   var message = await SayHelloAsync("Hello, World!");
   var method = new MethodInvoker(() =>
   {
       this.Text = message;
   }
   if (InvokeRequired)
       BeginInvoke(method);
   else
       method();
}
 
public Task<string> SayHelloAsync(string message)
{
   var task = new Task<string>(() => SayHelloMethod(message));
   task.Start();
   return task;
}
 
public string SayHelloMethod(string message)
{
   return "I say: " + messsage;
}
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
05.03.2019, 11:44
Лучший ответ Сообщение было отмечено ashsvis как решение

Решение

Цитата Сообщение от ashsvis Посмотреть сообщение
А если я пишу приложение с поддержкой асинхронности, то делаю так:
После того как пройдет еще 10 лет, вы снова будете писать:

C#
1
2
3
4
private void btHello_Click(object sender, EventArgs e)
{
    this.Text = "Hello, World!";
}


Короче, overengineering у вас, имхо.

Цитата Сообщение от ashsvis Посмотреть сообщение
что в этом плохого
Плохо то, что вы применяете рефлексию, там где она не нужна.
Рефлексия - это болт на ООП.
2
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.03.2019, 12:06  [ТС]
пройдет еще 10 лет
await и async придумали, вот и пользуюсь.
До этого применял BackgroundWorker.
А что будет еще через 10 лет? Наверно код
будет еще проще и мы вернемся к
this.Text = "Hello, World!".

... а про рефлексию я все равно ничего не понял.
Дали бы ссылочку, почитать....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2019, 12:06
Помогаю со студенческими работами здесь

Шашки, Варианты хода шашки
Доброго времени суток, форумчане! Дали задание задание в университет, но в голове одна каша и не знаю с чего начать, кроме как просто...

Есть ли способ запустить программу, ограничив время ее выполнения и потребность оперативной памяти?
Подскажите пожалуйста, есть ли способ из cmd запустить программу, при этом ограничив время выполнения ее и потребность оперативной памяти?...

Есть ли способ получить координаты какого-либо значения элемента двумерного массива за константное время?
Есть ли способ получить координаты какого-либо значения элемента двумерного массива за константное время? Например, есть двумерный...

Как сделать шашки?
Здравствуйте, есть какой видео урок или статья как сделать шашки на Виндоус Форм. Какими объектами Windows Form нужно использовать для...

Как сделать ход шашки?
Подскажите,пожалуйста,как реализовать ход шашки? Чтобы именно та шашка,которую я выбрал - начинала ходить? Вот код,уже есть поле и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru