Форум » » уроки URQ » Ответить

уроки URQ

qwerty: Они самые. предлагаю вести такую тему, где будет по шагам описано создание игры на досурке. UPD уроки по досурке (URQ_DOS от 30.11.04). Скачать её(досурку), а так же её описание можно здесь: http://urq.plut.info/soft (см ссылки: [quote]Скачать URQ_DOS от 30.11.04 - 132 Кб Описание URQL для URQ_DOS версии 1.35 от 23.11.2006 года от Корвина.[/quote] ) UPD(11.02.09, 0:59): оказался недостаточно организован, что бы вести уроки. НО с удовольствием отвечу в этой теме на любые вопросы по urq_dos. появляюсь на форуме не реже 1 раза в неделю

Ответов - 139, стр: 1 2 3 4 5 6 7 All

qwerty: 1. для начала- пример с баттонами: ; сделано под dos_urq32 (под wcl версию не тестил) Clrscr=1 Urq_delay=0 a=0 :1 cls a=a+1 pln #a$#%post$ btn a, a btn b, b btn fin, конец pause 2000 goto 1 end :a instr post= a goto 1 end :b instr post= b goto 1 end :fin end ; конец программы 2...... так как нажатие клавиши прерывает паузу извиняюсь, ошибся. нажатие баттона прерывает паузу, а простое нажатие клавиш- нет. к сожалению... таким образом, приводить пример незачем 3. насчёт того, как засечь и сравнить время можно посмотреть в конце описания, среди полезных алгоритмов от "мэтров": Goraph Паузы меньше секунды в досурке, как известно, не работают :) Однако есть алгоритм, который позволяет их реализовывать. В начале квеста замеряем величину паузы длиной в секунду (лучше взять паузу побольше если вам нужна точность - пауза в 40-60 секунда обеспечит вам лучшую точность чем секундная пауза). Зачем это нужно? Просто досурка и гуи досурка возвращают разные значение времени, плюс оно может быть разным на разных компьютерах - поэтому мы вычилсляем значение для той среды, в которой мы запущены. t1=time pause 1000 t2=time t_etalon=(t2-t1)/1000 ;Там где нам нужна пауза, пишем такой код - величина паузы в миллисекундах - в данном случае полсекунды пауза=500 & proc stop ; а вот и сама процедура, которая делает нашу паузу длинной меньше секунды :stop стоп_таймер=time пауза=пауза*t_etalon if t_etalon=0 then пауза=1 :stop_loop if (time-стоп_таймер)‹пауза then goto stop_loop end Данный код придуман и разработан всеми любимым Евгом. Я его лишь несколько уточнил (на этапе временного эталона). 4. щаззз вышлю тебе личкой мыл. напиши, что ты хочешь сделать- подумаем, как... p.s. поскорее бы уйти от досурки к виндовому интерпретатору- надоело уже наблюдать, как всплывают очередные особенности работы досовских приложений под винду. хотя, говорят, под дос последняя досурка уже и не идёт, но от этого не легче

Chicago1920: А вот подскажите, почему этот код работает: :1 inv+ Оружие1 inv+ Оружие2 weapon=1 goto 2 end :2 cls p В руках оружие #weapon$ btn 2,2 end :Use_Оружие1_Взять в руки weapon=1 goto 2 end :Use_Оружие2_Взять в руки weapon=2 goto 2 end А этот уже нет: :1 inv+ Оружие1 inv+ Оружие2 weapon=1 goto 2 end :2 cls p В руках оружие #weapon$ pause 2000 goto 2 end :Use_Оружие1_Взять в руки weapon=1 goto 2 end :Use_Оружие2_Взять в руки weapon=2 goto 2 end Вернее неккоректная работа с инвентарем. Тестировалось на акурке.

noname: А вот подскажите, почему этот код работаетс точки зрения URQL правильно будет так: :1 inv+ Оружие1 inv+ Оружие2 weapon=1 goto 2 end :2 cls p В руках оружие #weapon$ btn 2,2 end :Use_Оружие1_Взять в руки weapon=1 end :Use_Оружие2_Взять в руки weapon=2 end НО 1. на AkURQpre6 корректно это работать НЕ будет 2. в досурке(dos32/dos_urq) - работает нормально, после выхода из инвентаря выполняется код локации 2, и игрок видит правильное отображение текущего оружия. (по умолчанию cls НЕ очищает весь экран- режим работы оператора cls задаётся системной переменной clrscr) 3. в fireurq это почти работает... куда конкретно передаётся управление по выходе из инвентаря- не ясно, НО во всяком случае не на метку 2. это видно потому, что при выборе оружия инфа не обновляется- надо жать баттон "2". зато твой, Chicago1920, некорректный пример работает одинаково хорошо на всех упомянутых интерпретаторах. в отличие от корректного варианта, который верно работает лишь на досурке. вот такие вот пироги... --- А этот уже нетэтот пример, равно как и его более корректная модификация (без переходов из инвентаря) работает лишь на fireurq. досурка "прощёлкивает", видимо, из-за отсутствия баттонов, а Акурка вообще имеет свою загадочную логику работы с инвентарём --- p.s. а вот если бы я делал боёвку, я бы сделал так: где-нибудь в начале игры ( или даже- внизу каждого экрана вывода) писал бы сообщение "h= help", или что-то в этом духе (естественно, это- не вместо, но в дополнение к инструкции во вступительном меню). в любой момент игры по нажатию кнопки "h" выводился бы список управляющих клавиш(по нажатию <esc>- возвращаемся к отображению текущей ситуации). список, например, такой: " h- показывает список управляющих клавиш 1- выбор оружия1 2- выбор оружия2 i- показать весь инвентарь для возврата нажмите h ещё раз " а вся обработка делалась бы через anykey. очень удачно это можно сделать на досурке. в смысле внешнего вида. ну, для тех, кому не страшен серый ДОС, я имею ввиду. с закосом под традиционные рогалики. это- лишь один из возможных вариантов, который хорошо подойдёт не ко всякой игрухе //--- и, да- буду рад комментариям знатоков Акурки и Фурки относительно того, куда уходит цирк передаётся управление после выполнения действия над предметом из инвентаря


Chicago1920: noname пишет: а вот если бы я делал боёвку, я бы сделал так я вот тоже уже склоняюсь к этому варианту. спасибо тебе за столь скурпулезный анализ!

Malevi4: Помогите вылажите норм ссылку на скачку проги для написания этих квестов, а то что не скачиваю так ток проигрыватели

Chicago1920: Malevi4 , да можешь в блокноте или в вордпаде писать. потом сменишь расширение на *.qst

Chicago1920: Вопрос к qwerty или к noname'у , так как он ловко решает любые задачки касательно кода. За что тебе огромное спасибо!!! Итак, вопрос связанный с математикой. Сразу скажу, ответа я не знаю, но хотел бы узнать. Допустим у нас есть трехмерное пространство. с координатами x,y,z. Причем, каждая из этих переменных может иметь значение от 0 до 100. И так же допустим, что каждая точка в этих координатах равна 0. Далее, вводим точку=1 с координатаи x=50,y=50,z=50. Задачка. Написать код, чтобы вокруг этой точки, создать куб допустим размерами 10/10/10, где все точки будут равны 1. Задачка2. Сложнее. Создать вокруг заданной точки шар, с заданным значением радиуса. Например 20 точек. Был бы очень признателен за ответ.

qwerty: Chicago1920 пишет: Malevi4 , да можешь в блокноте или в вордпаде писать. потом сменишь расширение на *.qst истинно так. но скажу ещё: можно в своём менеджере файлов(о, какое умное слово!), ну т е в твоём Total Commander, или Far, или что там у тебя ещё, ну короче- можно в нём создавать и редактировать текстовые файлы. расширение можно сменить на *.qst простым переименовыванием. НО можно проигрывать и не переименованные файлы(например с расширением *.txt) Malevi4, если будут ещё вопросы- всегда рад ответить

noname: UPD: Задача2 тоже простая, но мне щазз срочно надо бежать в гости к нужному человеку- щазз пытаююсь устроиться на работу ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Chicago1920, попробую ответить на первую задачку. даже не буду пытаться понять, зачем это нужно, так что условия оставляю по возможности немодифицированными итак, Задача1: а) как только программа запустилась, мы уже вправе считать, что у нас есть такое пространство, заполненное нулями, и обращаться с ним соответственно- ведь изначально все переменные обнулены (однако не лишне использовать perkill для очистки переменных при игре заново, без выхода из программы). будем считать, что у нас есть массив x0..x100,y0..y100,z0..z100, заполненный нулями б) я так понимаю, что сама точка 50/50/50 должна содержать единицу. а так же одинаковое кол-во точек влево и вправо от неё, которые являются частью куба, тоже будут содержать единицы. тогда получаем: (N+N+1=нечётное число), а никак не 10. для решения задачи принял диаметр(то самое кол-во точек влево и вправо) равным 5, тогда куб будет иметь размеры 11/11/11 в) если б знал, зачем это нужно- возможно, сделал бы проще г) итак, вот сама прога: точки1 д) поскольку прикреплённые через zalil файлы уничтожаются через месяц после последнего скачивания, то выкладываю текст проги для истории (однако читать его с сайта не так уж и удобно- нет пробелов-отступов): :1 invkill perkill xpixel= 50 ypixel= 50 zpixel= 50 diameter= 5 goto just_do_it end :just_do_it cx2=xpixel+diameter cy2=ypixel+diameter cz2=zpixel+diameter cx1=xpixel-diameter :loop_cx cy1=ypixel-diameter :loop_cy cz1=zpixel-diameter :loop_cz проверка=проверка+1 ; кол-во точек x#cx1$=1 y#cy1$=1 z#cz1$=1 cz1=cz1+1 if cz1<=cz2 then goto loop_cz cy1=cy1+1 if cy1<=cy2 then goto loop_cy cx1=cx1+1 if cx1<=cx2 then goto loop_cx goto report end :report надо=(diameter*2+1)*(diameter*2+1)*(diameter*2+1) if проверка=надо then goto успех pln pln в программу вкралась ошибка, о повелитель! pln (да прославится твоё имя в веках) pln не вели казнить, вели слово молвить: pln Твои никчёмные рабы(да падёт позор на их головы) pln заполнили #проверка$ точек, вместо #надо$! end :успех pln pln задание выполнено успешно pln заполнено #проверка$ точек end

Chicago1920: noname кхм... там внутри куба все точки=1 ? Может чуть закоментишь ход расчета?

Malevi4: Вот еще один вопрос есть ли таки проигрыватели и команды что бы к описанию локации или персонажа и тд появлялись картинки, корочь чтоб игра сопровождалось не только описанием месности но и ее рисунком. Если да то скажите какая команда делает это и какие проигрыватели для этого существуют. То же самое касается и мелодии, музыки. Возможно ли это в таких играх?

Malevi4: корочь планирую сделать реал очь интересню игруху с картинками муз сопровождением и тд кто всегда готов помочь =) плз дайте аську свою иль контакт плз.

Серый Волк: Malevi4 - да, использование музыки возможно. Оформление описаний локаций картинками так же возможно, делается это просто. Когда у нас заработает сайт, а сайт заработает когда мистер Ай-яй-яй (он же латыш, он же бревно, он же евг, он же хозяин http://urq.plut.info/ , он же повелитель вестника !Евг, где свежий выпуск вестника? народ жаждет!)... фу...какое улиточное предложение)) нельзя так писать. Так вот, когда заработает сайт (в оч ближайшее время) мы с удовольствие поделимся ссылками на те проигрыватели, которые поддерживают интересующие тебя возможности, а noname одним лёгким пассом над клавиатурой расскажет, как вставлять всякую там мультимедию в текстовые игры. =)

Malevi4: спс жду с нетерпением буду пока сюжед дальше продумывать

Серый Волк: Malevi4 а вообще... скинь в ЛС адрес ящика, вышлю и прогу и справочник к ней. Менее пяти минут изучения последнего и ты с легкостью озвучишь и раскрасишь картинками тексты.

uux: Собственно, можно и без лички. Вот здесь все ссылки на AkURQ (1.28 pre 1 и pre 6) рабочие. AkURQ 1.28 pre 1 считается несколько более стабильной. AkURQ и есть интерпретатор урки с поддержкой картинок. А здесь можно хелп по ней найти. AkURQ 2 - увы, глубокая бета и уже, видимо, навсегда.

Malevi4: скинул те ящик напишу на всяк еще здесь flop94@bk.ru

Malevi4: Почитаю мануалы но надеюсь тут тож напишут как вставить картинку и музыку

noname: Chicago1920 пишет: noname кхм... там внутри куба все точки=1 ? нет, там- грубая ошибка. спешил. а теперь- засыпаю... но задача и вправду простая, только координаты точки надо было сделать x#cx1$y#cy1$z#cz1$=1 т е три координаты точки это- одно, а при обращении к массиву точек все эти три координаты должны быть в одной переменной (аналогично a[cx1,cy1,cz1]:=1 в паскале) завтра выложу правильное решение хорошо было бы ещё встроить более совершенную проверку, но на это уж времени может и не быть- щазз готовлюсь к поступлению на новую работу (когда высплюсь). старую я вчера бросил

qwerty: Malevi4 пишет: Почитаю мануалы но надеюсь тут тож напишут как вставить картинку и музыку напишут. завтра. насколько я помню, выложенные на одном из последних урковских конкурсах игрухи ВСЕ шли, в том числе и под Акурку пре6. несмотря на то, что были писаны под разные платформы(ну, там ещё про Алису в urq-ляндии было). так что думаю, имеет смысл ориентироваться именно на неё вообще, я Акурку плохо знаю, так что будем разбираться вместе. и следует учитывать тот факт, что: возможно, срок от запроса в тему до моего ответа на него увеличится до 1-й недели. впрочем, есть ещё надежда на 'помощь зала' да и на досурке мой опыт не велик. кстати, Malevi4, а ты не пробовал искать ответ на свой вопрос в этой теме? вдруг нечто подобное уже обсуждалось?



полная версия страницы