Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Еще одна игрушка с развитым гипотоламусом, aka Шахматы 
:(
    Опции темы
Platon
Дата 12.11.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



У меня есть листнер, и то он чисто - ход сделан (для визуализации игры)  и уведомление о конце хода. 

Предлагаю глянуть в исходники.
PM MAIL ICQ   Вверх
Platon
Дата 12.11.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Мдее, у меня тоже не особо густо опыта с ИИ вот ти решил попробовать с мозгом поэксперементировать.
PM MAIL ICQ   Вверх
Felan
Дата 13.11.2007, 09:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Цитата(Platon @  11.11.2007,  21:30 Найти цитируемый пост)
Felan, я думаю, ты имеешь ввиду стремление к слабой связности компонентов системы?

Именно smile

Только вот это не надо.
Цитата(Platon @  11.11.2007,  21:30 Найти цитируемый пост)
Но, для хумана будет еще 1 параметр: указатель на визуализацию игры.

Рисоваться движок должен сам, это не функции игрока. Игрок только делает ход. В остальном вроде нормально smile На мой вкус smile


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Platon
Дата 13.11.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(Felan @  13.11.2007,  10:33 Найти цитируемый пост)
Рисоваться движок должен сам, это не функции игрока.

Спорный вопрос, и мне кажется в этом плане я сделал правильно...
Зацени исходник:

Код

public class HumanControll implements ChessControll, MouseListener {

    protected ChessBoardView boardView;
    protected Engine engine;
    protected int team;
    private final Object locker = new Object();

    public HumanControll(Engine engine, ChessBoardView bView) {
        this.engine = engine;
        boardView = bView;
        boardView.addMouseListener(this);
    }

    public void setTeam(int team) {
        this.team = team;
    }

    public void destroy() {
        boardView.removeMouseListener(this);
    }


    public ChessPosition[] getMove() {
        res = null;
        while(res == null) {
            try {
                synchronized(locker) {
                    locker.wait();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return res;
    }

    private ChessPosition[] res;
    private ChessFigure selectedFigure;

    public void mouseClicked(MouseEvent e) {    }

    public void mousePressed(MouseEvent e) {
        if (engine.getTurn() != team) return;
        if (e.getButton() == MouseEvent.BUTTON1) {
            int hp = e.getX()/ChessBoardView.CELL_WIDTH + 1;
            int vp = 8 - e.getY()/ChessBoardView.CELL_HEIGHT;
            ChessFigure f = engine.getFigure(hp, vp);
            if (selectedFigure == null) {
                if (f != null) {
                    if (f.getTeam() == team) {
                        selectedFigure = f;
                        boardView.setSelectedFigure(selectedFigure);
                    }
                }
            } else {
                if (f == null || f.getTeam() != team) {
                    for (ChessPosition cp : selectedFigure.getMovePositions())
                        if (cp.horizontalPosition == hp && cp.verticalPosition == vp) {
                            final ChessFigure sF = selectedFigure;
                            selectedFigure = null;
                            res = new ChessPosition[]{new ChessPosition(sF.getHorPos(), sF.getVertPos()), new ChessPosition(hp, vp)};
                            synchronized(locker) {
                                locker.notify();
                            }
                        }
                } else {
                    selectedFigure = f;
                    boardView.setSelectedFigure(selectedFigure);
                }
            }

        }
    }

    public void mouseReleased(MouseEvent e) {    }

    public void mouseEntered(MouseEvent e) {    }

    public void mouseExited(MouseEvent e) {        }
}


Добавлено @ 13:06
Ссылка на исходники

Додумал наконец моск, точнее думал не я, а друг, так что можно уже посмотреть состязание ИИ.

Это сообщение отредактировал(а) Platon - 13.11.2007, 13:07
PM MAIL ICQ   Вверх
nornad
Дата 13.11.2007, 15:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  13.11.2007,  15:59 Найти цитируемый пост)
Спорный вопрос, и мне кажется в этом плане я сделал правильно...

Ты про Оккама с его режиком слышал? Этот японец - жуткий головорез. Очень любил всех своей бритвой чикать. За слишком большую или слишком малую детализацию объектной структуры. Дык вот, в твоём случае его явно огорчило бы то, что функции различных по смыслу сущностей у тебя смешались в одну - "ХумэнКонтрол". Оккама быстро бы бритвой по горлу и получились бы две сущности - "ПлэйерКонтрол" (или просто "Плэйер") и "БоардВью" (для рисования доски человеку или предоставления информации о фигурах ИИ).

Сам подумай - зачем смешивать различные сущности? Модульность - она очень полезна, ежели пораскинуть мозгами, как предлагалось в одном анекдоте про Штирлица.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 14.11.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



nornad, ак, вот я не пойму :(
У меня boardView не то чтобы тесно связан с самим HumanControll, но хуман контролл должен как-то работать с доской? на то он и хуман, ему надо видеть доску.

Добавлено через 58 секунд
Я всё понимаю, что вы правы, но как говорится need explanations.

Добавлено через 3 минуты и 20 секунд
И насчет рисоваться движок должен сам. Мне так кажется, что он должен освободиться от этих обязанностей, чтоб визуализация не была зашита в движке.
PM MAIL ICQ   Вверх
Platon
Дата 14.11.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



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

Это сообщение отредактировал(а) Platon - 14.11.2007, 17:20
PM MAIL ICQ   Вверх
nornad
Дата 14.11.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Platon @  14.11.2007,  19:23 Найти цитируемый пост)
И насчет рисоваться движок должен сам. Мне так кажется, что он должен освободиться от этих обязанностей, чтоб визуализация не была зашита в движке.

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


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Platon
Дата 14.11.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(nornad @  14.11.2007,  18:57 Найти цитируемый пост)
Просто именно движок говорит им, что делать.

Вот мы и дошли до истины!!! То о чем ты писал в предыдущих постах, и то что я как раз и сделал.
PM MAIL ICQ   Вверх
Platon
Дата 30.11.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



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

Это сообщение отредактировал(а) Platon - 1.12.2007, 10:22
PM MAIL ICQ   Вверх
Kangaroo
Дата 30.11.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Сыграл быструю партейку)
Есть пару замечаний:
1) У меня что-то с кодировкой Title окна. Непонятные символы.
2) Поставил я мозгу мат, он свой ход пропустил, следующим ходом я скушал его короля(!?), потом все застыло  smile  так и надо?
3) Логгер прилагаю.. какой-то он не читабельный.. или там побитно все записано?

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  logger.log 0,94 Kb


--------------------
Lost....
PM MAIL MSN   Вверх
Kangaroo
Дата 30.11.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



А еще мне очень понравились возможности хода - красивые зеленые цвета.

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  logger.log 0,94 Kb


--------------------
Lost....
PM MAIL MSN   Вверх
Platon
Дата 30.11.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Kangaroo, да там все побайтно всё, но в принципе я не парился. мог бы byte записывать, но я записывал integer. дело непринципиальное.

Спасибо за отзывы, а в тактике какие замечания?
PM MAIL ICQ   Вверх
Platon
Дата 1.12.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



хех, удивительно, логи скачали 6 человек, а игру 1, причем кто положил лог, и что вы там надеетесь увидеть?

Это сообщение отредактировал(а) Platon - 3.12.2007, 22:20

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  Chess.rar 77,99 Kb
PM MAIL ICQ   Вверх
Platon
Дата 1.12.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Добавил возможность конфигурировать игру при запуске...
Цитата

Chess game
There at most 2 parameters
-w  is only parameter, sets chess game to replay game recorded in 'logger.log' file (used along)
-h  human controll (used in both parameters)
-a  Artificial intelligence controll with better heuretic (used in both parameters)
-anew    aliace for -a parameter (used in both parameters)
-aold    Artificial intelligence controll with brute force search (used in both parameters)

PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.