Problem mit coords

Fragen zu Tkinter.
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Dienstag 15. April 2008, 23:22

<RIGHT> klappt bei mir wunderbar, aber <LEFT> funktioniert garnicht, egal ob kurz drücken oder gedrückt halten.

Woran kann denn sowas liegen wenns beim einen klappt und beim anderen nicht? am betriebsystem? an der python version?

edit:

gerade wo gelesen das IDLE und Tkinter sich nicht so mögen, ich werds mal anders probieren das programm zu starten (erstmal rausfinden wie :>)
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 15. April 2008, 23:35

Bei mir geht es sowohl über IDLE als auch die python.exe. Probier doch mal das folgende:

Code: Alles auswählen

def vorwaerts(event):
    Mario.go_forward(environment_list)
   
def rueckwaerts(event):
    Mario.go_forward(environment_list)


Dann kann man schon mal feststellen, ob es an deinem Code liegt.
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Dienstag 15. April 2008, 23:40

wie erwartet geht er jetzt sowohl bei <RIGHT> als auch bei <LEFT> vorwärts, und da funktioniert ja auch das anhalten

und was sagt uns das jetzt?^^
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 15. April 2008, 23:42

Das es auf jeden Fall dein Fehler ist und es keine Probleme mit irgend welchen Events von der Tastatur gibt :D
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Dienstag 15. April 2008, 23:46

ich habe eben deinen code kopiert und bei mir getestet also müsste es doch theoretissch bei mir auch funktionieren, das tut es aber nicht :>
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Mittwoch 16. April 2008, 00:00

Deshalb wollte ihr ja ausschließen, dass die verschiedenen Systeme der Fehler sind. Mit "müsste" und "theoretisch" hast du aber schon mal zwei für Informatiker sehr wichtige Begriffe gefunden :P
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Mittwoch 16. April 2008, 00:07

:lol:

Naja, dann werd ich noch ne Nacht drüber schlafen und wenn ichs dann noch nicht rausbekomme mach ich hald an ner anderen stelle weiter, vlt ne jump() und ne fall() methode und wenn ich den code mal testen will schick ich ihn einfach an dich :>
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Mittwoch 16. April 2008, 00:09

Schlafen ist eine tolle Idee. Wär ich doch nur nicht heute um 14 Uhr aufgestanden... :roll:
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Mittwoch 16. April 2008, 00:10

bin ich auch :roll:

muss leider morgen früh raus :>
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Mittwoch 16. April 2008, 05:51

Das Problem ist mit Sicherheit der Koordinatenvergleich mittels '=='.
Da die Canvas-Koordinaten intern als Fließkommawerte verarbeitet werden, solltest du es z.B. so machen:

statt

Code: Alles auswählen

if wert1 == wert2: do_something()


so

Code: Alles auswählen

if abs(wert1-wert2)<0.001: do_something()


Und dann MUSS es einfach gehen ...
BlackJack

Beitragvon BlackJack » Mittwoch 16. April 2008, 07:22

Vielleicht sollte man an dieser Stelle auch mal überlegen die GUI von der Spiellogik zu trennen und nicht Canvaskoordinaten verwenden. Wenn da wirklich Ungenauigkeiten beim `move()` auf dem `Canvas` entstehen, kann es ja auch sein, dass die sich im Laufe des Spiels immer weiter akkumulieren und auch irgendwann ein Vergleich mit einem Epsilonwert nicht mehr richtig funktioniert.
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Mittwoch 16. April 2008, 09:41

du meinst also zb beim bewegen das move() nicht zu benutzen und die objekte einfach auf die neuen berechneten werte neu zeichnen?

ich probiers mal :>
Kalkas
User
Beiträge: 14
Registriert: Montag 14. April 2008, 16:01

Beitragvon Kalkas » Freitag 25. April 2008, 12:04

so, es funktioniert jetzt

durch das trennen der GUI von der Spiellogik hat sich das problem dann automatisch von selbst gelöst =)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder