Snake zum millionsten Mal !

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Freitag 2. Mai 2008, 21:45

BlackJack

Samstag 3. Mai 2008, 09:25

Autovervollständigung ist schon was feines, oder hast Du tatsächlich `move_snale()` beide male "richtig" falsch geschrieben. :-)

Ich weiss jetzt nicht, ob die `keysym_num`-Werte plattformunabhängig sind, aber mir wäre das zu "magisch".

`snake_box` und `start_button` beide mit `grid()` ohne Argumente zu platzieren ist IMHO unschön.

Es werden GUI und Programmlogik vermischt. Insbesondere das speichern von Koordinaten und Rechnen (`move()`) mit ihnen innerhalb von `Tkinter` ist eine schlechte Idee, weil bei den ganzen Umrechnungen als Fliesskommazahlen, die innerhalb von `Tk` damit angestellt werden, Rechenungenauigkeiten auftreten können. Das war erst neulich Thema hier: Problem mit coords

Ausserdem hast Du auf diese Weise eine Menge "magischer" Konstanten im Programm.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Sonntag 4. Mai 2008, 16:04

Danke BlackJack !

Das mit dem Snale und Snake habe ich durchweg falsch gemacht - meine Freundin wollte aber ein schnelles Spiel und hat mich darauf hingewiesen, dass ich mal einen Volkshochschulkurs besuchen sollte.

Die Trennung Gui und Logik war mir schon fast klar.

Die Problematik mit den Floats ist mir schon bei der Zufallsposition fuer das Schlangenfutter aufgefallen. Schreibe es mal um und poste es.

gruss frank
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Montag 5. Mai 2008, 14:15

Hallo !

Mal mit Trennung von Gui und Logik - muesste ich jetzt bei der Uebergabe alles in "int()" umwandeln ?

http://paste.pocoo.org/show/47486/

gruss frank
BlackJack

Montag 5. Mai 2008, 14:45

Die Trennung sehe ich da nicht. Man kann mit der Klasse `Snake` das Spiel nicht spielen. Ausserdem werden da GUI-Koordinaten verwendet und keine Spielkoordinaten.
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Montag 5. Mai 2008, 16:31

Danke BlackJack !

AHA - jetzt stehe ich gerade auf dem Schlauch. Habe eine kleine Vorahnung - nur die Umsetzung ist mir noch nicht so ganz klar. Steuerung / Spielfeld / die Zeichnung der Schlange in die Klasse Snake() und diese veraendert die Klasse Snake_Gui() ?

gruss frank
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 5. Mai 2008, 17:44

Nein. ``Snake_GUI`` steuert ``Snake`` fern. Das heißt vereinfacht, du steuerst ``Snake_GUI`` und ``Snake_GUI`` steuert ``Snake``. Jedoch weiß und sollte ``Snake`` nichts davon wissen müssen, wer es steuert, ob es nun der Spieler selbst ist, oder die GUI.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Dienstag 6. Mai 2008, 22:22

Danke Leonidas !

Das Ganze ist ein(e)? MVC oder besser Control & View zusammen und noch das Modell.

Snake() = Modell
Sanke_Gui() = Control & View

Sehe ich das so richtig ?

gruss frank
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Donnerstag 8. Mai 2008, 23:42

Hallo !

So naechster Versuch !

http://paste.pocoo.org/show/48740/

gruss frank
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Donnerstag 15. Mai 2008, 21:40

Hallo !

Mit Highscore

http://paste.pocoo.org/show/50710/

gruss frank
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Donnerstag 15. Mai 2008, 23:44

Hier auch noch einmal:

Code: Alles auswählen

def move_snake(self, event):
    if event.keysym_num == 65362:
        self.snake.set_move_direction(0, -10)
    elif event.keysym_num == 65364 :
        self.snake.set_move_direction(0, 10)
    elif event.keysym_num == 65363 :
        self.snake.set_move_direction(10, 0)
    elif event.keysym_num == 65361:
        self.snake.set_move_direction(-10, 0)

# Als Tabelle:

def move_snake(self, event):
    try:
        self.snake.set_move_direction(*{
            65362 : (0, -10),
            65364 : (0,  10),
            65363 : (10,  0),
            65361 : (-10, 0),
        }[event.keysym_num])
    except KeyError:
        pass
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Donnerstag 18. September 2008, 03:51

Hallo !

Snake mit Wii als joypad.

http://paste.pocoo.org/show/85578/

gruss frank

edit: Beim Start an dem Wii-Controller die Tasten 1&2 druecken !
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Donnerstag 18. September 2008, 16:07

Hallo !

Noch einige Veraenderungen gemacht und Vibration eingebaut.

http://paste.pocoo.org/show/85604/

gruss frank
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Donnerstag 18. September 2008, 18:10

läuft das nur auf der WII konsole oder auch am pc
ich habs umgeschrieben und alle wii entfernt jetzt gehts auch auf dem pc
ohne wii
Benutzeravatar
kaytec
User
Beiträge: 544
Registriert: Dienstag 13. Februar 2007, 21:57

Donnerstag 18. September 2008, 19:01

Hallo Sea-Live !

Es war schon immer fuer den Pc, doch man kann es mit dem Wii-Controller spielen.

gruss frank
Antworten