Давайте всем форумом напишем вот эту игру. Причем так, что бы в ней были режимы как одно пользовательской ( с ИИ ) так и много пользовательской игры, желательно еще и игру по локалке.
сделать все вместе согласны такой общий проект?
![]() |
![]() ![]() |
![]() |
Reflex |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
Давайте всем форумом напишем вот эту игру. Причем так, что бы в ней были режимы как одно пользовательской ( с ИИ ) так и много пользовательской игры, желательно еще и игру по локалке.
сделать все вместе согласны такой общий проект? -------------------- Нам не дано предугадать как наше слово отзовется...
|
Vasya! |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Мужской Реальное имя: Вася Репутация: ![]() ![]() ![]() |
Для начала что за игра опиши. Хоть в кратце.
![]() |
Reflex |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
-------------------- Нам не дано предугадать как наше слово отзовется...
|
Vasya! |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Мужской Реальное имя: Вася Репутация: ![]() ![]() ![]() |
Типа кроссворд?
А что делать надо а то я непонял? С чего начнем? ![]() |
Reflex |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
Нет...
не кроссворд ... Ну давай сначала обсудим интерфейс -------------------- Нам не дано предугадать как наше слово отзовется...
|
Reflex |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
или я не то понисмаю под словом кроссворд
-------------------- Нам не дано предугадать как наше слово отзовется...
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
или я не то понисмаю под словом кроссворд Эта игра в русском варианте называется "Эрудит". Это название мне не очень нравится, слишком претенциозное. Когда-то давно (погодите.. примерно в конце 60-х - начале 70-х) ее напечатали в журнале "Наука и жизнь" под названием "Крестословица" (это мне больше по душе). Нам с сетренкой она так понравилась, что мы сделали ее на толстой фанере, клетки прожгли выжигательным прибором (им же написали ценность снизу), раскрасили маслом, вырезали фишки с буквами из твердого картона - и все это подарили маме на 8 Марта! ![]() ИИ тут не очень сложный. Главное - иметь достаточный словарь. Интерфейс же можно постараться сделать красивенький.. Правда, красивее того, фанерного, уже ничего не будет.. ![]() Я согласен поучаствовать в меру сил. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Reflex |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
А ты не мог бы рассказать Алгорим ИИ? а то я что-то его не представляю
-------------------- Нам не дано предугадать как наше слово отзовется...
|
arhimag |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
Готов помочь, предлагаю интерфейс сделать текстовый ( временно)
-------------------- Чего хочет женщина – того хочет Бог
|
Vasya! |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 35 Пол: Мужской Реальное имя: Вася Репутация: ![]() ![]() ![]() |
Так как я в игру не играл, то тоже не знаю алгоритма. Но я надеюсь, что Андрей расскажет.
Ну вот нас уже трое!!! |
Reflex |
![]()
Сообщение
#11
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 118 Пол: Женский Репутация: ![]() ![]() ![]() |
ну вот что-то такое правдо это только часть.
program scrablet; -------------------- Нам не дано предугадать как наше слово отзовется...
|
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Что касается ИИ, то мне кажется, что особых проблем нет. Если есть словарь, то нужно составить из имеющихся на руках букв всевозможные сочетания, затем приставлять их к буквам на доске и сверять со словарем, что получится. Алгоритм дубовый, и работать он будет долго, но это уже второй вопрос
![]() Reflex, первое и главное замечание: при совместной работе хорошо было бы иметь словесное описание как данных, так и алгоритмов. Интерфейс не является исключением. Если в лом делать отдельное описание (что я вполне понимаю), то по крайней мере все должно быть прокомментировано, и без этого никак! Хотя, я бы все же предпочел сначала обсудить.. Например, в том коде, что ты привела, в глаза бросается набор констант. Он зачем? Мне кажется, такие вещи, как ценность буквы, нужно иметь отдельно, в файлах ресурсов. Сами же буквы естественно заменить на номера, занеся их реальные значения (типа А, Б ..) в массив (который, кстати, может зависеть от выбранной кодировки). Если следовать такому плану, то игру можно сделать многоязычной: русская, английская, украинская, французская.. - смена языка производится заменой файлов. Тогда мумба-юмбафикация игры могла бы заключатся в простом добавлении файлов (словарь можно позаимствовать у Ильфа с Петровым ![]() Затем, давайте договоримся о выборе стандарта языка. Я предлагаю Object Pascal, но можно и сразу на Дельфи. Суть в том, чтобы задействовать объекты - они, как известно, хороши при совместном осуществлении пректа. Чисто процедурный подход я бы не рекомендовал.. Но можно и его, если есть возражения против объектов. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
arhimag |
![]()
Сообщение
#13
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
В написании игр объектный подход очень удомен и многие кто пишут игры не в одиночку используют его.
Я предлагаю сразу Delphi взять. А по устройству хранения фишек, то согласен с lapp так будет лучше. Пока про ии не очень представляю как это оссуществить. Предлагаю сначала написать человек-человек а потом уже извращаться типа локалки и ИИ. -------------------- Чего хочет женщина – того хочет Бог
|
Michael_Rybak |
![]()
Сообщение
#14
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата Если есть словарь, то нужно составить из имеющихся на руках букв всевозможные сочетания, затем приставлять их к буквам на доске и сверять со словарем, что получится. Алгоритм дубовый, и работать он будет долго, но это уже второй вопрос ![]() Алгоритм не дубовый, и он будет летать. Только лучше, наверное, сначала смотреть, куда будем ставить, а потом уже ставить. На поле 15х15 всего 225 клеток. От каждой клетки пытаемся проложить слово вправо, и слово вниз. Пусть словарь у нас отсортирован лексикографически, и пусть в нем n слов. У нас есть клетка на доске, и мы идем от нее вправо. Хотим получить список всех возможных слов (учитывая, хватит ли у нас фишек, чтоб достроить недостающие буквы). Рекурсивный перебор такой: Сначала считаем, что нам подходят все слова: [0; n). Смотрим на первую букву (т.е. на начальную клетку). Если там уже стоит фишка с буквой, скажем, К, то нас уже устраивает не [0; n), а [x; y), где x - первое слово на букву К, а y - первое слово на букву Л. Если же там - пусто, то пытаемся туда поставить одну из букв, имеющихся на руках (всего их 7?). И опять-таки, сужаем интервал соответственно. И теперь рекурсивно переходим ко второй букве. Опять, если там не пусто, сужаем интервал однозначно, если же пусто - перебираем и сужаем, и т.д. Поскольку на каждом шаге, решения относительно всех предыдущих букв уже приняты, то каждый раз нам всегда нужно рассматривать только слова из текущего интервала (все остальные не подходят под уже построенное). Используя префиксное дерево, мы будем сужать интервалы за O(1), и перебор будет работать неприлично быстро ![]() Эту часть могу взять на себя. Сообщение отредактировано: Michael_Rybak - |
Lapp |
![]()
Сообщение
#15
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Только лучше, наверное, сначала смотреть, куда будем ставить, а потом уже ставить. .. Эту часть могу взять на себя. Да, так, конечно, лучше, особенно учитывая, что возможно составление слова из нескольких частей, типа: САМОЛЕТ - черные буквы уже стояли, а красные мы поставили. На руках 7 фишек, да (насколько я помню). Можешь - хорошо. Вполне можно все делать параллельно, только нужно бы договориться о стандарте данных. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Я тут набросал примерно костяк структуры данных, касающихся доски (игроков можно добавить потом).
У Reflex это уже было, но у меня были некоторые замечания, разбирать которые сейчас нету времени, увы. Поэтому я просто показываю свой вариант, а остальные пусть выбирают. Я не стал вводить пока объекты, не зная отношения к ним основных участников проекта и не имея выбранного стандарта языка. Все можно будет исправить и добавить позже. {Scrabble} Хочу еще добавить, что для реальной игры нужно обеспечение тайны карточек с буквами на руках. Как это сделать на одном компе (повторяю, в реальной игре), я пока не знаю. Поэтому так или иначе надо делать либо сетевую версию, либо ИИ. И еще одно замечание про ИИ. Судя по словам Michael_Rybak'а, у человека будет слишком мало шансов выиграть. Кроме того, Игра довольно существенно многосторонняя, то есть рассчитана на 2 и больше игроков, причем по опыту я знаю, что играть втроем интереснее, чем вдвоем, а оптимум, намерное, четыре. Так что центр тяжести следует сместить все же в сторону интерфейса для сетевой игры. Как вы думаете? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Michael_Rybak |
![]()
Сообщение
#17
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата у человека будет слишком мало шансов выиграть. Тут у меня есть 2 соображения. Во-первых, понятно, что можно уровни сложности ввести. А во-вторых, можно показывать игроку все возможные слова, чтоб он только выбирал. Тогда комп (с жадным алгоритмом) будет проигрывать, потому что игрок сможет хоть как-то продумывать наперед. А игра получит приципиально другой характер ![]() Цитата Так что центр тяжести следует сместить все же в сторону интерфейса для сетевой игры. *Всю* сетевую часть, мне кажется, должен делать один (опытный в этом) человек, и тогда проблем не будет. А интерфейсы, конечно, заренее надо. И без объектов, имо, жутко такое писать. И сетевую часть, и вообще всё. Еще хорошо бы code conventions. |
arhimag |
![]()
Сообщение
#18
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
как - то давно вы мне давали чат по локалке, и я от туда вынес много чего-то умного. Так вот я предлагаю взять сделать чат, потом добавить функцию перебегающего сервера, тоесть тот кто открывает комнату чата у того в тойже проге и работает сервер. И дальше передавать сообщения типа:
"Player <1> <22><in>(<0>,<12>)" и их расшифровывать пример означает: игрок 1 поставил букву 22 в клетку 0,12. впринципе я все это могу реализовать, кроме одного я не могу реализовать поиск уже созданных игр -------------------- Чего хочет женщина – того хочет Бог
|
Michael_Rybak |
![]()
Сообщение
#19
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Еще, если уж на то пошло, то давайте кто-то начнет проект на sf, tigris или еще где. И будет принимать главные решения относительно структуры, конвенций, распределения обязанностей. Имо, без version control гиблое дело, собирать по кускам по 100 раз. А так - весело будет.
Сообщение отредактировано: Michael_Rybak - |
Lapp |
![]()
Сообщение
#20
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
я предлагаю взять сделать чат, потом добавить функцию перебегающего сервера, ... кроме одного я не могу реализовать поиск уже созданных игр Мое мнение, не стОит делать самостоятельный сетевой уровень, по крайней мере сейчас. Предлагаю для начала воспользоваться web-сервером. Сделать простейший CGI.. Я готов предоставить страничку на своем сайте ради такого дела ![]() давайте кто-то начнет проект на sf, tigris или еще где. ... - весело будет. Ты слыхал о принципе наказуемости инициативы? ![]() Если серьезно, я пока не уверен, что это действительно нужно. Давай дождемся реальной необходимости. Иначе нетрудно утонуть во всем этом, не начав.. А весело и так будет! ![]() Reflex, ты где? что молчишь? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 20.04.2025 21:07 |