IPB
ЛогинПароль:

> Игра ШАХМАТЫ
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  1  +


Зацените игрушку. Писал давно, ради интереса. AI не очень сильный, но меня порой обыгрывает :) управлять можно как мышкой так и клавиатурой. В исходнике много комментариев (даже наверное чересчур), зато нетрудно понять как она работает.


Прикрепленные файлы
Прикрепленный файл  CHESS.PAS ( 39.11 килобайт ) Кол-во скачиваний: 3502
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Кажется, я понял, почему замена 4 на 5 не принесла улучшения.. Поскольку это полуходы (то есть ходы только одной стороны, то убеличивать нужно только на два - то есть, чтоб число оставалось четным. Так? ))

Далее, мне показался не очень убедительным аргумент в комментравиях:
Цитата
{если максимальная оценка хода для игрока А (альфа) превысила
максимальную нценку для игрока Б (бета), которая была получена на
предыдущем ходе, то мы может досрочно прекратить перебор и вернуть
альфа в качестве результата, т.к. уровнем выше мы все равно выберем
ход с максимальной оценкой (альфа) и поднимать ее еще выше не имеет
смысла. Если мы продолжим перебор то альфа будет только увеличиваться}
Я закомментировал вторую часть условия в идущим за ним операторе if:
while (a<>list.c+1) {and (alpha<beta)} do

После этого думать она стала, вроде, подольше, но играть стала (тоже вроде) получше - кажется?

Пока еще не собрался поглубже посмотреть код. Но, надеюсь, скоро соберусь (если кто-нибудь не сделает этого раньше))

...
Немного посмотрел.. Задача разбивается на четыре.
1. Алгоритм подсчета целевой функции. Он занимает не очень много места - процедуры evaluate и search, а также константы (вес). Если его оптимизировать, можно будет увеличить глубину до 6.
2. Определение корректности хода. Эта часть приличная по объему. Логику надо улучшить..
3. Графика. Мммм.. Ну просто руки чешутся все переделать )).
4. Управление (клава и мышь). Тоже нужно поменять организацию, даже если оставаться в рамках DOS.

Конечно, желательно было бы всю прогу так и организовать - по этим разделам..

Попробовал внести некоторые изменения в отрисовку - чуть голову не сломал.. Но работает, и это плюс! )) Надо было сделать паттерны для всего, включая пустые клетки и фигуры на подсвеченных полях. Памяти же не жалко )). Было бы значительно лучше со всех точек зрения.

Ну что, продолжать? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  1  +


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

клавиатура и мышь и так прекрасно работают, что там оптимизировать?

Что касается функции, которая проверяет корректность хода, в ней действительно куча лишних условий. я там вообще не использовал скобок. в ней для каждой фигуры написано по одному большому условию, и если использовать скобки, то работать она будет быстрее, но принцип работы станет совершенно непонятен. игрушку я периодически дорабатываю, поэтому не спешу приводить функцию к законченному виду.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Sybreed @ 25.08.2011 21:10) *
мм... ну отрисовку я улучшил как мог, сначала пытался рисовать фигуры линиями и затем заливать их цветом, но это оказалось настолько медленно, что я решил использовать битмапы. в начале загрузки можно заметить как фигуры моргают одна за другой, отрисовываясь для запоминания в памяти, а затем уже появляется доска. если есть идеи как сделать отрисовку еще быстрее, то мне будет любопытно узнать smile.gif
Идея все та же: паттерны (или битмапы, как ты их зовешь, хотя это не совсем правильно). Только нужно сделать ВСЕ паттерны. То есть все фигуры на всех фонах. А дальше - только плеваться ими. Речь тут о правильной организации. Ты прошел только полпути, поскольку выбрал неверный способ организации. Если хочешь, можно обсудить.

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

Цитата
Что касается функции, которая проверяет корректность хода, в ней действительно куча лишних условий. я там вообще не использовал скобок. в ней для каждой фигуры написано по одному большому условию, и если использовать скобки, то работать она будет быстрее, но принцип работы станет совершенно непонятен. игрушку я периодически дорабатываю, поэтому не спешу приводить функцию к законченному виду.
Здесь пока ничего не буду говорить, кроме того, что там есть небольшая ошибочка. Попробуй ПЕРВЫМ ходом заставить пешку пойти вбок (вперед-влево). Да, пешки так не ходят. Но и программа не должна валиться с ошибокой при этом )). Это я тоже исправил..

Короче, хотел я просто улучшить рисование. У тебя при КАЖДОМ движении курсора идет ПОЛНАЯ отрисовка доски. Зачем?? Я, конечно, хотел сделать, как надо, но потом понял, что нужно переделывать просто ВСЕ.. Поэтому, посидев часа полтора, я все же сделал, как НЕ надо. Но все же немного покрасивше )).

Файл в кодировке 1251 (расширение txt): -скоро-будет- готово: Прикрепленный файл  fp110823_Sybreed.txt ( 40.58 килобайт ) Кол-во скачиваний: 1639

Файл в кодировке 866 (расширение pas): -скоро-будет- готово: Прикрепленный файл  fp110823_Sybreed.pas ( 40.58 килобайт ) Кол-во скачиваний: 1639


-Упс!--Извиняюсь,-там-ошибки..---Забрал-на-доработку-))--Скоро-верну-(как-новые!)- smile.gif

Исправил (между ужином и телевизором, могут быть еще ошибки).
Еще пара замечаний.. Не надо делать одновременно поля записи a и переменную цикла a - это мешает использовать with. Я исправил параметры цикла на i и j - это намного естественнее.
Обрати внимание на формат кода.. Это тебе сильно поможет.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Sybreed   Игра ШАХМАТЫ   24.08.2011 4:30
Lapp   Зацените игрушку. Писал давно, ради интереса. AI н…   24.08.2011 11:09
Lapp   Кажется, я понял, почему замена 4 на 5 не принесла…   25.08.2011 12:19
Sybreed   мм... ну отрисовку я улучшил как мог, сначала пыта…   26.08.2011 0:10
Lapp   мм... ну отрисовку я улучшил как мог, сначала пыта…   26.08.2011 13:54
IUnknown   Sybreed Там еще до оптимизации работы полно. Начне…   26.08.2011 15:25
Lapp   Никогда не оставляй неинициализированных переменны…   26.08.2011 16:03
TarasBer   > Начнем с того, что у тебя вообще не проверяет…   29.08.2011 14:01
IUnknown   Открою тебе тайну: в современном мире программисты…   29.08.2011 14:12
TarasBer   > Но к тебе это, разумеется, не относится - ты …   29.08.2011 14:24
TarasBer   В общем я, как и обещал, посмотрел игру дома. Крут…   5.09.2011 13:29
Рамз)   Зацените игрушку. Писал давно, ради интереса. AI …   30.10.2011 16:39
Lilit   у меня игра не работает....((((что делать????   19.09.2013 20:48
Sybreed   отписываюсь о некоторых ошибках, которые нашел в ш…   23.11.2014 21:12


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 12:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name