Моё творчество. Игра Шахматный сапёр
-
Андрей Карпишин
- Архитектор
- Сообщения: 9326
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов, МО
- Благодарил (а): 1283 раза
- Поблагодарили: 565 раз
Re: Мое творчество. Игра Шахматный бой
Михаил Киселев, нет, жёлтый цвет отлично подходит, я уже играл и с компом и с людьми.
Он подходит лучше других, так как менее всего закрашивает содержимое клетки, как твой тёмно-синий - наоборот не подходит.
К тому же, в светофоре жёлтый означает - "внимание". Именно внимание нужно сосредоточить на жёлтых клетках, чтобы вычислить фигуру.
Нет сути в твоих аргументах, вкусовщина. Ты вначале говорил, что мигание клетки при выстреле тоже раздражать будет. Я тебя тогда еле убедил.
Он подходит лучше других, так как менее всего закрашивает содержимое клетки, как твой тёмно-синий - наоборот не подходит.
К тому же, в светофоре жёлтый означает - "внимание". Именно внимание нужно сосредоточить на жёлтых клетках, чтобы вычислить фигуру.
Нет сути в твоих аргументах, вкусовщина. Ты вначале говорил, что мигание клетки при выстреле тоже раздражать будет. Я тебя тогда еле убедил.
-
Михаил Киселев
- Сообщения: 719
- Зарегистрирован: 22 дек 2017, 13:55
- Благодарил (а): 162 раза
- Поблагодарили: 69 раз
Re: Мое творчество. Игра Шахматный бой
Андрей, при игре с пятью фигурами с компьютером обнаружился глюк когда компьютер не смог открыть с первого раза Слона на d5, после того как я открыл ряд 5, комп открыл короля на b7 и завис то есть вечно задумался над следующим ходом. Спасло только расставить фигуры заново.
Во второй игре на d5 вылезло ##. Комп думает слишком долго для компа, попробую изменить тайминг со 100 до 40.
Если компьютер не угадывает фигуру, после того как я открываю ряд. Надпись - "Ряд открыт, компьютер ходит" - не меняется, компьютер дальше не ходит. Я на своем поле тоже ничего выставить левой кнопкой не могу. Правая кнопка работает.
Компьютер на своем поле показал на e5 ##
Во второй игре на d5 вылезло ##. Комп думает слишком долго для компа, попробую изменить тайминг со 100 до 40.
Если компьютер не угадывает фигуру, после того как я открываю ряд. Надпись - "Ряд открыт, компьютер ходит" - не меняется, компьютер дальше не ходит. Я на своем поле тоже ничего выставить левой кнопкой не могу. Правая кнопка работает.
Компьютер на своем поле показал на e5 ##
-
Андрей Карпишин
- Архитектор
- Сообщения: 9326
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов, МО
- Благодарил (а): 1283 раза
- Поблагодарили: 565 раз
Re: Мое творчество. Игра Шахматный бой
У меня таких глюков не было. Локальная часть меня больше не интересует. Код настолько ужасен, что трогать не буду. Мне не нравится, что компьютер постоянно угадывает фигуры, из-за этого трудно поймать момент этот. Он жульничает и подглядывает.
В общем, вариант - ждать, пока я закончу и оттестирую сетевую часть. Потом вышлю исходник и будешь ковырять локальную.
P.S. Читерство компа реально меня бесит. Я использую спец-расстановки, в которых никакими методами нельзя угадать фигуру, комп их с первого раза угадывает. Из-за этого нельзя нормально тренироваться перед сетевыми битвами, нельзя нормально оценить силу своих расстановок. Это всё равно, что в шахматах комп делал бы 2-3 хода подряд. Хоть один умный игрок стал бы тренироваться и готовиться с таким барахлом?
Лезть в эту локальную часть тоже не хочу. Как правильно заметил BDK, её лучше с нуля переписать, но данный вид работы мне не интересен. Я знаю, что с этой задачей справлюсь, сложности она не представляет, но и интереса нет делать эту рутинную работу.
Читерство при открытии ряда, я пометил комментом в коде, Михаил Киселев вернул читы назад, хрен с ним, с открытием ряда. Угадывание фигуры надо было сделать реальным рандомом, это самый важный пункт в механике игры, который содержит 75% конечного успеха, т.е. если все 5 фигур подходят под "?" кидается random(5) и выбирается любое значение. Любые другие попытки подглядывания нужно жёстко пресекать!
В общем, вариант - ждать, пока я закончу и оттестирую сетевую часть. Потом вышлю исходник и будешь ковырять локальную.
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Если условие верно - то угадал. Получается, чтобы комп НЕ УГАДАЛ либо
Код: Выделить всё
oКод: Выделить всё
fi+sc+ad+failplВот когда ты мне распишешь логику этого условия, я ещё какой-то диалог начну по корректировке.
-
Андрей Карпишин
- Архитектор
- Сообщения: 9326
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов, МО
- Благодарил (а): 1283 раза
- Поблагодарили: 565 раз
Re: Мое творчество. Игра Шахматный сапёр
Увеличил это долбаное число 17 до 27. И то первую фигуру типа "угадал", вторую тока не угадал.
Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть. А вот если бы комп угадывал реально, этот глюк бы сразу заметили.
90% уверенности, что этот глюк:
Этот глюк подтверждаю. Сейчас проверю его же в версии 1.82 твоей.MK писал(а):Если компьютер не угадывает фигуру, после того как я открываю ряд. Надпись - "Ряд открыт, компьютер ходит" - не меняется, компьютер дальше не ходит.
Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть. А вот если бы комп угадывал реально, этот глюк бы сразу заметили.
90% уверенности, что этот глюк:
тоже тянется с версии 1.82, потому что я НЕ ТРОГАЛ логику процедуры CompMove.MK писал(а):при игре с пятью фигурами с компьютером обнаружился глюк когда компьютер не смог открыть с первого раза Слона на d5, после того как я открыл ряд 5, комп открыл короля на b7 и завис то есть вечно задумался над следующим ходом. Спасло только расставить фигуры заново.
вот это может быть и новый глюк, потому что с выводом я чуть-чуть пошаманил. Но мне непонятно где вылезло, когда вылезло. Нужны скриншоты и последовательность действий.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.
Может мне стоит прислать исходники версии 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: Мое творчество. Игра Шахматный сапёр
Этот глюк появился, когда мы убрали процедуру OnMouseMove - ход компьютера по двигу мыши.
С тех пор его никто не заметил, потому что не встретил.
Убирается он легко, достаточно в конец процедуры OpenRZ вставить вызов CompMove, это я уже сделал.
-
Андрей Карпишин
- Архитектор
- Сообщения: 9326
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов, МО
- Благодарил (а): 1283 раза
- Поблагодарили: 565 раз
Re: Мое творчество. Игра Шахматный сапёр
Дело в том, что твоё условие по угадыванию фигуры зависит чисто от "настроения" компа.
Каким бы большИм не было число справа в random, существует вероятность, что он выкинет случайно малое число на диапазоне (=0 =1), и всё равно угадает фигуру. Понятно, что для сверхбольших диапазонов, вроде 1000, такой шанс уменьшается в разы. Но 17? Я менял даже на 37, всё равно он угадывает 5 подряд.
Каким бы большИм не было число справа в 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