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

Видео, книги, журналы, научные статьи, (по тематике форума), наше творчество
Михаил Киселев
Сообщения: 359
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 58 раз
Поблагодарили: 32 раза

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

Сообщение Михаил Киселев » 07 янв 2019, 08:48

Мне кажется, если сделать желтый цвет в открытых битых чуть потемнее глазу было бы приятнее. Или лучше даже тот же синий как при неправильно открытых фигурах на левой доске. Желтый все же раздражает, а на этих клетках надо концентрироваться. Плюс старое правило офомления стенгазеты: цветов не должно быть больше трех.

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 07 янв 2019, 11:18

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

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

Нет сути в твоих аргументах, вкусовщина. Ты вначале говорил, что мигание клетки при выстреле тоже раздражать будет. Я тебя тогда еле убедил.
Конец жизни – это начало жизни где-то,
Ничто не появляется из ниоткуда, даже планеты.
И мы летим вперёд, доверившись Божественным вёслам,
Не бойся будущего, не жалей о прошлом.

Михаил Киселев
Сообщения: 359
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 58 раз
Поблагодарили: 32 раза

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

Сообщение Михаил Киселев » 07 янв 2019, 13:29

Андрей, хорошо, пусть остается желтый.

Михаил Киселев
Сообщения: 359
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 58 раз
Поблагодарили: 32 раза

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

Сообщение Михаил Киселев » 07 янв 2019, 16:38

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

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

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

Компьютер на своем поле показал на e5 ##

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 07 янв 2019, 18:03

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

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

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

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

Читерство при открытии ряда, я пометил комментом в коде, Михаил Киселев вернул читы назад, хрен с ним, с открытием ряда. Угадывание фигуры надо было сделать реальным рандомом, это самый важный пункт в механике игры, который содержит 75% конечного успеха, т.е. если все 5 фигур подходят под "?" кидается random(5) и выбирается любое значение. Любые другие попытки подглядывания нужно жёстко пресекать!
Конец жизни – это начало жизни где-то,
Ничто не появляется из ниоткуда, даже планеты.
И мы летим вперёд, доверившись Божественным вёслам,
Не бойся будущего, не жалей о прошлом.

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 07 янв 2019, 22:03

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

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

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

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

Вот когда ты мне распишешь логику этого условия, я ещё какой-то диалог начну по корректировке.
Конец жизни – это начало жизни где-то,
Ничто не появляется из ниоткуда, даже планеты.
И мы летим вперёд, доверившись Божественным вёслам,
Не бойся будущего, не жалей о прошлом.

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 07 янв 2019, 22:35

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

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

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

Михаил Киселев
Сообщения: 359
Зарегистрирован: 22 дек 2017, 13:55
Благодарил (а): 58 раз
Поблагодарили: 32 раза

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

Сообщение Михаил Киселев » 07 янв 2019, 22:53

Странно, тоже сейчас увеличивал это число в версии 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.

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 08 янв 2019, 10:58

Андрей писал(а): Увеличил число до 37, чтобы в версии 1.82 не угадал фигуру. Глюк повторился. Значит, он тянется ещё с твоей версии (которую ты мне высылал) - чаще надо было играть. А вот если бы комп угадывал реально, этот глюк бы сразу заметили.
Этот глюк появился, когда мы убрали процедуру OnMouseMove - ход компьютера по двигу мыши.
С тех пор его никто не заметил, потому что не встретил.
Убирается он легко, достаточно в конец процедуры OpenRZ вставить вызов CompMove, это я уже сделал.
Конец жизни – это начало жизни где-то,
Ничто не появляется из ниоткуда, даже планеты.
И мы летим вперёд, доверившись Божественным вёслам,
Не бойся будущего, не жалей о прошлом.

Аватара пользователя
Андрей
Архитектор
Сообщения: 3928
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 413 раз
Поблагодарили: 258 раз

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

Сообщение Андрей » 08 янв 2019, 11:04

Дело в том, что твоё условие по угадыванию фигуры зависит чисто от "настроения" компа.
Каким бы большИм не было число справа в random, существует вероятность, что он выкинет случайно малое число на диапазоне (=0 =1), и всё равно угадает фигуру. Понятно, что для сверхбольших диапазонов, вроде 1000, такой шанс уменьшается в разы. Но 17? Я менял даже на 37, всё равно он угадывает 5 подряд.
Конец жизни – это начало жизни где-то,
Ничто не появляется из ниоткуда, даже планеты.
И мы летим вперёд, доверившись Божественным вёслам,
Не бойся будущего, не жалей о прошлом.