![]() |
![]() ![]() |
![]() |
Needhelp |
![]() ![]()
Сообщение
#1
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
program Hantower(INPUT,OUTPUT); Как переделать реализацию алгоритма в игру? Что надо подправить и.т.д? То есть в данном случае "игра" сама передвигает диски, а мне нужно чтобы ей управлял польз-ь... Сообщение отредактировано: Needhelp - 11.04.2007 12:51 |
Адель |
![]()
Сообщение
#2
|
![]() Иллюзия мира ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Женский Репутация: ![]() ![]() ![]() |
а в чем собственно заключаться игра?
|
Needhelp |
![]()
Сообщение
#3
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ханойские башни. тут написано
![]() Сообщение отредактировано: Needhelp - 11.04.2007 12:49 |
Needhelp |
![]()
Сообщение
#4
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() Или у кого игра УЖЕ есть... написанная на Pascal?! Сообщение отредактировано: Needhelp - 11.04.2007 19:14 |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Может кто скажет? Скажем ![]() ![]() Тебе надо именно эту прогу переделывать? Если да, то не повезло тебе.. Я посмотрел ее. Она оч-чень плохо годится для такой переделки.. ![]() Я бы предложил тебе написать с нуля - проще будет, я не шучу. Если согласен - приходи, поможем ![]() Для затравки: По сути, тебе надо две процедурки: одна рисует диск (размеры, цвет и положение задаются параметрами) или стмрает его (тоже параметр). Вторая рисует некий указатель (стрелка или рука) в заданной позиции, или стирает его. Затем нужно организовать управление: стрелками с клавы, например. Даигаешь указатель, показываешь на нужный столб, жмешь энтер (или пробел, или срелку вверх) - взял диск, он поднимается наверх, указатель исчез. Теперь двигаешь этот диск к нужному столбу, жмешь энтер (или пробел, или срелку вниз) - положил. Снова появляется указатель - и так далее.. Можно вставить проверку на корректность. Ну и приделать проверку на выигрыш.. Все! ![]() Нравицца?.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]()
Сообщение
#6
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Переделывать не обязательно. Это я из-за своей "программерской" не опытности думал, что так будет проще
![]() Спасибо! ![]() Сообщение отредактировано: Needhelp - 12.04.2007 14:58 |
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Тут одна "загвостка" есть ...как игру 3D сделать? Чем отличается описание для 2D (дисков) от 3D? Ну ты даешь! ![]() Вообще, вопросы собственно изображения - это отдельные вопросы. Я бы предложил сначала реализовать основной алгоритм с самыми простыми изображениями. Учись всегда видеть в задаче главное. Когда функциональность будет готова - тогда можно заняться улучшениями интерфейса, визуализации и т.п. Но для этого желательно сделать программу так, чтобы все было нормально организовано и разделено по назначению. И тогда не придется карячить головной модуль в нескольких местах, чтобы сменить, скажем, цвет одного диска.. Ответь на совершено непрограммный вопрос: у тебя есть время и желание всем этим заниматься? Если да - я готов помочь. Добавлено через 4 мин. Замахнулся на 3D, а у самого и аватар-то даже не 2D, а практически 1D... ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]()
Сообщение
#8
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Диски в аксонометрической проекции...то что надо! Крутить не надо))
А время+желание конечно есть. У меня "курсовик" на эту темку... Как говорится "Куда деваться?!" ![]() ![]() ![]() А насчет аватарки, ты прав. Какой же крутой 3D-программер без 3D аватара))) Сообщение отредактировано: Needhelp - 13.04.2007 13:45 |
Needhelp |
![]()
Сообщение
#9
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот...код проги...работает в 2D... Как бы 3D из этого всего "слепить"=)))
Спасибо! ![]() Сообщение отредактировано: Needhelp - 16.04.2007 15:11 Прикрепленные файлы ![]() |
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот...код проги...работает в 2D... Как бы 3D из этого всего "слепить"=))) Needhelp, неплохо сработано! ![]() Но есть некоторые недочеты.. 1. Визуализацию надо отделить от основного кода - может, даже вынести в отдельный юнит. Тогда будет легко переходить на графику. Достаточно заменить часть, касающуюся визуализации. 2. Визуализацию надо сделать более функциональной. Например, движение объекта не нужно делить на вертикальное и горизонтальное. Движение нужно задавать не по номерам башен, а по реальным координатам. 3. Управление лучше пееренести на стрелки. Для этого использовать указатель на активную башню (в виде стрелки или пальца), который ты двигаешь стрелками. Затем поднимаешь диск и перемещаешь его стрелками к башне, на которую хочешь положить. Потом кладешь. 4. С задержками у тебя небольшой бардак.. Я исправил - смотри, что получилось:
Это все лучше привести в порядок на текстовой версии. Потом сделаем графику в лучшем виде! ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]() ![]()
Сообщение
#11
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Значит игру переделал. Теперь либо управление пользователь.... либо автоматически...
+Добавил задержки (как ты советовал).... По 1му недочету... Отдельно в "юнит" .... никогда этого не делал ![]() По 2му недочету... Что-нибудь постараюсь придумать... ![]() По 3 му... Тоже что и по 2му... ![]() ![]() П/с Репу тебе поднял, спасибо!!!... За помощь в этом не легком труде)) Сообщение отредактировано: Needhelp - 23.04.2007 14:35 Прикрепленные файлы ![]() |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Первые впечатления
![]() Добавил задержки (как ты советовал).... - а куда подевались вызовы GetDate и GetTime?.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]()
Сообщение
#13
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Первые впечатления ![]() - а куда подевались вызовы GetDate и GetTime?.. ![]() Извиняюсь.... не тот вариант... ![]() Сообщение отредактировано: Needhelp - 23.04.2007 14:28 Прикрепленные файлы ![]() |
Lapp |
![]()
Сообщение
#14
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Извиняюсь.... не тот вариант... ![]() В этом тоже не без огрехов.. подредактируй (ты можешь при редактировании поста убрать файл и заменить на новый) Еще одно - забыл тогда сказать: зачем дублировать стандартную функцию UpCase? Попробуй сделать юнит. Правила такие: - сделай новый файл, его название должно строго соответствовать названию юнита. - вместо program Name пиши unit Name - имя, например, Hanoi_U (соответственно, файл Hanoi_U.pas) - после строчки unit идет строка interface - после нее идут переменные, константы как обычно - потом идут точные копии заголовков процедур, которые ты туда перемещаешь - один за другим - потом идет слово implementation - потом идут сами процедуры (тоже с заголовками) - самого тела может и не быть, просто begin end. Но можешь там разместить инициализацию, если требуется. Для примера я разбросал твой проект по трем файлам: головной, юнит Tools и юнит Hanoi_U. Советую тебе в юните Tools держать полезные часто используемые вещи. В юнит Hanoi_U я перенес пока только три процедурки. Ты можешь перенести еще. Только вместе с ними переноси и переменные и константы, которые нужно - они тоже будут доступны для использования в основной программе. Смотри, как это получилось.. Файл Tools.pas : unit Tools; Файл Hanoi_U.pas (кстати, обрати внимание на форматирование текста здесь - рекомендую использовать такой стиль) : unit Hanoi_U; Файл Hanoi.pas : PROGRAM HANOI; Добавлено через 2 мин. Борландовская среда очень хорошо приспособлена для работы с юнитами, ты это увидишь. Переход между окнами - клавиша F6. Зайди в меню Window и поиграй с разными расположениями окон.. Успехов! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]()
Сообщение
#15
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
"Визуализацию надо сделать более функциональной"....В unit'e Hanoi_U как я понял вот это и осуществить...
Сначало визуализацию буду делать.... потом управление... ![]() Такой план ...пятилетки))) |
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата Сначало визуализацию буду делать.... потом управление... Естественно... ![]() |
Lapp |
![]()
Сообщение
#17
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Сначало визуализацию буду делать.... потом управление... ![]() volvo прав, желательно сделать сначала управление. Тогда ты будешь понимать, что именно тебе нужно реализовать в визулизации. Так что по крайней мере нужно сначала продумать все. Я, когда увидел тему, набросал примерно, с чего нужно начать. Но ты выложил свое решение, и я свою прогу не показал. Если хочешь - могу выложить сейчас. Сейчас, когда ты сам попробовал, будет даже больше пользы. Естественно... ![]() ![]() ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Needhelp |
![]()
Сообщение
#18
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все понято...значит с управления...начинаю...
![]() Думаю выкладывать не надо...Пока во мне есть идеи и творческие силы)) ![]() |
Needhelp |
![]()
Сообщение
#19
|
![]() Живет здесь... ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
По поводу Управления...
А вот если управление сделать так...сначала подводим указатель откуда будем перемещать(жмем допустим Enter), потом подводим куда...И оно пошло передвигаться??? |
Lapp |
![]()
Сообщение
#20
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
потом подводим куда...И оно пошло передвигаться??? Не совсем понятно.. без нажатия энтера (или чего-то еще)?.. Нет, это не пойдет.. Чем тебе не нравится такое: 1. подвели указатель к башне (стрелки влево/вправо); 2. нажали стрелку вверх - диск поплыл вверх и завис над этой башней; 3. снова работаем стрелками влево/вправо, но при этом двигается не указатель, а диск, плавая в воздухе и зависая над выбранной башней. 4. Потом нажимаем стрелку вниз - диск кладется на ту башню, над которой висит. 5. Возвращаемся к п.1 Мне кажется, это удобно. При этом только надо опрашивать клаву, пока диск (или указатель) плывет. Если будет еще нажатие за это время - запоминать его и двигать диск дальше.. Я понятно говорю? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 22:56 |