Seite 2 von 2

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 22:01
von Dauerbaustelle
Kann ich so nicht beantworten, "Test" ist ja jetzt auch kein besonders ausssagekräftiger Name, von daher weiß ich gar nicht, was das überhaupt macht. Da der einzige Zweck der Klasse so weit ich das sehe jedoch nur ist, zwei anderen Daten zu speichern, könnte man vielleicht einfach ganz drauf verzichten...

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 22:26
von kaytec
Habe es halt so wie Space-Invaders augebaut, da ja nicht so ganz klar war wie die Kollisionsabfrage abläuft. Der Name ist nicht gut - sollte auch nur für das Beispiel verwendet werden. Ich wollte eigentlich nur wissen, ob ich eine Klasse, die in den Anfagszustand versetzt werden soll, immer wieder aufrufe oder dies auch nicht gemacht werden sollte ?

Gruß und Dank Frank

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 22:39
von Hyperion
Dauerbaustelle hat geschrieben:Niemals __magische_methoden__ manuell aufrufen. (``self.test.__init__``)
Stimmt so nicht! Manchmal muss man das sogar tun.

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 23:02
von BlackJack
@kaytec: Neue Objekte erstellen ist in Ordnung, nur "resetten" sollte man sie nicht mit der `__init__()`.

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 23:05
von Dauerbaustelle
Hyperion hat geschrieben:
Dauerbaustelle hat geschrieben:Niemals __magische_methoden__ manuell aufrufen. (``self.test.__init__``)
Stimmt so nicht! Manchmal muss man das sogar tun.
Muss ich dir natürlich Recht geben. Solange einem allerdings nicht klar ist, was diese Spezialfälle sind, macht es imo mehr Sinn, es als Komplettverbot hinzunehmen. Und wenn sie/er dann irgendwann mal rausfindet, dass man es ja doch in irgend welchen Fällen braucht, wird sofort kognitive Dissonanz mit der Verbotsregel erschaffen, was dazu führt, dass man solche Bösartigkeiten so weit irgend möglich vermeidet. :-)

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 23:06
von Hyperion
Dauerbaustelle hat geschrieben: Muss ich dir natürlich Recht geben. Solange einem allerdings nicht klar ist, was diese Spezialfälle sind, macht es imo mehr Sinn, es als Komplettverbot hinzunehmen. Und wenn sie/er dann irgendwann mal rausfindet, dass man es ja doch in irgend welchen Fällen braucht, wird sofort kognitive Dissonanz mit der Verbotsregel erschaffen, was dazu führt, dass man solche Bösartigkeiten so weit irgend möglich vermeidet. :-)
*g* so kann man es auch sehen ;-)

Re: Space Invader

Verfasst: Donnerstag 27. Januar 2011, 23:30
von kaytec
@ BlackJack Danke !

Re: Space Invader

Verfasst: Freitag 28. Januar 2011, 07:56
von kaytec
Ohne __magische_methoden__ : http://www.python-forum.de/pastebin.php?mode=view&s=138

Gruß Frank

Re: Space Invader

Verfasst: Freitag 28. Januar 2011, 09:48
von sisu
Hi!

Welche Funktion hat das rote Ding, das da am oberen Rand herumschwirrt (konnte es bislang nicht treffen)?
Ansonsten, finde das Spiel ziemlich cool, großes Lob! Wünschte, ich könnte auch sowas machen ^^
kaytec hat geschrieben: irgendwie bin ich ja Masochist - gebe es für die "Codefledder" frei und komme nicht mit den Antworten bzw. Lösungen nach :-)
Ich glaub, du meinst Sadist, oder? ^^

Re: Space Invader

Verfasst: Freitag 28. Januar 2011, 10:18
von EyDu
Du solltest vielleicht noch einmal über "check_collision" nachdenken. Wie lange braucht der Test wohl bei sehr großen Hindernissen... Und warum steht da so viel doppelter Code? Und Warum ist das Ergebnis des if-Statements nicht das Ergebnis der Methode? Und, weshalb übergibst du die x/y-Werte der Positionen einzeln und nicht als Tupel? Fragen über Fragen ;-)

Re: Space Invader

Verfasst: Sonntag 30. Januar 2011, 13:55
von kaytec
@ sisu: Danke

Hier eine Kollisionserkennung 2D mit Bounding Boxes (Rechteck um die Objekte) - ist nicht sehr genau, doch für ein einfaches 2D-Spiel ausreichend. --> http://www.python-forum.de/pastebin.php?mode=view&s=142

Hilfe hatte ich hier gefunden --> http://www.virtual-maxim.de/pixelgenaue ... erkennung/

Gruß Frank

Re: Space Invader

Verfasst: Sonntag 30. Januar 2011, 19:25
von kaytec
Hallo,

hatte nicht bedacht, dass die x u. y Positionen in der Mitte des Bildes sind.

http://www.python-forum.de/pastebin.php?mode=view&s=143

Gruß Frank

Re: Space Invader

Verfasst: Freitag 15. April 2011, 20:02
von kaytec

Re: Space Invader

Verfasst: Freitag 6. Juli 2012, 11:44
von kaytec
Hallo !

Habe weiter gebastelt --> http://www.python-forum.de/pastebin.php?mode=view&s=292

Gruß Frank

Re: Space Invader

Verfasst: Sonntag 22. Juli 2012, 19:12
von darktrym
Was auffällt sind:

Gibst irgendwelche Performanzvorteile, wenn du in check_collision statt target.width lieber target_width nutzt? Wenn du Rechnungen einsparen willst, dann rechne nicht ständig die Hälfte von konstanten Variablen aus.

Code: Alles auswählen

self.game_run == False: 
Muss wirklich sein?

Code: Alles auswählen

self.screen_text = list()
Wieso keine eck. Klammern?

Lager mal die Daten aus und bei den vielen Präfixen könnten Objekte sicher den Lesefluss erhöhen.

Bei mir hängt er gerne mal beim Richtungswechsel.

Wenn du schon einen Start-Screen hast, hättest du wenigstens die Steuerung und Schusstaste erwähnen können. ESC ist sicher den Spieler bekannt, das engl. Wörterbuch kennt den Begriff nicht.

Re: Space Invader

Verfasst: Donnerstag 26. Juli 2012, 17:34
von kaytec
Hallo darktrym !

Ich erhoffe keine Performanzvorteile - bin froh das es läuft :-). Jeder Gegner, Bomben, Racketen sind "Invadersobjekte" und mit dem Punkt komme ich an die Werte.

Hälfte von konstanten Variablen ?

self.game_run --> musste mal sein - habe ich auch schon überlegt wieder rauszunehmen.

self.screen_text = list() --> hat mal Black Jack so gesagt, damit man den Typ erkennt.

Die Steuerung hängt bei mir nicht.

Was sind Präfixe ? Daten auslagern - Meinst Du die Bilder und Konstanten ? So bleibt beim Posten alles zusammen.

Die Feuertaste habe ich in der jetzigen Version eingefügt - ist mir bei dieser gar nicht aufgefallen.

ESC --> European Securities Committee

Gruß Frank und Dank für die Kritik