Joystickの入力を取得する
Joystickの入力を取得するサンプルです。PygameのJoystickモジュールを使って作っています。Joystickはもちろん各種ゲームパッド(ゲームコントローラ)の入力データを取得出来ます。
最近ではMac対応を明記したものはゲームパッドはほとんど売られてないません。しかし、明記してなくても動作するものも多いです。
取り敢えず、自分のMac OS 10.6.4(Snow Leopard)、MacBookの環境で以下のゲームパッドで、入力データを取得する事が出来ました。

iBUFFALO USB 8ボタンゲームパッド デジタル 連射/マイク機能付 ファミコン風 レッド BGCFC802RDA
- 出版社/メーカー: バッファロー
- 発売日: 2007/08/01
- メディア: Personal Computers
- クリック: 7回
- この商品を含むブログ (4件) を見る
プログラムはこちら
#! /usr/bin/env python
# coding: utf-8
# coding=utf-8
# -*- coding: utf-8 -*-
# vim: fileencoding=utf-8
import pygame
from pygame.locals import *
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
pygame.joystick.init()
try:
j = pygame.joystick.Joystick(0) # create a joystick instance
j.init() # init instance
print 'Joystickの名称: ' + j.get_name()
print 'ボタン数 : ' + str(j.get_numbuttons())
except pygame.error:
print 'Joystickが見つかりませんでした。'
def main():
pygame.init()
screen = pygame.display.set_mode( (SCREEN_WIDTH, SCREEN_HEIGHT) ) # 画面を作る
pygame.display.set_caption('Joystick') # タイトル
pygame.display.flip() # 画面を反映
while 1:
for e in pygame.event.get(): # イベントチェック
if e.type == QUIT: # 終了が押された?
return
if (e.type == KEYDOWN and
e.key == K_ESCAPE): # ESCが押された?
return
# Joystick関連のイベントチェック
if e.type == pygame.locals.JOYAXISMOTION: # 7
x , y = j.get_axis(0), j.get_axis(1)
print 'x and y : ' + str(x) +' , '+ str(y)
elif e.type == pygame.locals.JOYBALLMOTION: # 8
print 'ball motion'
elif e.type == pygame.locals.JOYHATMOTION: # 9
print 'hat motion'
elif e.type == pygame.locals.JOYBUTTONDOWN: # 10
print str(e.button)+'番目のボタンが押された'
elif e.type == pygame.locals.JOYBUTTONUP: # 11
print str(e.button)+'番目のボタンが離された'
if __name__ == '__main__': main()
# end of file
参考サイト
joystick - Pygame Documentation
http://www.pygame.org/docs/ref/joystick.html#Joystick.get_numbuttons
Re: [pygame] joystick example
http://archives.seul.org/pygame/users/Sep-2005/msg00132.html
nakamura001 @ ウィキ - トップページ/Mac/ゲームパッド(Joystick)
http://www32.atwiki.jp/nakamura001/pages/111.html