![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Здравствуйте, уважаемые.
На этот раз не буду выкладывать никаких программулек, потому что еще немного недоделано. Встал такой вопрос, как гибко делать смену пользователей на хуманов и москов? Варианты всевозможные H-AI AI-H AI-AI H-H Я уверен, что люди уже разработали такой шаблон... есть класс Main в нем ChessBoard board - доска, хранит информацию о игровой ситуации ChessBoardView boardView - естественно отображение этой ситуации на доске. Как мне посредством класса Main сделать настройку игрового режима, чтоб можно было нацепить на boardView мышного слушателя, если это игрок, если это неигрок, то просто установить AI
На этом дело встало. |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Если у тебя ChessControll - интерфейс который реализует публичный интерфейс игрока, то тебе надо просто сделать два класса, которые реализуют этот интерфейс и выполняют функции AI и H. Тогда слушатель должен будет существовать в рамках класса H. А при добавлении будешь просто добавлять нужный класс.
Либо можно сделать абстракный класс Player у которого будут все необходимые методы а реализаци их будет отличаться в зависиости от того AI это или H. Короче - полиморфизм - это сила! -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Именно с этим прицелом у меня ChessControll и сделано, но вопрос сотается, как локанично сделать еще и навешивание слушателя на нужные панели в случае игрока?
|
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Ну конкретно не подскажу, сам не делал. Но по идеи ты реализуешь интерфейс слушателя в классе Chess Controll.
Если это у тебя AI то он просто ничего не делает и передает управление дальше. Если это реализация H то как раз и делаешь то, что надо. В методе регистрации игрока регистрируешь игрока как слушателя. Опять же тебе не важно, что это будет за игрок. Добавлено через 2 минуты и 31 секунду Метод регистрации игрока как слушателя даже лучше сделать членом класса самого игрока... Тогда даже и не надо интерфейс слушателя реализовывать в классе ChessControl. Можно сделать внутренний класс слушателя... И каждому игроку можно передавать нужные панели, к которым он должен будет прицепиться. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Ладно, я сделал по тупому.
ChessControll.setEngine(Engine e); а Engine предоставляет всем контроллам все данные: и игровую канву, и данные о игровой ситуации. Сейчас еще 1 вопрос подводный возник. Я еще игру ниразу не запускал, но сразу вижу косяк. Если будут играть 2 моска в 1-м потоке, то когда-нибудь они достигнут переполнение стека. Ибо будет 1 поток, конечно есть мысли сделать 2 потока, по 1-му на моск, у Человека и так отделный поток в виде диспетчера событий, но может есть решение попроще? |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
А почему должно быть переполнение? "Моски" ходят по очереди, так? То есть, если запус "хода" происходит в основном цикле, то после завершения хода мы снова попадаем в основной цикл. Так? Так откуда же возьмётся переполнение?
Этим всё сказано. Твой же вариант установки "движка" имеет кучу неудобств. Когда начнёшь расписывать работу всего этого барахла - заметишь. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
nornad, поясни пожалуйчта. Конечно, метод примитивный, но факторов, связывающих руки я не нашел. и правда, что... Что-то я себя сам понапугал. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Смотри. Если делать по предложенному варианту, то каждый "плеер" имеет реализацию интерфейса осуществления хода. Плюс, возможно, ещё некоторое количество методов "для себя". В твоём же варианте "движок" даёт доступ к внутрненним объектам игры. Это приводит к тому, что "плеер" должен сам получать и разбирать информацию, сам же производить некоторые действия. В итоге это приведёт к большому количеству перекрёстного кода, который будет неудобно поддерживать. Намного проще переписать сызнова, чем добавить что-то новое. А возможно и проще, чем изменить старое. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
nornad, возможно твои замечания правильны. Давай, когда я програмку допишу, посмотришь и скажешь как можно сделать лучше?
|
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Я лучше не буду обещать, т.к. работы довольно много, а код маленьким явно не будет.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Код явно небольшой ;) 15 файлов, из них 6 - специфическая фигура, остальные 9 по делу, не так уж и много, я думаю.
|
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Конечно правильные. Ты нарушаешь принципы ООП Cohesion и Coupling (блин, не знаю даже как их на русский перевести Конечно это не смертельно, просто если ее соблюдать, то гораздо удобнее расширяться и поддерживаться. Это сообщение отредактировал(а) Felan - 8.11.2007, 09:43 -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Felan, я думаю, ты имеешь ввиду стремление к слабой связности компонентов системы?
Добавлено через 5 минут и 32 секунды Да, вы правы абсолютно, я пересмотрел свои позиции. Теперь я подумал сделать так: Как контроллу хумана, так и мозгу передается объект с информацией о игровой ситуации. Но, для хумана будет еще 1 параметр: указатель на визуализацию игры. Получается, что теперь контроллы с движком напрямую не работают, а только он их опрашивает, какой сделать ход. Такой подход лучше? Это сообщение отредактировал(а) Platon - 11.11.2007, 19:30 |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Народ! Предлагаю состязание ИИ в рамках шахмат...
Пока мой АИ не готов, но вот-вот будет. Предлагаю вам тоже подключиться, составим спаринг AI. Это сообщение отредактировал(а) Platon - 13.11.2007, 13:02 Присоединённый файл ( Кол-во скачиваний: 18 )
Chess.rar 56,30 Kb |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Я бы сделал так. Есть движок. Есть интерфейс игрока. Есть слушатель хода. Есть слушатель передачи хода. Есть реализация игрока для человека и есть для машины. В самом начале регистрируются слушатели. Оба игрока регистрируют в движке свои слушатели передачи хода, а движок регистрирует слушателей самих ходов. Далее ход передаётся "белым" и игра начинается. Кроме указанных вещей, игроки должны иметь методы для определения ситуации на доске (человеку надо нарисовать поле, а машина должна иметь поле, чтобы можно было производить расчёты, на основе которых будет выбран следующий ход). Ну и, конечно, некий метод для информирования о состоянии (шах, мат, пат...; кстати, эту информацию вполне можно передать в слушатель передачи хода. Ещё б я знал, как писать мозги для шахмат... -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
У меня есть листнер, и то он чисто - ход сделан (для визуализации игры) и уведомление о конце хода.
Предлагаю глянуть в исходники. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Мдее, у меня тоже не особо густо опыта с ИИ вот ти решил попробовать с мозгом поэксперементировать.
|
|||
|
||||
| Felan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Именно Только вот это не надо.
Рисоваться движок должен сам, это не функции игрока. Игрок только делает ход. В остальном вроде нормально -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
||||
|
|||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Спорный вопрос, и мне кажется в этом плане я сделал правильно... Зацени исходник:
Добавлено @ 13:06 Ссылка на исходники Додумал наконец моск, точнее думал не я, а друг, так что можно уже посмотреть состязание ИИ. Это сообщение отредактировал(а) Platon - 13.11.2007, 13:07 |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Ты про Оккама с его режиком слышал? Этот японец - жуткий головорез. Очень любил всех своей бритвой чикать. За слишком большую или слишком малую детализацию объектной структуры. Дык вот, в твоём случае его явно огорчило бы то, что функции различных по смыслу сущностей у тебя смешались в одну - "ХумэнКонтрол". Оккама быстро бы бритвой по горлу и получились бы две сущности - "ПлэйерКонтрол" (или просто "Плэйер") и "БоардВью" (для рисования доски человеку или предоставления информации о фигурах ИИ). Сам подумай - зачем смешивать различные сущности? Модульность - она очень полезна, ежели пораскинуть мозгами, как предлагалось в одном анекдоте про Штирлица. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
nornad, ак, вот я не пойму :(
У меня boardView не то чтобы тесно связан с самим HumanControll, но хуман контролл должен как-то работать с доской? на то он и хуман, ему надо видеть доску. Добавлено через 58 секунд Я всё понимаю, что вы правы, но как говорится need explanations. Добавлено через 3 минуты и 20 секунд И насчет рисоваться движок должен сам. Мне так кажется, что он должен освободиться от этих обязанностей, чтоб визуализация не была зашита в движке. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Всё таки задел меня пост Felanа. Движок еще не должен рисоваться по той простой причине, что его потом без проблем можно переделать под клиент-серверные шахматы!!!
И вообще, в этой связи, я теперь осознаю, как полезны были введены мной интерфейсы ChessControll, теперь они могут быть использованы для соединения через сокеты. Это сообщение отредактировал(а) Platon - 14.11.2007, 17:20 |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Под рисоваться сам имелось в виду, что у него есть ссылка на объект, который занимается отрисовкой. Но именно движок знает ситуацию на доске, проверяет возможность совершения хода и определяет, есть ли шах, пат, мат. Естественно, что и отрисовка, и лог (сохранение нотации) - это обязанности не конкретно движка, а отдельных объектов. Просто именно движок говорит им, что делать. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Вот мы и дошли до истины!!! То о чем ты писал в предыдущих постах, и то что я как раз и сделал. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Забросили мы что-то это дело, сейчас я предоставлю вам шустрый моск. играет уже вдумчиво, но не идеально. Кто поиграет, присылайте логи.
Это сообщение отредактировал(а) Platon - 1.12.2007, 10:22 |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Сыграл быструю партейку)
Есть пару замечаний: 1) У меня что-то с кодировкой Title окна. Непонятные символы. 2) Поставил я мозгу мат, он свой ход пропустил, следующим ходом я скушал его короля(!?), потом все застыло 3) Логгер прилагаю.. какой-то он не читабельный.. или там побитно все записано? Присоединённый файл ( Кол-во скачиваний: 8 )
logger.log 0,94 Kb-------------------- Lost.... |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
А еще мне очень понравились возможности хода - красивые зеленые цвета.
Присоединённый файл ( Кол-во скачиваний: 7 )
logger.log 0,94 Kb-------------------- Lost.... |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Kangaroo, да там все побайтно всё, но в принципе я не парился. мог бы byte записывать, но я записывал integer. дело непринципиальное.
Спасибо за отзывы, а в тактике какие замечания? |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
хех, удивительно, логи скачали 6 человек, а игру 1, причем кто положил лог, и что вы там надеетесь увидеть?
Это сообщение отредактировал(а) Platon - 3.12.2007, 22:20 Присоединённый файл ( Кол-во скачиваний: 17 )
Chess.rar 77,99 Kb |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Добавил возможность конфигурировать игру при запуске...
|
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Так где игру скачать-то можно?
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
-------------------- Lost.... |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Новая версия шахмат улучшенный моск.
Присоединённый файл ( Кол-во скачиваний: 9 )
Chess.rar 79,23 Kb |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Я тут еще одну фишку сделал, назовем ее шахматной конференцией.
Игрок играет партию, а у людей есть возможность следить за партией онлайн. Это сообщение отредактировал(а) Platon - 4.12.2007, 15:48 |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Поймал логический баг.
Игра не позволила мне сделать взятие на проходе. Последний ход черных: пешка d7-d5 Хотел ее забрать: пешкой на d6 ... не дает.. Логи и скриншот во вложении. Присоединённый файл ( Кол-во скачиваний: 9 )
chess.bug.1.rar 29,54 Kb |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Прошу прощения, удивительно что этот баг выявился :( я его собственными руками душил...
Вот что значит неиспользование CVS Теперь к сожалению не знаю что делать... У меня получилось игра сама 160кило остальные 880кило библиотеки... Это цена прикрутки сетевой поддержки. Добавлено через 6 минут и 1 секунду Уважаемые, мне придется огласить список используемых библиотек. mina-core-1.1.3.jar slf4j-log4j12-1.4.2.jar slf4j-api-1.4.2.jar log4j-1.2.11.jar все они лежат здесь Отдельно игровой jar файл лежит здесь Отдельно картинки лежать здесь Всё вместе лижит здесь Добавлено через 7 минут и 2 секунды Может сказал неявно, теперь говорю явно, баг исправлен. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Наконец добавил логичное дополнение, удаленная игра.
Для вариантов игры наберите в параметрах -help Это сообщение отредактировал(а) Platon - 4.12.2007, 22:34 Присоединённый файл ( Кол-во скачиваний: 5 )
Chess.zip 62,05 Kb |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
На сколько я понял, тема не особо пользуется интересом. Придется закрывать :(
|
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Я бы все таки опытных программистов посмотреть мой код, покритиковать, подсказать...
Политика поменялась, теперь кто хочет взглянуть на исходники пишите в личку. Это сообщение отредактировал(а) Platon - 6.12.2007, 22:21 |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
Ничего себе "не пользуется интересом"! Три страницы коментов! -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Platon
Заявка на фичи: - подписать координаты на доске - писать куда-нибудь партию в стандартной нотации |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
^_^ ок щас сделаем.
Я вижу 4 кодера скачали исходники, что скажете? сам же могу 1-ю переделку подметить. У меня есть классы для всех фигур, что может и логично, но возможно излишне, я думаю, что можно обойтись одной ChessFigure, но у которой ходы будут просчитывать классы-алгоритмы в паттернах, я не помню как это называется, наверно Стратегия. А, ну и еще. Если кто посмотрит в класс Engine, там весьма безобразен метод main, наверно по нему плачет паттерн "Строитель", только не могу сообразить как правильно оформить? |
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Во-первых, не излишне. Во-вторых, для стратегии требуются как раз классы наследники, в твоём случае от абстрактного родителя ChessFigure. Смотри, нужно ли оно тебе. Я коды скачал, но ещё не смотрел. |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
+ Еще я скатился к тому, что Engine в моем случае получается весьма "рудиментарным" объектом, он почти повторяет интерфейс ChessBoard, но выдает контроллам только копию игровой ситуации, дабы кто то со злым умыслом не сделал запретных операций. Правильно ли это?
Единственная полезная функция Engine заключается в цикле-опросе игроков какой ход сделать и маломальское оповещение слушателей. |
|||
|
||||
| Platon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
ПО требованию трудящихся, сделал фичи.
Добавлено через 9 минут и 51 секунду И теперь, я хочу чтоб прожка могла считывать эти логи... возник вопрос по регулярному выражению, которое должно подойти? Вот что я надумал:
Примеры нотаций:
Присоединённый файл ( Кол-во скачиваний: 17 )
Chess.zip 75,49 Kb |
||||
|
|||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Опять видимо сказал неявно...
Надумал то надумал, но видимо неправильно... |
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Platon, классные шахматы! Красивые, умеют думать (не особо сильно, но откровенных ляпов не допускают и моими косяками завсегда пользуются), особенно подсветка движения фигур при шахованом короле порадовала.
Но позволю дать один совет - остановись пока! Тебе стоит причесать код, прежде чем двигаться дальше. Я его просмотрел достаточно бегло, но многое само бросается в глаза. Вот например:
Ты и сам всё прекрасно понимаешь, отделил код заметными комментариями. Осталось немногое - раскидать эти куски по отдельным методам, чтобы каждый выполнял какое-то цельное действие. Логика отдельно, представление отдельно, сеть отдельно. Это и к main() относится! У одного хорошего программиста есть замечание о том, как определить качество программы/библиотеки. Первый способ - медленный. Посчитать магические числа и строки (кстати их у тебя тоже немало Почему бы не воспользоваться enumerations? В классе ChessBoard, например, они прямо просятся в код вместо интовых костант. Это всё не так важно для работоспособности программы Если хочешь создать увлекательные шахматы (имеется в виду вменяемый компьютерный оппонент), рекомендую к прочтению книгу "Программирование шахмат и других логических игр", автор Евгений Корнилов, издательство "Санкт-Петербугр", 2005. |
|||
|
||||
| Platon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Это что такое? Константы? или повторяющиеся куски кода?
Ну, потому что, ими работать не удобно.
У меня проект в UTF-8 если что. Абсолютно согласен, с этой целью и выложил исходники, чтоб проконсультироваться по поводу оформления кода. Не особо сильно, потому что глубина просмотра 2 хода. на 3 уже туго думает. |
||||
|
|||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
||||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Хм, ну у меня вроде почти так реализовано, просто в main метод и вызываемых им методах идет сборка приложения с определенными параметрами, ничего умного придумать не могу. А магические числа, тоже интересно, я к сожалению не могу понять какие константы к ним отнести. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |