Pygame Problem Sprites

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
FroxGame
User
Beiträge: 12
Registriert: Samstag 1. September 2018, 11:35

Liebe Forum-User,
ich habe ein Buch mit dem ich Python lerne. Ich habe aus dem Buch einen Code ausprobiert, aber der funktioniert bei mir nicht, weil irgendein Element unendlich oft aufgerufen wird.

Code: Alles auswählen

import pygame,sys

#Definiert die Unterklasse für das Bild(in dem Fall den Ball)
class mein_ball(pygame.sprite.Sprite):
    def _init_(self,bild_datei,ort):
        pygame.sprite.Sprite._init_(self)           
        self.image = pygame.image.load(bild_datei)      
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = ort

#Stellt die Fenstergröße ein
groesse = breite, hoehe = 640,480
screen = pygame.display.set_mode(groesse)   

screen.fill([255,255,255])
bild_datei = "wasserball.png"
baelle = []
for zeile in range(3):
    for spalte in range(3):
        ort = [spalte * 180 + 10,zeile * 180 +10]
        ball = mein_ball(bild_datei,ort)
        #Setzt den Ball auf die Liste
        baelle.append(ball)                             
for ball in baelle:
    screen.blit(ball.image, ball.rect)
pygame.display.flip()
        
    
active = True
while active:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            active = False
pygame.quit()
Das ist der Code. und hier ist der Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python36\pygame_baelle.py", line 21, in <module>
    ball = mein_ball(bild_datei,ort)
  File "C:\Python36\lib\site-packages\pygame\sprite.py", line 124, in __init__
    self.add(*groups)
  File "C:\Python36\lib\site-packages\pygame\sprite.py", line 142, in add
    self.add(*group)
  File "C:\Python36\lib\site-packages\pygame\sprite.py", line 142, in add
    self.add(*group)
  File "C:\Python36\lib\site-packages\pygame\sprite.py", line 142, in add
    self.add(*group)
  [Previous line repeated 326 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object
Kennt sich damit jemand aus? Vielen Dank für Hilfe
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@FroxGame: `__init__()` braucht *zwei* Unterstriche am Anfang und am Ende, nicht nur *einen*.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
snafu
User
Beiträge: 6732
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und bei der Fehlermeldung sind die zwei Unterstriche plötzlich vorhanden, wobei der Schritt zu Sprite.__init__() auch nicht aus dem Traceback hervorgeht. Es ist also offensichtlich nicht der Code, der tatsächlich zu dem Fehler führt und das ist dadurch nicht gerade hilfreich...

@FroxGame:
Wenn du den Originalcode nicht zeigen willst, dann ist das schon okay. Aber dann doch bitte eine abgewandelte Form, die den Fehler wirklich wirft und bitte mit der kompletten Original-Fehlermeldung.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@snafu: das hat schon seine Richtigkeit. Das im Traceback auftauchende __init__ ist das von `pygame/sprite.py`, und der Fehler tritt auf, weil mein_ball andere Parameter bekommt als Sprite.
FroxGame
User
Beiträge: 12
Registriert: Samstag 1. September 2018, 11:35

Danke für die Hilfe, habe die zwei Unterstriche im Buch nicht gesehen.
Antworten