Алекс__ Опубликовано 22 сентября, 2014 Жалоба Поделиться Опубликовано 22 сентября, 2014 Алекс, не дезинформируй народ ))Дык, написал же - "на сколько я знаю"...;) Опять же, "use" - это хорошо, но для некоторых "извращенных" целей может не подойти... По поводу Notify'я - в качестве аргумента для действия Notify надо задать некий текст, поэтому кавычки можно (а в случае с переменными, содержащими текстовое значение, не нужно) ставить (так же как и для названия текстовой кнопки).Notify(j.name) Notify(str(j.mpcost)) Вот еще немного другой, чем у Романа, пример форматирования строкиtextbutton j.name hovered Notify("Не хватает энергии!") action Notify("На этот прием не хватает " + str(j.mpcost) + " энергии") Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 23 сентября, 2014 Жалоба Поделиться Опубликовано 23 сентября, 2014 Спасибо, другой вариант форматирование строки тоже полезный. :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 24 сентября, 2014 Жалоба Поделиться Опубликовано 24 сентября, 2014 (изменено) Такой вопрос — вот есть, предположим, класс:class test: def __init__(self, name, strenght, agility): self.name = name self.str = strenght self.agi = agility далее следующий код:$Dima = test("Dima", 5, 2) $Katya = test("Katya", 2, 5) $Actors = [Dima, Katya] и, теперь главное, функция сортировки (да-да, я знаю, что «пузырьки» отстой :lol: ) в зависимости от параметра для сравнения,нечто в таком духе:def bubble_sort (inlist, param): for i in range (0, len(inlist)-1): for j in range (0, len(inlist)-1-i): if inlist[j].param > inlist[j+1].param: inlist[j], inlist[j+1] = inlist[j+1], inlist[j] return inlist ну и дальше нужен результат, примерно так:$champions_str = bubble_sort(Actors, str) $champions_agi = bubble_sort(Actors, agi) Этот код не работает, т.к. не получается таким способом в функцию bubble_sort передать нужный параметр для сравнения (param).Собственно, вопрос, как переработать функцию так, чтобы она понимала нужный параметр? Есть, конечно, извращенный вариант:def bubble_sort (inlist, param): if param == "str": for i in range (0, len(inlist)-1): for j in range (0, len(inlist)-1-i): if inlist[j].str > inlist[j+1].str: inlist[j], inlist[j+1] = inlist[j+1], inlist[j] return inlistи далее:$champions_str = bubble_sort(Actors, "str"),но это именно что извращение и дикие костыли. :unsure: Изменено 24 сентября, 2014 пользователем Vielstern (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Элионт Опубликовано 24 сентября, 2014 Жалоба Поделиться Опубликовано 24 сентября, 2014 Питон - сортировка по ключу.http://habrahabr.ru/post/138535/http://habrahabr.ru/post/138625/ Для того чтобы не плодить лишнего кода можно использовать "безымянные функции" (lambda)http://www.py-my.ru/post/4bfb3c691d41c846bc000030 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 24 сентября, 2014 Жалоба Поделиться Опубликовано 24 сентября, 2014 Спасибо! list.sort() — то, что надо. Видимо, плохо гуглил. С lambda тоже попробую разобраться. :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 12 октября, 2014 Жалоба Поделиться Опубликовано 12 октября, 2014 Хм, столкнулся тут то ли с багом (новой версии? Версия 6.18.2.729, если что) RenPy, то ли я в чем-то туплю (что тоже вполне может быть :D). В общем, такой код:init: $ spisok = [] label start: "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok.append("a") "место, где мы загружаемся на предыдущее сохранение" сохраняемся до добавления элемента в список, после добавления загружаемся на это сохранение и видим... что элемент все равно уже добавлен. При этом, если убрать объявление списка из init вот так: label start: $ spisok = [] "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok.append("a") "место, где мы загружаемся на предыдущее сохранение",то после загрузки получаем пустой список, как и должно быть. То же самое с remove и т.д. А вот если прописать код вот так:init: $ spisok = [] label start: "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok = ["a"] "место, где мы загружаемся на предыдущее сохранение", то после загрузки видим пустой список, несмотря на объявления списка в init. В общем, вопрос — это баг и надо просто подождать, пока его исправят, или я что-то не понимаю, и так и должно быть? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Элионт Опубликовано 12 октября, 2014 Жалоба Поделиться Опубликовано 12 октября, 2014 Дело в том что при загрузке инит не исполняется.В ините объявляются только константы. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 12 октября, 2014 Жалоба Поделиться Опубликовано 12 октября, 2014 Понятно, спасибо. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Jacobsone Опубликовано 14 октября, 2014 Жалоба Поделиться Опубликовано 14 октября, 2014 Доброго всем. Решил настругать для своего удовольствия новеллу. Ren`py вроде податлив но в то же время информации на русском недостаточно. А от обильного набивания головы туториалами по питону пучит в зрачках. У меня возникло несколько вопросов. Рассчитываю на вас.По аналогии с накоплением очков за ответы, я сделал наличные. ( Например 1. Мама дай на интернет +200 2. Пап дай на кино +300 и тд тп) Вопрос №1. Как например подобным образом реализовать оплату. Просто сменить + на -?$ money +=100 #дали$ money -=100 #отжалиВопрос №2. Как вывести коинсы чтобы они всегда в процессе игры были перед глазами? Вопрос №3. Если не ошибаюсь в игре можно сколько угодно копилок с баллами создавать лишь бы экрана хватало. И деньги и полоса отношений и здоровье... Можно $ *** = "начальное значение" вынести в init а не писать после label start ибо такая кашица начинается.Вопрос №4. Как осуществить автоматическое напоминание в игре если скажем для оплаты квартиры необходима определённая сумма которой у меня в данный момент нет. И как только я её насобираю, возможно игрок сам забудет что его ща выселят а игра сама напомнит "у вас достаточно денег для оплаты комнаты". Было бы идеально пустить уведомление бегущей строкой. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Алекс__ Опубликовано 15 октября, 2014 Жалоба Поделиться Опубликовано 15 октября, 2014 1. Да, так.2. Можно сделать экран, который будет отображать значение переменной "деньги" (важно: в версии 6.9.3 экранов еще нет, они появились в версии 6.11)screen money_scr: text "На кармане [money] деревянных." size 35 align (0.05, 0.05) label start: $ money = 0 scene black show screen money_scr "Мама, дай на интернет" $ money +=200 "Пасиба ^-^" "Надо оплатить и-нет..." $ money -=200 "... а то танчики без меня уедут"http://www.renpy.org...ml/screens.htmlhttp://www.renpy.org...en_actions.html 3. а) количество переменных не ограничено, если есть желание показать огромное количество данных - можете поместить их внутрь вьюпорт'а - http://www.renpy.org...s.html#viewport,б) значения переменным лучше всего присваивать в самом начале метки start - для их правильного сохранения - http://www.renpy.org...d_rollback.html 4. Попробуйте сделать экран, который в случае не оплаты комнаты будет показывать надпись о достаточности денег.screen oplata_scr: textbutton "Оплатить" action If((oplata and (money>tax)), [setVariable("money", money-tax), SetVariable("oplata", False)], None) align (0.95, 0.05) text "На кармане [money] деревянных." size 35 align (0.05, 0.05) if oplata: if money < tax: text "Пора платить, а денег не хватает..." size 35 align (0.05, 0.15) else: text "У вас достаточно денег для оплаты комнаты" size 35 align (0.05, 0.15) label start: $ money = 0 $ tax = 400 $ oplata = False scene black show screen oplata_scr "А не пора ли платить за квартиру?" $ oplata = True "Ой, пора..." "Мама, дай на интернет" $ money +=200 "Пап, дай на кино" $ money +=300 "Пасиба ^-^" "???"Бегущую строку и прочие эффекты сможете сделать при помощи ATL - http://www.renpy.org/doc/html/atl.html Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Jacobsone Опубликовано 16 октября, 2014 Жалоба Поделиться Опубликовано 16 октября, 2014 2Алекс__ Всё вбагрил, всё радует. Первый метод мне подходит а второй(4) навёл на интересную мыслю. Спасибо Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 7 ноября, 2014 Жалоба Поделиться Опубликовано 7 ноября, 2014 (изменено) Привет. Столкнулся с проблемой, когда у копий экземпляра класса меняются одновременно атрибуты по не очень понятному мне алгоритму.Вот такой примерно код: label start: python: from copy import copy class test_cl: def __init__ (self, var, list): self.var = var self.list = list $tester_base = test_cl(10, ["a", "b"]) $tester1 = copy(tester_base) $tester2 = copy(tester_base) $tester1.var -= 5 "1 этап. Всё в порядке, меняется значение только у tester1" $tester1.list.append("x") "2 этап. \"x\" добавляется и в tester1, и в tester2, и в tester_base" $tester1.list = ["x"] "3 этап. меняется list только у tester1" returnобъясните, плз, почему на втором этапе происходит такое и как этого избежать. Изменено 7 ноября, 2014 пользователем Vielstern (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Элионт Опубликовано 8 ноября, 2014 Жалоба Поделиться Опубликовано 8 ноября, 2014 Потому что остаются ссылки на старые структуры данных. 1) попробуй deepcopy2) измени код:import copy as cp $tester1 = cp.copy(tester_base) - хотя хз, мб это то же самое будет.3) Сделай собственную функцию копирования которая гарантированно не оставляет ссылок на старые структуры данных (если у тебя классы небольшие то норм, почитай про атрибут __dict__ ) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 8 ноября, 2014 Жалоба Поделиться Опубликовано 8 ноября, 2014 Спасибо, deepcopy помогло. Второй вариант — то же самое, да. Третий не успел попробовать, но буду еще изучать. :) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 11 декабря, 2014 Жалоба Поделиться Опубликовано 11 декабря, 2014 Привет. Как можно сделать, чтобы viewport при каждом обновлении текста (или другого контента) в нем автоматически перематывался вниз до последней строчки? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Алекс__ Опубликовано 11 декабря, 2014 Жалоба Поделиться Опубликовано 11 декабря, 2014 Добавьте параметр yinitial viewport id "vp": yinitial 1.0 http://www.renpy.org...s.html#viewport Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Vielstern Опубликовано 12 декабря, 2014 Жалоба Поделиться Опубликовано 12 декабря, 2014 Спасибо! А я уже было полез копать в сторону ui.adjustment и т.д. Все оказалось гораздо проще. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MIDERY Опубликовано 6 января, 2015 Жалоба Поделиться Опубликовано 6 января, 2015 Добрый день. Столкнулся с проблемой использования $ renpy.movie_cutscene, а именно: видео идет, но оно исчезает при нажатии левой кнопки мыши. Можно ли как-нибудь заставить его идти, не реагируя на нажатия игрока? Как параметр interact=False в $ renpy.say, только для видео. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Алекс__ Опубликовано 6 января, 2015 Жалоба Поделиться Опубликовано 6 января, 2015 Посмотрите здесь -https://www.animeforum.ru/index.php?app=forums&module=forums§ion=findpost&pid=2692089 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MIDERY Опубликовано 6 января, 2015 Жалоба Поделиться Опубликовано 6 января, 2015 @Алекс__, Спасибо огромное. Вы мне очень помогли. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Suaicidal Hero Опубликовано 12 января, 2015 Жалоба Поделиться Опубликовано 12 января, 2015 Привет всем.Перелистал весь форум, но так и не нашел ответ на вопрос :сСобсна, сам вопрос: можно ли менять картинку в главном меню в соответствии с реальным временем? Например, если в реальном времени (на компьютере/телефоне) показывает вечернее время, то картинка в главном меню одна; если дневное время, то другая? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Suaicidal Hero Опубликовано 12 января, 2015 Жалоба Поделиться Опубликовано 12 января, 2015 С трудом, но удалось это сделать в самой игре (см. скрин).Но всё так же не знаю, как это вставить в главное меню :( Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
DirtyBogdan Опубликовано 12 января, 2015 Жалоба Поделиться Опубликовано 12 января, 2015 Можно ли сделать, чтобы при первом запуске игры, перед splashscreen показывался экран (imagemap), предлагающий выбор режима отображения игры?Если да, то как это правильно реализовать? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Suaicidal Hero Опубликовано 12 января, 2015 Жалоба Поделиться Опубликовано 12 января, 2015 Решение мне уже подсказали в группе ВК.Но всё равно спасибо, если кто-то уделял моему вопросу время) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Алекс__ Опубликовано 13 января, 2015 Жалоба Поделиться Опубликовано 13 января, 2015 Можно ли сделать, чтобы при первом запуске игры, перед splashscreen показывался экран (imagemap), предлагающий выбор режима отображения игры?Если да, то как это правильно реализовать?Почему не сделать данный выбор частью splashscreen'а? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.