Navigation
indexmenu_n_9999
msort nsort navbar
indexmenu_n_9999
msort nsort navbar
Un clavier est le périphérique d'entrée principal de tout ordinateur. Pour les développeurs de jeux, il est important de noter que seuls les claviers de haute qualité peuvent gérer correctement deux touches pressées simultanément.
Consultez Rollover pour plus d'informations. Les problèmes de touches mal interprétées ou ignorées sont généralement des problèmes de matériels.
User yipyip a écrit un chouette programme pygame pour tester votre clavier. Astuce: appuyez sur <key>w</key>, <key>s</key>, et <key>d</key> en même temps.
#!/usr/bin/env python #### import pygame as pyg #### class Display(object): def __init__(self, width, height, fsize): pyg.init() self.screen = pyg.display.set_mode((width, height), pyg.DOUBLEBUF) self.font = pyg.font.Font(None, fsize) self.clock = pyg.time.Clock() self.fsize = fsize self.events = [] self.pygkeys = [k for k in pyg.__dict__.keys() if k.startswith('K_')] def dispatch_events(self): #print pyg.key.get_pressed() self.act_keys = ''.join(('*' if c else '.' for c in pyg.key.get_pressed())) events = pyg.event.get() for ev in events: print ev if ev.type == pyg.QUIT: return 'q' if ev.type == pyg.KEYUP: self.events = [] if ev.type == pyg.KEYDOWN: print ev.scancode self.events.append(ev.key) if ev.key == pyg.K_ESCAPE: return 'q' def draw_text(self, x, y, text): surface = self.font.render(text, True, (0, 255, 0)) self.screen.blit(surface, (x, y)) def draw_all(self): self.draw_text(0, 0, self.act_keys) ks = [] for ev in self.events: for k in self.pygkeys: if pyg.__dict__[k] == ev: ks.append(k) break #print ks self.draw_text(0, self.fsize, (' ' * 5).join('%s' % k for k in ks)) def flip(self): self.clock.tick(70) pyg.display.flip() self.screen.fill((0,0,0)) #### class Controller(object): def __init__(self, width, height, fsize): self.display = Display(width, height, fsize) def run(self): while not self.display.dispatch_events() == 'q': self.display.draw_all() self.display.flip() #### if __name__ == '__main__': Controller(1000, 40, 18).run()