Мое творчество. Игра Шахматный сапёр

Видео, книги, журналы, научные статьи, (по тематике форума), наше творчество
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Что нужно реализовать:
  • Единый интерфейс задержки перехода хода от Человека к Компьютеру - пока 1)мышь и 2)ShowMessage - click OK.
  • Когда компьютер не угадывает фигуру - не видно, какую клетку он атакует, просто появляется сообщение "не угадал".
  • Поправить "глюк ФСФ" - двойное засчитывание фигуры при открытии и далее открытии её ряда.
  • При ходе Человека исправить глюк с обработкой нажатия на своё поле
  • Запретить Человеку делать несколько ходов поряд, не дожидаясь хода Компьютера
  • Вести статистику побед/поражений. Сделать таблицу рекордов.
  • Сделать сетевую игру людей
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Андрей писал(а):Михаил Киселев, зачем ты сделал то, что компьютер при открытии ряда открывает несколько рядов подряд, пока не встретит фигуру? У меня оставался последний ряд с 1 фигурой. Он 2 ряда открыл пустых, фигуры не обнаружил и открыл третий. Из-за этого у меня очки неправильно и начислялись.

Но ты понимал(-ешь), что компьютеру поставил нечестную игру?
Стоп. Такого на доске никогда не было видно.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Testgame V 1_5b6.rar
Последняя версия от меня до следующих выходных. Играбельна полностью, несмотря на вышеперечисленные недочёты.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Андрей писал(а):В общем, я полностью исправил начисление очков (=правильно), зато отключил мухлёж с открытием рядов, пока не встречена фигура.
Также, я нашёл ещё один глюк. Человек может, быстро щёлкая мышью, открыть 6-7 клеток, не дожидаясь хода Компьютера, в то время, как Компьютер успеет сделать всего один ход.
Такого вроде бы в старых версиях никогда не было. :scratch:
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Михаил Киселев писал(а):
Андрей писал(а):Михаил Киселев, зачем ты сделал то, что компьютер при открытии ряда открывает несколько рядов подряд, пока не встретит фигуру? У меня оставался последний ряд с 1 фигурой. Он 2 ряда открыл пустых, фигуры не обнаружил и открыл третий. Из-за этого у меня очки неправильно и начислялись.

Но ты понимал(-ешь), что компьютеру поставил нечестную игру?
Стоп. Такого на доске никогда не было видно.
Ну то, что тебе этого было не видно, не значит, что этого нет.
Можешь найти в коде слово "Мухлевать" и в режиме отладки или с ShowMessage проверить.
Так как он накручивал себе лишние очки я всё же докопался до сути.

Да там и в поиске фигур тоже мухлёж, 9 раз из 10 постоянно бьёт подряд 5 фигур. Что касается написания логики ИИ, тут ты невероятно плохого кода наворотил.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Не оправдывайся старым кодом. Он ряды сканирует незаметно, а открывает тот в котором фигура.

Я в логику игры пока ни строчки не вставлял (добавлял). Чисто улучшал "обвязку".
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Андрей писал(а):
Андрей писал(а):Михаил Киселев, зачем ты сделал то, что компьютер при открытии ряда открывает несколько рядов подряд, пока не встретит фигуру?
Но ты понимал(-ешь), что компьютеру поставил нечестную игру?
Да там и в поиске фигур тоже мухлёж, 9 раз из 10 постоянно бьёт подряд 5 фигур. Что касается написания логики ИИ, тут ты невероятно плохого кода наворотил.
Андрей, я конечно понимаю, что компьютер играет нечестно. Когда я писал код, у меня главная задача была сделать из компьютера игрока, с которым бы было более-менее интересно играть в Шахматный бой. Чтоб он постоянно не проигрывал.
Задача создать ИИ Шахматного боя, чтоб он довольно сильно играл честно - задача очень интересная, и хорошо бы её реализовать. Но такая задача мне, к сожалению, не по силам.

Я имел ввиду другое. Глюка, когда
Михаил Киселев писал(а): Человек может, быстро щёлкая мышью, открыть 6-7 клеток, не дожидаясь хода Компьютера, в то время, как Компьютер успеет сделать всего один ход.
не было ещё в версии 1.32. Он появился с версий 1.5... . Думаю, я догадываюсь, как можно исправить этот глюк, если ты не возражаешь, могу постараться его поправить.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Михаил Киселев писал(а): Задача создать ИИ Шахматного боя, чтоб он довольно сильно играл честно - задача очень интересная, и хорошо бы её реализовать. Но такая задача мне, к сожалению, не по силам.
Согласен! Более того игра очень интересна в противостоянии против другого человека, допустим до 3 побед. Логика выставления и логика поиска довольно нетривиальная. Можно, например, специально прятать 1-2 фигуры в битые поля. И человек хорош тем, что он играет следующую партию на основе анализа предыдущей, обучается. Комп же каждый раз видит доску, как баран - новые ворота (С.Ю. Шипов :))

Очень интересен момент с угадыванием фигуры и открытием ряда. Обе задачи тоже нетривиальны. Есть и вариант случайности (попал фигуру первым ходом - попробуй угадай!)
Аватара пользователя
Андрей
Архитектор
Сообщения: 7378
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 526 раз
Поблагодарили: 462 раза

Re: Мое творчество. Игра Шахматный бой

Сообщение Андрей »

Михаил Киселев писал(а):Глюка, когда
Михаил Киселев писал(а): Человек может, быстро щёлкая мышью, открыть 6-7 клеток, не дожидаясь хода Компьютера, в то время, как Компьютер успеет сделать всего один ход.
не было ещё в версии 1.32. Он появился с версий 1.5... . Думаю, я догадываюсь, как можно исправить этот глюк, если ты не возражаешь, могу постараться его поправить.
Да, это стоит в планах, ты можешь делать любые задачи из планов.

Я представляю себе поправку этого глюка так:

Код: Выделить всё

существует глобальная переменная, которая хранит, чей сейчас ход.
Если Человек походил - она переключается (ход Компа). Затем в обработке нажатия проверяется, Человека ли ход. Если нет - обработки нажатия не происходит. Когда комп походил, переменная переключается назад в прежнее значение (ход Человека). Достаточно (0/1).
А появился он из-за добавления звуков. Пока проигрывается звук, появилось некоторое время для исполнения наступающих событий (их обработки) и кода в них.
Михаил Киселев
Сообщения: 703
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 154 раза
Поблагодарили: 66 раз

Re: Мое творчество. Игра Шахматный бой

Сообщение Михаил Киселев »

Андрей писал(а):

Я представляю себе поправку этого глюка так:

Код: Выделить всё

существует глобальная переменная, которая хранит, чей сейчас ход.
Если Человек походил - она переключается (ход Компа). Затем в обработке нажатия проверяется, Человека ли ход. Если нет - обработки нажатия не происходит. Когда комп походил, переменная переключается назад в прежнее значение (ход Человека). Достаточно (0/1).
Я тоже так думаю. У меня такое в этой игре уже где-то было реализовано, но, наверное, не в этом месте.