Seite 1 von 2
!Joystick bei Game ohne PyGame
Verfasst: Sonntag 28. Dezember 2008, 18:45
von INFACT
Hallo, ich bins wieder mit meinen nervenden Fragen...
Ich will mit SendKeys und dem Joystick ein Programm schreiben, dass solange "{up}" drückt, wie der stick nach vorn geht.
SendKeys habe ich schon so präpariert, dass man die Tasten gedrückt halten kann, jetzt fehlt mir nur noch wie ich das heraus findet dass der stick nach vorn gedrückt wird.
Könntet ihr mir da helfen??? (Es sollte möglichst ohne pygame sein aber wenn es nicht anders geht werde ich es wohl so machen müssen.
könntet ihr mir da vielleicht auch helfen ich hab mich noch nicht so damit beschäftigt. Vielen Dank schonmal im Vorraus.
Re: Joystick bei Game ohne PyGame
Verfasst: Sonntag 28. Dezember 2008, 23:27
von gerold
INFACT hat geschrieben:wie ich das heraus findet dass der stick nach vorn gedrückt wird
Hallo INFACT!
Installiere dir mal wxPython
http://wxpython.org/ und die zugehörige wxPython-Demo. Suche in der Demo nach "joystick". Dort findest du einen Joystick-Test und den zugehörigen Quellcode, mit dem du den Joystick auslesen kannst.
mfg
Gerold

Verfasst: Montag 29. Dezember 2008, 00:02
von abgdf
... unter Linux könntest Du zur Not auch - unpythonisch - mit
http://freshmeat.net/projects/joy2key/
arbeiten ...
Verfasst: Montag 29. Dezember 2008, 11:40
von INFACT
Cool es funktioniert!
Vielen dank!
Das ist Super!
Ps: Ich hab leider win deswegen geht pythonisch bei mir nicht!
Verfasst: Montag 29. Dezember 2008, 12:16
von INFACT
Ok ähm,
könnt ihr mir vielleicht doch noch mal helfen?
Ich werde hier nicht schlau draus:
Code ausgelagert:
http://paste.pocoo.org/show/97158/
Wie bekomme ich jetzt heraus um wieviel grad der joystick nach vorn gebäugt ist?
Ich kann diese Demo jetzt importieren aber ich weiß nicht weiter.
Vieleicht liegt es daran, dass ich mich noch nicht so mit wxPython beschäfitgt habe, aber könntet ihr mir vieleicht noch einmal helfen
Ich werde da nicht so schlau draus.
Danke schonmal...
Viele Grüße
Robin
EDIT by Gerold: Code ausgelagert
Verfasst: Montag 29. Dezember 2008, 13:00
von gerold
INFACT hat geschrieben:Wie bekomme ich jetzt heraus um wieviel grad der joystick nach vorn gebäugt ist?
Hallo Robin!
So:
Du bekommst eine Zahl zwischen 0 und 65535 zurück, die dir die Position der Achse anzeigt.
Code: Alles auswählen
>>> import wx
>>> stick = wx.Joystick()
>>> stick.GetButtonState()
0
>>> stick.GetPosition()
wx.Point(32767, 32767)
>>> stick.GetPosition()
wx.Point(34848, 11007)
>>> stick.GetPosition()
wx.Point(32767, 65535)
>>>
Siehe:
http://docs.wxwidgets.org/stable/wx_wxjoystick.html
mfg
Gerold

Verfasst: Montag 29. Dezember 2008, 13:31
von INFACT
gerold hat geschrieben:
Code: Alles auswählen
>>> import wx
>>> stick = wx.Joystick()
>>> stick.GetButtonState()
0
>>> stick.GetPosition()
wx.Point(32767, 32767)
>>> stick.GetPosition()
wx.Point(34848, 11007)
>>> stick.GetPosition()
wx.Point(32767, 65535)
>>>
Bei mir taucht da immer folgender Fehler auf:
Code: Alles auswählen
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
stick=wx.Joystick()
File "C:\Dokumente und Einstellungen\Robin\Desktop\PIthon\lib\site-packages\wx-2.8-msw-unicode\wx\_misc.py", line 2025, in __init__
_misc_.Joystick_swiginit(self,_misc_.new_Joystick(*args, **kwargs))
PyNoAppError: The wx.App object must be created first!
Ich versteh es einfach nicht
Entschuldigung, vielleicht ist das ja ganz einfach...
Verfasst: Montag 29. Dezember 2008, 13:39
von gerold
INFACT hat geschrieben:PyNoAppError: The wx.App object must be created first!
Hallo Robin!
Dann probiere es so:
Code: Alles auswählen
import wx
app = wx.PySimpleApp()
stick = wx.Joystick()
print stick.GetPosition()
mfg
Gerold

Verfasst: Montag 29. Dezember 2008, 13:49
von INFACT
Mano...
Ich habs doch gewusst, dass es ein einfaches problem war!
Aber jetzt Funktioniert es!.
Vielen Dank für die lange hilfe!!
Schöne Restferien noch
und guten Rutsch
Robin
OMG es funktioniert immernoch nicht
Verfasst: Montag 29. Dezember 2008, 14:33
von INFACT
ich habe jetzt folgendes Script gebastelt:
Code: Alles auswählen
import wx
from mySendKeys import *
app = wx.PySimpleApp()
stick = wx.Joystick()
pos=stick.GetPosition()
while 1:
if pos[1]>=14335:
SendKeys("w")
if pos[0]>=32767:
SendKeys("d")
if pos[0]<=2303:
SendKeys("a")
if pos[1]<=55392:
SendKeys("s")
(mySendKeys kommt daher, dass ich SendKeys noch "verbessert" habe und man jetzt die Tasten gedrückt halten kann)
Wenn ich es ausführe, wird immernoch folgende Fehlermeldung geworfen:
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/Robin/Desktop/Arbeit/metin2joy.py", line 4, in <module>
stick = wx.Joystick()
File "C:\Dokumente und Einstellungen\Robin\Desktop\PIthon\lib\site-packages\wx-2.8-msw-unicode\wx\_misc.py", line 2025, in __init__
_misc_.Joystick_swiginit(self,_misc_.new_Joystick(*args, **kwargs))
PyNoAppError: The wx.App object must be created first!
obwohl ich doch im code stehen habe: "app = wx.PySimpleApp()"
woran liegt das denn jetzt?
Verfasst: Dienstag 30. Dezember 2008, 16:15
von INFACT
(bitte Ingorieren)
Verfasst: Dienstag 30. Dezember 2008, 20:41
von INFACT
(bitte Ingorieren)
Verfasst: Dienstag 30. Dezember 2008, 21:11
von lunar
INFACT hat geschrieben:Antwortet mir keiner, weil ihr es nicht wisst oder seid ihr nicht da.
Wir sind da. Wenn du keine Antwort erhältst, dann kann das zwei Gründe haben:
- Keiner kennt eine Lösung
- Durch das unnötige Pushen hast du mögliche Helfer vergrault ...
Es ist unüblich, auf einen Thread mit "Ich habe keine Ahnung" zu antworten. Das bringt keine Information, und müllt den Thread nur zu. Wenn zehn Leute "Keine Ahnung" schreiben, dann ist dir nicht geholfen, und der Thread ist nur unübersichtlich geworden.
Ebenso ist es unüblich, bereits einen Tag nach dem Posting zu pushen, und dann auch noch zweimal innerhalb von vier Stunden. Das hier ist kein Echtzeit-Chat, sondern ein Forum, da dauert es eben ein bisschen, besonders zwischen Weihnachten und Neujahr ...
Wenn du meinst, du würdest ignoriert: Dem ist nicht so. Wenn du meinst, man hätte dich vergessen: Warte eine Woche oder so bis zum pushen ...
Verfasst: Dienstag 30. Dezember 2008, 21:12
von abgdf
Hi,
ich hatte zuerst auch unerwartete / mangelhafte Ergebnisse in einem Skript; im interaktiven Modus nicht.
Ich glaube, man muß Python etwas Zeit geben, um wx zu initialisieren:
Code: Alles auswählen
#!/usr/bin/env python
import wx
import time
app = wx.PySimpleApp()
stick = wx.Joystick()
time.sleep(4)
print stick.GetPosition()
geht bei mir. Kannst ja noch etwas mit den Werten für "time.sleep()" experimentieren.
Gruß
P.S.: Im allgemeinen steh' ich auch nicht darauf, "gepusht" zu werden, es sei denn im Rahmen meiner anderen Leidenschaft "Tai Chi Chuan":
http://www.push-hands.net/
http://www.push-hands.de/
aber hier kann ich ausnahmsweise nachvollziehen, daß Du ungeduldig bist, weil Du wissen willst, was da vor sich ging.
Verfasst: Dienstag 30. Dezember 2008, 21:13
von INFACT
Verfasst: Dienstag 30. Dezember 2008, 21:34
von INFACT
Komisch
Diemal habe ich genau das gleich gemacht und es hat funktioniert.
Naja danke für den tipp!
Verfasst: Dienstag 30. Dezember 2008, 21:44
von abgdf
Komisch
Diemal habe ich genau das gleich gemacht und es hat funktioniert.
Menno, das sollte Dich doch jetzt nicht wundern: Ich sagte doch, das Skript stimmt im Prinzip, nur Python muß genug Zeit für die Initialisierung haben. Wahrscheinlich hatte es die jetzt, aus anderen, systeminternen Gründen.
Gruß
Verfasst: Dienstag 30. Dezember 2008, 21:51
von INFACT
Das habe ich schon verstanden ich verstehe bloß die Gründe nicht
Verfasst: Dienstag 30. Dezember 2008, 22:19
von abgdf
Na, stell' Dir vor, Du hättest eine Fensteranwendung mit Knöpfen. Noch bevor das Fenster gezeichnet ist, versuchst Du, den Text eines Knopfes zu ändern oder einen Klick zu simulieren. Dann würde das Skript abbrechen mit einer Meldung:
Heh, ich muß erst meine Anwendung initialisieren ...
So ähnlich dürfte das hier auch sein (wx ist ja eigentlich ein GUI-Toolkit).
Gruß
Buttons drücken
Verfasst: Mittwoch 31. Dezember 2008, 20:31
von INFACT
und wie kann man denn Button drücke abfragen?