Автор | Сообщение |
|
Отправлено: 02.10.09 23:16. Заголовок: портирование книги "космический коммандос"
вопрос: проигрыватель утверждает что в данной конструкции ошибка - не хватает слова end завершающего многострочную форму оператора... что не так? if #спротивника>0 and #стойкость > #корректировка: if #laz=1: act 'Выстрелить из лазера': *pl'Вы стреляете в робота из лазера.' if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-2 end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #blast=1: act 'Выстрелить из бластера': *pl'Вы стреляете в робота из бластера.' if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-rand(1,6) end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #laz=1 and #blast=0: if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-1 end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #стойкость <= #корректировка: *pl'Вы были убиты.' end end
|
|
Профиль
Цитата
Ответить
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|
|
Отправлено: 02.10.09 23:22. Заголовок: яшко, а ты говориш ...
яшко, а ты говориш .... цитата: | 123th, зачем вот это выкладывать было? Это НИЧЕГО. Вообще. Доделай чуть-чуть, чтобы было хоть чтото а не просто тупые клики. Тогда выкладывай. ИМХО. |
| за тупыми кликами прячутся логические циклы... я это всё за неделю наваял изредко поглядывая в справку и это мой первый вопрос на форуме относительно кода...
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 02.10.09 23:33. Заголовок: if #спротивника>..
Я отформатировал код. Итого у тебя 2 отсутствующих END'а, о чем тебе и сообщил ранее интерпретатор. Советую форматировать свой код впредь самостоятельно, используя табуляцию, разделяя большие участки кода пустой строкой. if #спротивника>0 and #стойкость > #корректировка: if #laz=1: act 'Выстрелить из лазера': *pl'Вы стреляете в робота из лазера.' if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-2 end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #blast=1: act 'Выстрелить из бластера': *pl'Вы стреляете в робота из бластера.' if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-rand(1,6) end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #laz=1 and #blast=0: if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-1 end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end end if #стойкость <= #корректировка: *pl'Вы были убиты.' end end
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 02.10.09 23:41. Заголовок: Конкретно этот участ..
Конкретно этот участок кода стоит переписать набело, убрав повторяющиеся участки.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 02.10.09 23:46. Заголовок: спасибо за абсолютно..
спасибо за абсолютно неинформативный ответ - сразу видно программиста...
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 02.10.09 23:51. Заголовок: 123th чем тебя не ус..
123th чем тебя не устраивает ответ? Ты спросил - "в чем проблема с кодом". Я ответил, что действительно в твоем коде два END'а пропущены, еще и отформатировал текст, чтоб ты наглядно смог увидеть, в каком месте нарушается задуманный тобой уровень вложенности IF. Какой еще информации тебе нехватает?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 02.10.09 23:53. Заголовок: нет-нет, всё правиль..
нет-нет, всё правильно. именно так программисты и отвечают.
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 02.10.09 23:55. Заголовок: 123th я сдаюсь. Како..
123th я сдаюсь. Какой ответ тебе был нужен? Какой ответ ты бы счел информативным?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 02.10.09 23:57. Заголовок: ммм... оператор act ..
ммм... «оператор act в данном случае должен заканчиваться словом end»
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 03.10.09 00:08. Заголовок: 123th многострочные ..
123th многострочные формы операторов ACT и IF всегда должны закрываться END'ом, это ты и без меня должен знать. Тем более, что в справку заглядываешь регулярно. "Править баги" в этом куске ужаса я предоставляю автору. Я лучше подскажу в каком направлении двигаться, чтобы ты смог самостоятельно решить проблему, чем сделаю всё за тебя. P.S. Может, и ты когда-нибудь поймёшь, почему я поступаю так, а не иначе, и даже когда-нибудь избавишься от стереотипов "о программистах".
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 00:46. Заголовок: ... теперь у меня не..
... теперь у меня не работает оператор перехода по метке (jump) мне заявляют что метка не найдена. делал копипаст из примера в справке - работает, в чём дело не пойму. cls *pl'Гравитационная бомба уничтожает дверь; теперь через возникшее круглое отверстие Вы можете попасть в какую-то комнату.' *pl'Вы не успеваете толком осмотреть комнату через дыру, потому что первое, что Вы видите - это металлический человекоподобный робот с бластером в руках.' *pl'Обнаружив беспорядок, робот поднимает оружие и цилится в Вас.' *pl'Вы должны сражаться.' if #laz=0 and #blast=0: *pl'Вы вступаете в неравный бой используя подвернувшиеся под руку предметы.' end #мпротивника=5 #спротивника=5 :loop cla KILLOBJ add obj "Стойкость = " + str (#стойкость-#корректировка) + " из " + str (#стойкость) add obj "Мастерство = " + str (#мастерство) add obj "Везение = " + str (#везение) add obj "Защита = " + str (#защита) add obj "***оружие***" if #laz=1: add obj "Лазер" end if #blast=1: add obj "Бластер" end if #gren>0: add obj "Граната (" + str (#gren) + " шт)" end if #bomb>0: add obj "Грав. бомба (" + str (#bomb) + " шт)" end add obj "***вещи***" add obj "пиллюли-витализаторы: " + str (#пиллюли) if #спротивника>0 and #стойкость > #корректировка: if #laz=1: act 'Выстрелить из лазера': *pl'Вы стреляете в робота из лазера.' if rand(1,6)+rand(1,6)>#мастерство: *pl'Вы промахнулись.' else #спротивника=#спротивника-2 end if #спротивника>0: if rand(1,6)+rand(1,6)>#мпротивника: *pl'Противник промахнулся.' else if #защита > 0: if rand(1,6)+rand(1,6)>#защита: #корректировка=#корректировка+rand(1,6) end #защита=#защита-1 else #корректировка=#корректировка+rand(1,6) end end end jump 'LOOP' end end end он что - в пределах сложной конструкции не видит внешних меток?
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 03.10.09 08:13. Заголовок: Распространенная оши..
Распространенная ошибка. Код действия (Между ACT и соотв. END) обладает своей областью видимости, которая не пересекается с кодом локации. Проще говоря, из ACT нельзя делать просто jump на метку в коде локации, следует использовать GOTO либо GOSUB.
|
|
Профиль
Цитата
Ответить
|
|
|
Отправлено: 03.10.09 11:46. Заголовок: ну я так и предполож..
ну я так и предположил, но в справке я упоминания об этом не нашёл, так что теоретически я всё правильно написал. и вообще это странно - зачем тогда нужны метки, если они не работают по прямому назначению. последние два оператора менее гибкий инструмент в данном случае.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 12:01. Заголовок: В справке это есть, ..
В справке это есть, правда не указано явно. Нужно будет добавить.. Код действий - отдельный блок кода - например, как отдельная локация.
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 03.10.09 12:10. Заголовок: 123th метки необходи..
123th метки необходимы для переходов в пределах видимости участка кода. Они работают по прямому назначению.
|
|
Профиль
Цитата
Ответить
|
|
| менеджер по рекламе
|
|
|
Отправлено: 03.10.09 12:14. Заголовок: Переходы лучше орган..
Переходы лучше организовывать по gt,xgt,gs с аргументами, в начале локации обработчик, который проверяет, передан ли аргумент, и какой. если передан - jump к нужной точке. Примерно так это выглядит: цитата: | if args[0]!0:jump '<<args[0]>>' (много кода) :1 (код) if int<35: gt $curloc,1 else gt $curloc,3 end :2 (код) :3 (код) if int2>60:gt $curloc,2 |
|
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 12:53. Заголовок: 123th, хочешь я немн..
123th, хочешь я немного облегчу написание кода? =) В цифровых переменных (#), вовсе не обязательно ставить знак "#"- просто название переменной и операции с ней. Гораздо удобней - меньше над переключатца по языкам
|
|
Профиль
Цитата
Ответить
|
|
| менеджер по рекламе
|
|
|
Отправлено: 03.10.09 12:59. Заголовок: Yashko На самом деле..
Yashko На самом деле, таких нюансов очень много. Это не единственный пример, когда можно подсократить код
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 13:20. Заголовок: если честно - мне пр..
если честно - мне просто лень... ну вобщем доделал я эту страницу. теперь в игре можно провести первый бой, правда самый первый противник как то слабоват - я ему за все тестовые отыгрыши ни разу не проиграл... куда бы ещё файл по человечески выложить, чтоб было понятно что это даже не демка а вообще что то мелкое, но чтоб желающие могли поиграться...?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 13:36. Заголовок: 123th, лучше доделай..
123th, лучше доделай до какого-либо законченного состояния и выложим на qsp.su
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 03.10.09 20:17. Заголовок: сюда по частям кидай..
сюда по частям кидай - мож баги найдем...
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 04.10.09 22:47. Заголовок: 123th смени аватарку..
123th смени аватарку. Ну пожалуйста.
|
|
Профиль
Цитата
Ответить
|
|
|
Отправлено: 04.10.09 23:19. Заголовок: пишет: 123th смени..
[Ray] пишет: цитата: | 123th смени аватарку. Ну пожалуйста. |
| ммм... почему?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 04.10.09 23:49. Заголовок: 123th она повергает..
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 05.10.09 00:34. Заголовок: это проблеммы твоего..
это проблеммы твоего больного воображения... увы, это не повод менять мою картинку. ==== хотя ладно - поменяю. > ]
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 05.10.09 19:53. Заголовок: 123th пасиб :sm36: ..
123th пасиб
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 06.10.09 13:37. Заголовок: нормальная демо верс..
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 11.10.09 08:20. Заголовок: как прогресс?..
как прогресс?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 11.10.09 20:14. Заголовок: 123th, довольно мног..
123th, довольно много ошибок в тексте. Но вообще вполне играбельно :)
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 11.10.09 21:35. Заголовок: Кстати, как там с ав..
Кстати, как там с авторскими правами?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 12.10.09 12:14. Заголовок: с авторскими правами..
с авторскими правами никак. я про эту книгу вообще упоминаний не встречал, хотя вполне неплохая - даже странно. с автором связываться у меня никакого желания нету, равно как и с издательством, если оно ещё существует. если очень интересно - поищи сам. собственно я её портирую в связи с почти полным отсутствием именно фантастики и научной фантастики в данной области - сплошное фентези... Byte пишет: цитата: | 123th, довольно много ошибок в тексте. Но вообще вполне играбельно :) |
| гм. часть текста я пишу сам, часть перепечатываю с книги. где именно и какие ошибки незнаю - проверять и исправлять буду только слова, если в них есть опечатки, но займусь этим когда всё будет готово полностью.
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 12.10.09 14:45. Заголовок: 123th на форум джума..
123th на форум джуманджи заходил? Они знатоки по книгам-играм.
|
|
Профиль
Цитата
Ответить
|
|
|
Отправлено: 12.10.09 21:18. Заголовок: Nex а ты не знаешь г..
Nex а ты не знаешь где можно скачать то что там перечислено? :)
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 13.10.09 00:02. Заголовок: Nex пишет: 123th на..
Nex пишет: цитата: | 123th на форум джуманджи заходил? Они знатоки по книгам-играм. |
| ну хоть бы ссылку приложил...
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 13.10.09 01:04. Заголовок: 123th пожалуйста...
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 13.10.09 02:09. Заголовок: так там и надо спра..
[Ray] так там и надо спрашивать. Наверняка все на том же сайте выложено.
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 14.10.09 14:53. Заголовок: не нашёл там кк..
не нашёл там кк
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 14.10.09 16:01. Заголовок: 123th а пообщаться с..
123th а пообщаться с ними пробовал? Вопрос на форуме задать, например?
|
|
Профиль
Цитата
Ответить
|
|
Отправлено: 14.10.09 19:44. Заголовок: гм... а мне оно надо..
гм... а мне оно надо?
|
|
Профиль
Цитата
Ответить
|
|
| moderator
|
|
|
Отправлено: 14.10.09 23:05. Заголовок: 123th не хочешь - не..
123th не хочешь - не надо.
|
|
Профиль
Цитата
Ответить
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|