Приносим извинения за плохой титул. У меня есть опыт работы с кодом игры с C# (XNA) или java (LibGDX), но я недавно начал использовать python и pygame, и мне трудно понять, как создать код. Это, как я думал, что это будет сделать, чтобы сделать:Pygame - разработка кода
game.py файл:
import pygame
import entities
width = 400
height = 300
# Set up the window size
screen = pygame.display.set_mode((width, height), 0, 32)
player = entities.Player(width/2, height/2) # The player
#main game loop is here...
entities.py файл:
import pygame
import game
class Player:
def __init__(self, x, y):
# Texture for the player
self.texture = pygame.image.load('player.png')
def draw(self):
""" Draws the player """
game.screen.blit(self.texture, (self.position.x, self.position.y))
#class Enemy: ...
Однако этот код дать мне ошибки. Я думаю, проблема в том, что я импортирую entities.py
в game.py
, а затем импортирую game.py
в entities.py
.
Как я буду правильно проектировать это в python?
Для игрока или сущности не имеет атрибута 'screen'. Это должно быть атрибутом, который войдет в 'static class Game' в C# или java. Кроме того, мне пришлось бы получить доступ ко многим переменным, если не ко всем переменным из моего файла 'game.py'. Это приведет к тому, что в будущем многие параметры будут включены во все мои функции, что будет очень запутанным. Любые другие идеи? – dimitris93
Я не понимаю, почему это должен быть статический атрибут; это часть данных, которую игрок должен ссылаться, поэтому для нее вполне разумно быть атрибутом экземпляра. В любом случае, если вы не хотите этого делать, вы можете просто передать его в качестве аргумента для 'draw'. –
Ну, это кажется немного лучше. Будет ли смысл обертывать код, который у меня внутри 'game.py' внутри класса' game', и передать это как параметр, когда мне нужно больше, чем только одна переменная? Или это кажется еще хуже? – dimitris93