diese werte self.rect.topleft = 230, 70 in der class Starte möchte ich aus der main mit variablen ändern. die werte sollen also nicht fest auf 230,70 stehen. bekomme das nicht hin.
starte wird ja nur einmal aufgerufen, wie komme ich dann an die werte ran mit dauernder änderung (x,y)von mir?
wenn ich eine zusätzliche routine in die class reinsetze:
def gehe(self,x,y):
self.rect.topleft = x,y
und in der main "sprites1.gehe(100,100)" aufrufe ,kommt eine fehlermeldung das diese routine unbekannt ist.
Code: Alles auswählen
import os, pygame
from pygame.locals import *
def load_image(name, colorkey=None):
neuname = name
try:
image = pygame.image.load(neuname)
except pygame.error, message:
print 'kann bild nicht laden:', fullname
raise SystemExit, message
image = image.convert()
return image, image.get_rect()
class Starte(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image("test1.png", -1)
self.original = self.image
screen = pygame.display.get_surface()
self.rect.topleft = 230, 70
self.spin=0
def update(self,wert):
self.spinSpeed = wert
center = self.rect.center
self.spin += wert
if self.spin >= 360:
self.spin -= 360
if self.spin <0:
self.spin += 360
self.image = pygame.transform.rotate(self.original, self.spin)
self.rect = self.image.get_rect()
self.rect.center = center
def gehe(self,x,y):
self.rect.topleft = x,y
def main():
pygame.init()
screen = pygame.display.set_mode((320,240))
clock = pygame.time.Clock()
starte = Starte()
sprites1 = pygame.sprite.RenderPlain((starte))
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type in (QUIT, KEYDOWN, K_ESCAPE):
return
sprites1.update(5)
sprites1.gehe(100,100)
sprites1.draw(screen)
pygame.display.flip()
main()