Разделить программу на несколько файлов - PullRequest
0 голосов
/ 14 ноября 2018

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

https://github.com/20nicolas/game.git

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Обратите внимание, как вы импортируете images123, который затем импортирует из final_game. Это не очень хорошая модель, поскольку она ведет к круговому импорту. Хотя циклический импорт может работать, он может привести к проблемам в разных точках.

В сущности, ваша проблема связана не с импортом, а с тем, как вы начали писать код. Вы хотите, чтобы размеры вашего изображения основывались на объекте player (именно поэтому вам нужно final_game.man для запуска images123), так что было бы более разумно иметь это как часть player инициализация объекта. В конце концов вы можете захотеть удалить его дальше, используя подклассы, но сейчас я бы просто предложил добавить метод для его обработки. Это также вывело бы большинство переменных изображения из глобального пространства, что поможет вам в долгосрочной перспективе.

Например:

class Player():
    def __init__(self, [etc]):
        [...]
        self.formatsprites()

    def formatsprites(self):
        self.idle = [py.transform.scale(img,(self.width,self.length)) for img in image123.idle]
        self.run_right = [py.transform.scale(img,(man.width,man.length)) for img in image123.run_right]
        [...]

Оттуда вы бы изменили код так, чтобы он ссылался на self.idle (или что бы то ни было) вместо простого idle и удалите import final_game и другие соответствующие строки из images123. Вы также можете решить (так как Player теперь содержит больше), что вы хотите переместить player и bullets в другой файл, как вы сделали для изображений.

Есть несколько других структурных изменений, которые вы могли бы внести, чтобы ужесточить свой код, но это часть кривой обучения, а остальное я оставлю на ваше усмотрение. Поздравляю с тем, что вы так много сделали, и удачи с остальными :) 1027 *

0 голосов
/ 14 ноября 2018

Измените синтаксис импорта в final_game.py на:

from images123 import *

Это позволит импортировать все переменные, функции, классы, объекты и т. Д. Из images123.py в final_game.py при условии, что он находится втот же каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...