Klasser, attributet finns inte.
Hej, jag behöver returnera mitt fönster från en "graphic game" klass så att klassen "graphic player" kan målas i det. Vet inte varför detta inte fungerar.
Graphicsgame klassen har enkapulerats runt en "model game" klass. Den relevanta metoden som inte fungerar är getWindow(self) som behövs sen när jag ska måla ut graphic player som enkapulerats runt en "model player" klass. Varför funkar det inte?
(graphics är ett bibliotek från min kurslitteratur som ska vara lite enklare och som ska visa på obektorienterad design lite mer, förklarar syntaxen i vissa fall). Koden har kortats ner.
from graphics import *
class GraphicGame:
def __init__(self, game):
self.model = game
self.model.players[0] = GraphicPlayer(self, self.model.players[0])
self.model.players[1] = GraphicPlayer(self, self.model.players[1])
self.model.currentplayer = self.model.players[0]
#Här definieras fönstret
self.window = GraphWin("Cannon game" , 640, 480, autoflush=False)
self.window.setCoords(-110, -10, 110, 155)
ground = Line(Point(-110,0), Point(110,0))
ground.draw(self.window)
#Här definieras getter-funktionen som måste fungera
def getWindow(self):
return self.window
class GraphicPlayer:
def __init__(self, ggame, player):
self.player = player
self.ggame = ggame
self.width = self.ggame.getCannonSize()
self.color = self.player.getColor()
self.pos = self.player.getX()
#Här används funktionen
self.win = ggame.getWindow()
self.gplayer = Rectangle(Point(self.pos-(self.width/2), 0), Point(self.pos + (self.width/2), 0))
#Som slutligen behövs när jag ska måla graphic player.
self.gplayer.draw(self.win)
Här är felmeddelandet som fås.
I GraphicGame.__init__ skapas GraphicPlayer innan fönstret skapas, men när GraphicPlayer skapas försöker den använda fönstret. Prova att stöka om så att GraphicGame skapar fönstret innan den börjar med GraphicPlayer.
Tack så jättemycket!