Знаешь я тебе советую посмотреть код игры зона22 от стикера может там и поймёшь вот ссылка: http://vk.com/doc34229280_165924848?hash=e05d8eebe935bef540
vadim4ik123, Тебе необходимо завести 2 переменные, любые, которые изначально допустим равны единице, то есть - жизни, а когда они обнулятся - это будет значить смерть. Для того, чтобы они изменились - необходима проверка на столкновение пули с танком. Она делается легко в цикле ну скажем на 10 пуль for i=1,10 do if masx[i]>=x and masx[i]<=x+tank:width() and masy[i]>=y and masy[i]<=y+tank:height() then твоя переменная обнулится, ну скажем t1=0 end end
Ну а дальше пишешь условие для смерти танка if t1==0 then твой код end
Идею думаю ты понял, просто делаешь условие на столкновение и обнуляешь нужную тебе переменную. Удачи)
Смерть делается по разному. Если тебе например нужно перезапустить уровень, тогда для этого тебе нужна лишь 1 переменная - жизни самого танка. Например, сделаем так, что когда жизни танка меньше 0 или 0, тогда идет рестарт уровня. (похожий алгоритм использовался в Ogricks)
if hp <= 0 then System.memclean() dofile("script.lua") end
Или например запустим функцию смерти:
function death() System.message("You died(",0) --этим мы выведем сообщение о смерти см. урок 2 System.memclean() hp=50 --восстановим HP (любое число) dofile("script.lua") end
... while true do ...
if hp<= 0 then death() end
Вот так. Есть еще много способов, но все они схожи. Можешь собственный на базе других придумать)
Спасибо вам ребята!Само больше понял это VITTACH'a, спасибо тебе большое да и тебе CraftManiak.
Добавлено (15.04.2013, 16:57) --------------------------------------------- Все проверил, заработало спасибо!
Добавлено (15.04.2013, 20:01) --------------------------------------------- Блин,все прекрасно работало а теперь не работает((((((((((
for i=1,5 do --сделал на 5 пуль if masx[i]>=x and masx[i]<=x+p1:width() and masy[i]>=y and masy[i]<=y+p1:height() then --массивы while true do вписал t1=0 --переменную перед while true do вписал end end
Не понимаю почему не работает(
Сообщение отредактировал vadim4ik123 - Понедельник, 15.04.2013, 19:12
vadim4ik123, По предложенному тобой участку кода не представляется возможным найти ошибку, ибо не расписано что у тебя за что отвечает, ну скажем p1, мы же не можем мысли читать.. Плюс - ты написал что у тебя что-то не работает, но ты не указал что именно, вообще что ли не запускается, или работает, но не корректно, а если не корректно, то в чем это выражается..
P.S. и впредь прошу придерживаться сего плана ответа, дабы получить надлежащую помощь
vadim4ik123, А ты уверен, что вносил изменения исключительно в этот участок кода, или может все-таки куда-то ещё? Ибо эти 6 строчек по определению не могут быть причиной ошибки, ошибка глубже - и её нужно ещё отыскать. Кст переменные X и Y надеюсь ни где более не используются кроме как координат танка?
Как вариант - либо вышли весь код этого скрипта, либо попробуй откатить файл - делается это 2мя способами
1)Только если сам файл хранился на ПК а не на карточке PSP.Открываешь свойства/и выбираешь пункт предыдущие версии, там можно воскресить почти все пред. версии этого файла 2)Не важно где он у тебя находился, но зато важно наличие старой копии, если у тебя такая есть, ну скажем вчерашней или позавчерашней. Тогда открываешь эти 2 файла в программе WinMerge и она выдает тебе различия между ними,по которым ты можешь уже судить, какие изменения в коде привели к текущей ошибке
vadim4ik123, Фраза скажи просто как её исправить - меня убила - может мне и код за тебя написать? Думай - мы программисты так не поступаем, это не в наших принципах просто тыкать человеку носом туда, где у него ошибка. Так ты НИКОГДА ничему не научишься.
Я же тебе говорю, что у тебя в проекте нарушена логика 1) Не понятно почему ты пишешь условие if fire<10 then, учитывая тот факт, что пуль у тебя только 5, если ты меня не понял, то задай себе вопрос, а для чего вообще ты писал это условие, и если не ответишь, посомтри урок по массивам 2)Ты где-то пишешь masx[fire]=x+50 а потом проверяешь на условие >=x и там <=x+p1:width() - ты понимаешь, что это глупо - проверять и без того истинное выражение. Я клонил к тому, что ты должен был проверять не на X а на XX скорее всего
Программирование - это труд.. большой труд, который не терпит халатного отношения