Hilfe bei Pygame-script

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Newcomer
User
Beiträge: 131
Registriert: Sonntag 15. Mai 2011, 20:41

Hallo allerseits,
ich benötige dringend Hilfe bei einem Script:
Dieses Skript habe ich vor einiger zeit geschrieben, doch habe ich das projekt fallen gelassen (; jetzt wollte ich es nochmal anfangen. Kann man es noch gebrauchen oder soll ich es neu aufsetzen ?
Es ist nicht sehr toll, das muss ich zugeben:
http://www.python-forum.de/pastebin.php?mode=view&s=236
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Da ich gerade am Flughafen sitze und viel Zeit habe:

- ##KI-Spiel## ist ein vollkommen sinnloser Kommentar. Außerdem gibt es Docstrings zur Beschreibung von Modulen und Fuktionen
- *-Importe solltest du vermeiden, die müllen dir den ganzen Namnsraum voll
- "Objekt" ist ein nichtssagender Name. Der Name sollte zusammenfassen, worum es sich bei den Objekten handelt
- Entscheide dich für englische oder deutsche Bezeichner, aber mische nicht beide Sprachen
- Pfade sollten mittels `os.path.join` zusammen gesetzt werden
- Wenn die `__init__`-Methode NUR die `__init__`-Methode der Elternklasse mit den selben Parameter aufruft, dann ist das Überschreiben überflüssig (Zeile 19)
- Schau dir PEP 8 an. Zum Beispiel zu Kommas hinter Parametern bei Funktionen.
- Den State als String zu repräsentieren ist eine schlechte Idee. Benutze dazu wenigstens Konstanten. Was für einen Typ die dann haben ist eigentlich egal.
- `anzahl_menschen + 1 <= self.amu` solltes du als `anzahl_menschen < self.amu` schreiben
- Benutze aussagekräftige Bezeichner. Du wirst ein vier Wochen wahrscheinlich nicht mehr wissen was `amu` ist
- `newMensch` besser `new_mensch` oder am besten: keine sprachmix und einen vernünftigen Namen
- Umlaute sind zwar erlaubt, ich würde sie aber trotzdem nicht in Bezeichnern verwenden
- Einne `KeyboardInterrupt` zu werfen wenn man gewonnen hat ist schon sehr seltsam. Erstelle deinen eigene und passende Exception. Eigentlich sollte eine Exception hier gar nicht notwendig sein.
- `self.leben=99999999999` du kennst `None`?
- `Mensch` sieht irgendwie sehr nach einem `Objekt` aus.
- statt `self.x` und `self.y` solltest du besesr ein Tupel benutzen
- Zu der ganzen Reihe an `if`s: es gibt `elif`. Noch besser bei langen if/elif-Kaskaden: ein Dictionary verwenden.
- Funktionsnamen sollten einen Tätigkeit beschreiben. Statt `kamp` zum beispiel `kaempfen`
- Die ganzen `gehen_`-Methoden sehen fast identisch aus. Da solltest du generalisieren.
- Wenn du `set_`- und `get_`-Methoden hast, dann möchtest du Properties verwenden
- `set_stein` und `set_leben` haben ein sehr unerwartets verhalten. Ich würde erwarten, dass deren Wert gesetzt wird und nicht erhöht oder verringert
- Du verwendest teilweise sehr viele unnötige Leerzeilen. Ein oder zwei sind vollkommen ausreichend
- `if x: return True else: return False' deutet daruf hin, dass du `x` direkt zurückgeben willst. Ein vergelich liefert bereits einen Wahrheswert.
- `Oger` scheint starke Ähnlichkeit mit `Mensch` und `Objekt` zu haben.
- `hurt` liefert `None` oder `False` zurück, das ist ein wenig verwirrend. Warum kein `True`?
- Benutze Konstanten
- Dem Aufruf von `main` kannst du durchaus ein neue Zeile spendieren.

Da sind noch viele weitere Dinge vorhanden, das gröbste was ich auf den ersten Blick gesehen habe, habe ich aber aufgeführt.

Sebastian
Das Leben ist wie ein Tennisball.
Newcomer
User
Beiträge: 131
Registriert: Sonntag 15. Mai 2011, 20:41

mhhhm dankeschön. Viel Spaß da wo du gerade bist (nehme an im Urlaub).
Das Spiel habe ich geschrieben ohne es einmal testen zu können, das war vor einiger zeit (da hat der Interpreter nicht funktioniert). Danke für deine Hilfe, ich schau was sich ausbessern lässt (-:
Aber soll ich es nicht lieber gleich neu aufsetzen ?
Antworten