Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2020, 22:30   #1
Данила Гонтарь
Новичок
Джуниор
 
Регистрация: 01.04.2020
Сообщений: 3
Вопрос Не могу понять в чём проблема

код будет в файле,помогите пожалуйста
Код:
import play 

a=0

s1=play.new_text(words="Привет", x=0, y=0, font=None, font_size=50)
s2=play.new_text(words="Ты зашёл сюда поиграть?", x=0, y=50, font=None, font_size=50)
s3=play.new_text(words="Так нажимай", x=0, y=0, font=None, font_size=50)
s4=play.new_box(color="light green", x=0, y=-50, width=200, height=60)
s5=play.new_text(words="Начать", x=0, y=-50, font=None, font_size=50)

player=play.new_box(color="red", x=-250, y=250, width=200, height=60)

@play.when_program_starts
def start():
    s2.hide()
    s3.hide()
    s4.hide()
    s5.hide()
    player.hide()
@play.repeat_forever
def do():
    if play.key_is_pressed('w'):
        player.y = player.y + step
    if play.key_is_pressed('s'):
        player.y = player.y - step
    if play.key_is_pressed('a'):
        player.x = player.x - step
    if play.key_is_pressed('d'):
        player.x = player.x + step

while a <= 1:
    @play.when_mouse_clicked
    async def click():
        await play.timer(seconds=3.0)
        s1.hide()
        s2.show()
        s3.show()
        s4.show()
        s5.show()
    @s4.when_clicked
    async def click():
        s1.hide()
        s2.hide()
        s3.hide()
        s4.hide()
        s5.hide()
        player.show()
    a=a+1



play.start_program()
По идее он должен после того как я нажал кнопку начать и появился персонаж(player)
ничего не должно происходить после кликов мыши,а текст всё равно появляется
Вложения
Тип файла: txt Код.txt (1.3 Кб, 1 просмотров)

Последний раз редактировалось Данила Гонтарь; 01.04.2020 в 22:40.
Данила Гонтарь вне форума Ответить с цитированием
Старый 04.04.2020, 08:28   #2
phaggi
Пользователь
 
Регистрация: 08.03.2020
Сообщений: 24
По умолчанию

Я не совсем понимаю логику работы play, никогда не пробовал.
Но по анализу кода я понимаю так:
Строками
Код:
   @play.when_mouse_clicked
    async def click():
ты внутреннему методу play приписываешь функцию «click».
Соответсвенно, в дальнейшем, после запуска play.start, объект play видимо так устроен, что сам отслеживает клики и сам вызывает этот метод у себя, своей внутренней логикой.
То-есть действие функции не ограничено циклом while. Ты в цикле разово присвоил методу функцию (кажется, это называется декоратор) но окончание действия цикла не прервало деятельность метода, он продолжает быть и выполняться. Более того, он в цикле вообще не выполняется, только этот самый декоратор создается.

Других объяснений я придумать сходу не могу.

Что с этим делать? Разбираться с логикой работы play. Посмотреть, как делали это другие, у кого оно работает, понять, как у них работает и сделать так же.

Последний раз редактировалось phaggi; 04.04.2020 в 08:32.
phaggi вне форума Ответить с цитированием
Старый 04.04.2020, 08:37   #3
phaggi
Пользователь
 
Регистрация: 08.03.2020
Сообщений: 24
По умолчанию

Например, вместо переопределенияметода whenmouseclick прям функцией вывода текста - сделать блок логики, которая всегда принимает клики, но проверяет значение «а» и если оно равно 0, то выводит текст и присваивает «а» единицу. И тогда клики будут направляться на другую логику, например движения перса.
phaggi вне форума Ответить с цитированием
Старый 04.04.2020, 16:01   #4
Данила Гонтарь
Новичок
Джуниор
 
Регистрация: 01.04.2020
Сообщений: 3
По умолчанию

phaggi,,спасибо большое все исправил и все стало работать
Данила Гонтарь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять в чем проблема. MustafaDzhemadin Java Мобильная разработка (Android) 0 18.11.2019 22:35
Не могу понять в чем проблема. Демик Помощь студентам 7 01.02.2011 19:16
Не могу понять в чем проблема Lecter2009 БД в Delphi 7 09.09.2010 08:48
НЕ могу понять в чем проблема! KNatalia Microsoft Office Excel 2 18.08.2009 02:03
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20