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

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

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

Сообщение Андрей Карпишин »

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

Он подходит лучше других, так как менее всего закрашивает содержимое клетки, как твой тёмно-синий - наоборот не подходит.
К тому же, в светофоре жёлтый означает - "внимание". Именно внимание нужно сосредоточить на жёлтых клетках, чтобы вычислить фигуру.

Нет сути в твоих аргументах, вкусовщина. Ты вначале говорил, что мигание клетки при выстреле тоже раздражать будет. Я тебя тогда еле убедил.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Андрей, хорошо, пусть остается желтый.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Андрей, при игре с пятью фигурами с компьютером обнаружился глюк когда компьютер не смог открыть с первого раза Слона на d5, после того как я открыл ряд 5, комп открыл короля на b7 и завис то есть вечно задумался над следующим ходом. Спасло только расставить фигуры заново.

Во второй игре на d5 вылезло ##. Комп думает слишком долго для компа, попробую изменить тайминг со 100 до 40.

Если компьютер не угадывает фигуру, после того как я открываю ряд. Надпись - "Ряд открыт, компьютер ходит" - не меняется, компьютер дальше не ходит. Я на своем поле тоже ничего выставить левой кнопкой не могу. Правая кнопка работает.

Компьютер на своем поле показал на e5 ##
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

У меня таких глюков не было. Локальная часть меня больше не интересует. Код настолько ужасен, что трогать не буду. Мне не нравится, что компьютер постоянно угадывает фигуры, из-за этого трудно поймать момент этот. Он жульничает и подглядывает.

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

P.S. Читерство компа реально меня бесит. Я использую спец-расстановки, в которых никакими методами нельзя угадать фигуру, комп их с первого раза угадывает. Из-за этого нельзя нормально тренироваться перед сетевыми битвами, нельзя нормально оценить силу своих расстановок. Это всё равно, что в шахматах комп делал бы 2-3 хода подряд. Хоть один умный игрок стал бы тренироваться и готовиться с таким барахлом?

Лезть в эту локальную часть тоже не хочу. Как правильно заметил BDK, её лучше с нуля переписать, но данный вид работы мне не интересен. Я знаю, что с этой задачей справлюсь, сложности она не представляет, но и интереса нет делать эту рутинную работу.

Читерство при открытии ряда, я пометил комментом в коде, Михаил Киселев вернул читы назад, хрен с ним, с открытием ряда. Угадывание фигуры надо было сделать реальным рандомом, это самый важный пункт в механике игры, который содержит 75% конечного успеха, т.е. если все 5 фигур подходят под "?" кидается random(5) и выбирается любое значение. Любые другие попытки подглядывания нужно жёстко пресекать!
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

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

if fi+sc+ad+failpl > trunc(random((8*o)+17)) then
по этому условию проверяется, угадал комп фигуру или нет... Это условие - полный БРЕД, набор каких-то галимых переменных.
Если условие верно - то угадал. Получается, чтобы комп НЕ УГАДАЛ либо должно быть как можно больше, либо

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

fi+sc+ad+failpl
должны быть как можно меньше.

Вот когда ты мне распишешь логику этого условия, я ещё какой-то диалог начну по корректировке.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Увеличил это долбаное число 17 до 27. И то первую фигуру типа "угадал", вторую тока не угадал.
MK писал(а):Если компьютер не угадывает фигуру, после того как я открываю ряд. Надпись - "Ряд открыт, компьютер ходит" - не меняется, компьютер дальше не ходит.
Этот глюк подтверждаю. Сейчас проверю его же в версии 1.82 твоей.

Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть. А вот если бы комп угадывал реально, этот глюк бы сразу заметили.

90% уверенности, что этот глюк:
MK писал(а):при игре с пятью фигурами с компьютером обнаружился глюк когда компьютер не смог открыть с первого раза Слона на d5, после того как я открыл ряд 5, комп открыл короля на b7 и завис то есть вечно задумался над следующим ходом. Спасло только расставить фигуры заново.
тоже тянется с версии 1.82, потому что я НЕ ТРОГАЛ логику процедуры CompMove.
MK писал(а):вылезло ##
вот это может быть и новый глюк, потому что с выводом я чуть-чуть пошаманил. Но мне непонятно где вылезло, когда вылезло. Нужны скриншоты и последовательность действий.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Странно, тоже сейчас увеличивал это число в версии 1.82, но меня глюка с зависанием при неугадывании компом фигуры не было хотя играл с неугадываемыми компом фигурами много раз.
Может мне стоит прислать исходники версии 1.82 ещё раз? Впрочем исходник этой версии есть на твоей почте, полагаю исходник на почте такой же как у меня.
Я понимаю твои негативные эмоции и ещё раз прошу извенения за дурацкое программирование.

Да, согласен код if fi+sc+ad+failpl > trunc(random((8*o)+17)) then надо заменить хотя бы на if fi+sc+ad+failpl > trunc(random((8*o*(o-count))+17)) then

o - это колличество расставляемых фигур (2-5)
count - счетчик колличества угаданных фигур (0-5)

fi - в начале игры 0 потом увеличивается за каждую найденную фигуру примерно на +12
sc - переменная которая увеличивается на единицу после каждого сделанного компьютером хода, после нахождения фигуры увеличивается на 2

ad - переменная которая величина зависит от колличества битых и пустых полей по вертикалиям, горизонталям и диагоналям от найденной фигуры . В общем, в этой переменой и идет какой-то анализ с какой вероятностью фигура должна быть угадана в зависимости от пустых и битых полей.

Переменная ad используется в игре ТОЛЬКО для угадывания фигуры, так что с ней можно смело эксперементировать для получения более объективной возможности угадывания.


Failpl - переменная которая увеличивается каждый раз на 8 если фигура не угадана, когда фигура угадана она опять становится 0.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Андрей писал(а): Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть. А вот если бы комп угадывал реально, этот глюк бы сразу заметили.
Этот глюк появился, когда мы убрали процедуру OnMouseMove - ход компьютера по двигу мыши.
С тех пор его никто не заметил, потому что не встретил.
Убирается он легко, достаточно в конец процедуры OpenRZ вставить вызов CompMove, это я уже сделал.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9326
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1283 раза
Поблагодарили: 565 раз

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

Сообщение Андрей Карпишин »

Дело в том, что твоё условие по угадыванию фигуры зависит чисто от "настроения" компа.
Каким бы большИм не было число справа в random, существует вероятность, что он выкинет случайно малое число на диапазоне (=0 =1), и всё равно угадает фигуру. Понятно, что для сверхбольших диапазонов, вроде 1000, такой шанс уменьшается в разы. Но 17? Я менял даже на 37, всё равно он угадывает 5 подряд.
Михаил Киселев
Сообщения: 719
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 162 раза
Поблагодарили: 69 раз

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

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

Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть.
Играл много ситуации с неугадыванием были.
И да в версии 1.82 горит надпись "Ряд открыт, компьютер ходит" дольше чем нужно - но при этом можно запросто дальше играть щелкая левой клавишей мыши по полю противника - клетки продолжают закрашиваться, Поэтому я этого раньше и не замечал. В версии 2.00 щелкать ЛКМ в этом случае бесполезно - функция заблокирована.

Изменил в версии 1.82 строчку условия отгадывания фигуры на

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

if fi+sc+ad+failpl > trunc(random((8*o*(o-count))+17)) then
Работает с пятью фигурами гораздо реальней. Я ранее с пятью фигурами почти не играл, и не думал, что кто-то играть увлечется с 5-ю фигурами- всё таки сложновато для большинства. Поэтому и дурацкость алгоритма для 5-ти фигур только сейчас и вылезает.