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.
!Joystick bei Game ohne PyGame
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo INFACT!INFACT hat geschrieben:wie ich das heraus findet dass der stick nach vorn gedrückt wird
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
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
... unter Linux könntest Du zur Not auch - unpythonisch - mit
http://freshmeat.net/projects/joy2key/
arbeiten ...
http://freshmeat.net/projects/joy2key/
arbeiten ...
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
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
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Robin!INFACT hat geschrieben:Wie bekomme ich jetzt heraus um wieviel grad der joystick nach vorn gebäugt ist?
So:
Code: Alles auswählen
import wx
stick = wx.Joystick()
stick.GetPosition()
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)
>>>
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Bei mir taucht da immer folgender Fehler auf: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) >>>
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!
Entschuldigung, vielleicht ist das ja ganz einfach...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Robin!INFACT hat geschrieben:PyNoAppError: The wx.App object must be created first!
Dann probiere es so:
Code: Alles auswählen
import wx
app = wx.PySimpleApp()
stick = wx.Joystick()
print stick.GetPosition()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ich habe jetzt folgendes Script gebastelt:
(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:
obwohl ich doch im code stehen habe: "app = wx.PySimpleApp()"
woran liegt das denn jetzt?
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")
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!
woran liegt das denn jetzt?
Wir sind da. Wenn du keine Antwort erhältst, dann kann das zwei Gründe haben:INFACT hat geschrieben:Antwortet mir keiner, weil ihr es nicht wisst oder seid ihr nicht da.
- Keiner kennt eine Lösung
- Durch das unnötige Pushen hast du mögliche Helfer vergrault ...
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 ...
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:
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.
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()
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.
Zuletzt geändert von abgdf am Dienstag 30. Dezember 2008, 21:18, insgesamt 1-mal geändert.
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.Komisch
Diemal habe ich genau das gleich gemacht und es hat funktioniert.
Gruß
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:
Gruß
So ähnlich dürfte das hier auch sein (wx ist ja eigentlich ein GUI-Toolkit).Heh, ich muß erst meine Anwendung initialisieren ...
Gruß