!Joystick bei Game ohne PyGame

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Hallo, ich bins wieder mit meinen nervenden Fragen... :lol: :roll:

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.
Zuletzt geändert von INFACT am Montag 29. Dezember 2008, 15:23, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
abgdf

... unter Linux könntest Du zur Not auch - unpythonisch - mit

http://freshmeat.net/projects/joy2key/

arbeiten ...
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Cool es funktioniert!
Vielen dank!
Das ist Super!

Ps: Ich hab leider win deswegen geht pythonisch bei mir nicht!
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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... :oops: :lol:
Viele Grüße
Robin

EDIT by Gerold: Code ausgelagert
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

INFACT hat geschrieben:Wie bekomme ich jetzt heraus um wieviel grad der joystick nach vorn gebäugt ist?
Hallo Robin!

So:

Code: Alles auswählen

import wx
stick = wx.Joystick()
stick.GetPosition()
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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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 :cry: :cry: :cry: :roll:
Entschuldigung, vielleicht ist das ja ganz einfach...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Mano... :roll: :(
Ich habs doch gewusst, dass es ein einfaches problem war! :oops:
Aber jetzt Funktioniert es!.
Vielen Dank für die lange hilfe!!
Schöne Restferien noch
und guten Rutsch

Robin
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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?
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

(bitte Ingorieren)
Zuletzt geändert von INFACT am Dienstag 30. Dezember 2008, 21:14, insgesamt 1-mal geändert.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

(bitte Ingorieren)
Zuletzt geändert von INFACT am Dienstag 30. Dezember 2008, 21:14, insgesamt 1-mal geändert.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
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:
  1. Keiner kennt eine Lösung
  2. 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 ...
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/

:lol:

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.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Werde mich dran halten :oops: :roll:
:)
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Komisch

Diemal habe ich genau das gleich gemacht und es hat funktioniert.

Naja danke für den tipp!
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
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ß
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Das habe ich schon verstanden ich verstehe bloß die Gründe nicht
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
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ß
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

und wie kann man denn Button drücke abfragen?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Antworten