Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2014 01:11:06

Knep
Зарегистрирован: 2014-04-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

Добрый день. Прошу помощь в решении такой проблемы:
В своей программе я выбираю тип игрока в файле с кодом второго меню, откуда он должен читаться в файле с непосредственно с самой игрой, где я сразу же импортирую

from menu2 import player_image
. Но при открытии он не находит во втором меню player_image, т.к. я его определяю уже после основного цикла. Если задать значение для player_image до основного цикла, то игровой файл его находит, но тогда я не могу его изменить в процессе игры, так что в этом нет смысла. То есть мне надо поставить переменную player_image до основного цикла, которая будет задаваться значением после основного цикла. Задается значение так:
if x1 == 380 and y1 == 300 and player_selected == True:
        #player1 = Han Solo
        player_image = right_hero8_image
Буду очень благодарен за помощь!

Офлайн

#2 Май 24, 2014 04:14:31

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

Дайте ка я угадаю, классы не используются?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Май 24, 2014 08:07:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

Knep
Если задать значение для player_image до основного цикла, то игровой файл его находит, но тогда я не могу его изменить в процессе игры, так что в этом нет смысла
Похоже этот стиль называется поток сознания. Я вообще удивлен что ТС не написал свой вопрос одним предложением. Наверное программа написана аналогично. Применение классов в этом случае не требуется (более того, противоречит выбранному стилю).

Наверное поможет если прочитаете
http://en.wikipedia.org/wiki/Event-driven_architecture



Офлайн

#4 Май 24, 2014 17:34:38

Knep
Зарегистрирован: 2014-04-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

JOHN_16
Дайте ка я угадаю, классы не используются?
В классе я задаю переменную, которая содержит изображение
class Player(pygame.sprite.Sprite):
 
    change_x = 0
    change_y = 0
     
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)
         
        self.image = player_image
и т.д.
но класс её не может найти, выдает:

Traceback (most recent call last):
File “K:\Phyton\games\the massacre\dagobah.py”, line 7, in <module>
from menu2 import player_image
File “K:\Phyton\games\the massacre\menu2.py”, line 118, in <module>
from menu3 import *
File “K:\Phyton\games\the massacre\menu3.py”, line 73, in <module>
from dagobah import *
File “K:\Phyton\games\the massacre\dagobah.py”, line 7, in <module>
from menu2 import player_image
ImportError: cannot import name player_image

Офлайн

#5 Май 24, 2014 19:02:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

Что такое menu2?



Офлайн

#6 Май 24, 2014 19:47:18

Knep
Зарегистрирован: 2014-04-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

FishHook
Что такое menu2?
Это отдельный .py-файл, где я задаю player_image, и который открывается до файла с самой игрой

Офлайн

#7 Май 24, 2014 20:21:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

Ну и программа, состоящая из одной строки

import menu2
работает?



Офлайн

#8 Май 24, 2014 20:37:15

Knep
Зарегистрирован: 2014-04-10
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие между файлами

FishHook
Ну и программа, состоящая из одной строки
работает?
Да, такая программа тоже работает. Да и когда я импортирую меню2 в первом меню тоже всё работает.
elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                from menu2 import *
никаких проблем.

Всё дело в том, что я не могу грамотно задать переменную с пустым значением “player_image” в начале файла menu2, которая бы брала значение в коде после цикла.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version