EventHandling Joystick

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
BOYI
User
Beiträge: 3
Registriert: Sonntag 23. Februar 2020, 22:30

import pygame
from pygame.locals import *

class EventHandler(object):

def __init__(self, main):
self.main = main
self.userEvents = {}
self.userEventsNum = 0
# SONG_END = pygame.USEREVENT + 1
self.KEYDOWN_event = {}
self.KEYUP_event = {}
self.KEYPRESSED_event = {}
self.MOUSEBUTTONDOWN_event = {}
self.MOUSEBUTTONUP_event = {}
self.JOYBUTTONDOWN_event = {}
self.KEYDOWN_listener = []
self.JOYBUTTONDOWN_listener = []

def tick(self):
pygame.joystick.init()
for event in pygame.event.get():

if event.type == QUIT:
self.main.quit()




for i in self.userEvents:
if event.type == i:
self.userEvents(event)

self.checkForEvent(event, KEYDOWN, self.KEYDOWN_event, True)
self.checkForEvent(event, KEYUP, self.KEYUP_event, True)
self.checkForEvent(event, MOUSEBUTTONDOWN,
self.MOUSEBUTTONDOWN_event, False)
self.checkForEvent(event, MOUSEBUTTONUP,
self.MOUSEBUTTONUP_event, False)
##






if event.type == KEYDOWN:
for i in self.KEYDOWN_listener:
i(event.key)


if self.main.loop:
keys_presed = pygame.key.get_pressed()
joy_presed = pygame.button.get_numbuttons()

for i in self.KEYPRESSED_event:
if keys_presed:
for func in self.KEYPRESSED_event:
func()
for f in self.pygame.button.get_numbuttons():
if joy_presed[f]:
for func in self.pygame.button.get_numbuttons[f]:
func()



def checkForEvent(self, event, checkEvent, functions, key):
if event.type == checkEvent:
try:
if key:
functionsFIN = functions[event.key]
else:
functionsFIN = functions[event.button]
for i in functionsFIN:
i()
except:
pass
def registerUserEvent(self, function):
self.userEventsNum += 1
event = pygame.USEREVENT + self.userEventsNum
self.userEvents[event] = function
return event

def unregisterUserEvent(self, event):
del(self.userEvents[event])

def unregisterUserEventsAll(self):
self.userEvents = {}


def registerKEYDOWNevent(self, key, function):
try:
temp = self.KEYDOWN_event[key]
temp.append(function)
self.KEYDOWN_event[key] = temp
except:
self.KEYDOWN_event[key] = [function]

def unregisterKEYDOWNeventAll(self, key):
del(self.KEYDOWN_event[key])

def unregisterKEYDOWNevent(self, key, function):
try:
self.KEYDOWN_event[key].remove(function)
except:
pass

def unregisterKEYDOWNeventAllKeys(self):
self.KEYDOWN_event = {}


## def registerJOYBUTTONDOWNevent(self, joybutton, function):
## try:
## temp = self.JOYBUTTONDOWN_event[key]
## temp.append(function)
## self.JOYBUTTONDOWN[joybutton] = temp
## except:
## self.JOYBUTTONDOWN_event[joybutton] = [function]
##
## def unregisterJOYBUTTONDOWNeventAll(self, joybutton):
## del( self.JOYBUTTONDOWN_event[joybutton])
##
## def unregisterJOYBUTTONDOWNevent(self, joybutton, function):
## try:
## self. self.JOYBUTTONDOWN_event[joybutton].remove(function)
## except:
## pass
## def unregisterJOYBUTTONDOWNeventAllKeys(self):
## self.JOYBUTTONDOWN_event = {}






def registerKEYUPevent(self, key, function):
try:
temp = self.KEYUP_event[key]
temp.append(function)
self.KEYUP_event[key] = temp
except:
self.KEYUP_event[key] = [function]

def unregisterKEYUPeventAll(self, key):
del(self.KEYUP_event[key])

def unregisterKEYUPevent(self, key, function):
try:
self.KEYUP_event[key].remove(function)
except:
pass

def unregisterKEYUPeventAllKeys(self):
self.KEYUP_event = {}

def registerKEYPRESSEDevent(self, key, function):
try:
temp = self.KEYPRESSED_event[key]
temp.append(function)
self.KEYPRESSED_event[key] = temp
except:
self.KEYPRESSED_event[key] = [function]

def unregisterKEYPRESSEDeventAll(self, key):
del(self.KEYPRESSED_event[key])

def unregisterKEYPRESSEDevent(self, key, function):
try:
self.KEYPRESSED_event[key].remove(function)
except:
pass

def unregisterKEYPRESSEDeventAllKeys(self):
self.KEYPRESSED_event = {}

def registerMOUSEBUTTONDOWNevent(self, button, function):
try:
temp = self.MOUSEBUTTONDOWN_event[button]
temp.append(function)
self.MOUSEBUTTONDOWN_event[button] = temp

except KeyError:
self.MOUSEBUTTONDOWN_event[button] = [function]

def unregisterMOUSEBUTTONDOWNeventAll(self, button):
del(self.MOUSEBUTTONDOWN_event[button])


def unregisterMOUSEBUTTONDOWNevent(self, button, function):
try:
self.MOUSEBUTTONDOWN_event[button].remove(function)
except:
pass

def unregisterJOYBUTTONDOWNeventAllKEys(self):
self.JOYBUTTONDOWN_event = {}

def registerJOYBUTTONDOWNevent(self, button, function):
try:
temp = self.JOYBUTTONDOWN_event[button]
temp.append(function)
self.JOYBUTTONDOWN_event[button] = temp

except KeyError:
self.JOYBUTTONDOWN_event[button] = [button]

def unregisterJOYBUTTONDOWNeventAll(self, button):
del(self.JOYBUTTONDOWN_event[button])


def unregisterJOYBUTTONDOWNDOWNevent(self, button, function):
try:
self.JOYBUTTONDOWNDOWN_event[button].remove(function)
except:
pass

def unregisteJOYBUTTONDOWNDOWNeventAllKEys(self):
self.JOYBUTTONDOWN_event = {}



def registerMOUSEBUTTONUPevent(self, button, function):
try:
temp = self.MOUSEBUTTONUP_event[button]
temp.append(function)
self.MOUSEBUTTONUP_event[button] = temp
except KeyError:
self.MOUSEBUTTONUP_event[button] = [function]

def unregisterMOUSEBUTTONUPeventAll(self, button):
del(self.MOUSEBUTTONUP_event[button])

def unregisterMOUSEBUTTONUPevent(self, button, function):
try:
self.MOUSEBUTTONUP_event[button].remove(function)
except:
pass

def unregisterMOUSEBUTTONUPeventAllKEys(self):
self.MOUSEBUTTONUP_event = {}


def registerKEYDOWNlistener(self, function):
self.KEYDOWN_listener.append(function)

def unregisterKEYDOWNlistener(self, function):
del self.KEYDOWN_listener[self.KEYDOWN_listener.index(function)]

def unregisterAllKEYDOWNlisteners(self):
self.KEYDOWN_listener = []




## Hey liebes Forum, ich wollte zu diesem EventHandler ein Joystickevent hinzufügen, doch habe ich dieses noch nie gemacht.
## Meine Frage lautet wie implementier ich den joystick so das ich auf die einzelnen Button zugriff habe ?
Antworten