python -m pip install -U pygame –user
먼저 게임패드를 파이썬에서 어떻게 읽어 들릴까? 자바스크립트에서 끙끙대며 겨우 알아 냈었는데 파이썬도 마찬가지로 겨우 알아 냈다. 필요한 버튼만 찾아 내자. 나머지 버튼은 동일한 방식으로 활용하면 된다. 먼저 간단히 게임패드로 화면의 박스를 움직이는 예제를 만들어 보자. 좌, 우 스틱을 이용해서 박스를 움직이도록 했다. 전면의 L1과 R1에는 슈팅기능이나 기타 기능을 연결해 주면 될듯 하다. 예제에서는 색상이 변하도록 했다. 양손으로 오브젝트를 따로 따로 움직이는게 쉬운게 아니구나..ㅋ
유아틱한 색상 좋아. 파이썬 코드를 살펴 보자.
------------- game.py----------
import pygame
pygame.init()
playerColor1 = (0, 180, 255)
playerColor2 = (180, 0, 180)
bgColor = (255, 200, 0) #background color
gameDisplay = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Control')
pygame.display.update()
gameExit = False
lead_x = 200
lead_y = 300
lead2_x = 400
lead2_y = 300
gamepads = []
clock = pygame.time.Clock()
width, height = pygame.display.get_surface().get_size()
font = pygame.font.SysFont("comicsansms", 42)
basicfont = pygame.font.SysFont(None, 22)
text = font.render("Hello Pygame", True, (0, 128, 0))
stick1 = font.render("L", True, (0, 0, 0))
stick2 = font.render("R", True, (0, 0, 0))
basicText = basicfont.render('<info>', True, (0, 0, 0))
for i in range(0, pygame.joystick.get_count()):
gamepads.append(pygame.joystick.Joystick(i))#연결된 모든 디바이스 배열에 추가
gamepads[-1].init()
gamepadInfo = basicfont.render("Detected joystics: " + gamepads[-1].get_name(), True, (0,0,0))
gamepadInfo2 = basicfont.render("Button: " + str(gamepads[-1].get_numbuttons()), True, (0,0,0))
gamepadInfo3 = basicfont.render("Stick: " + str(gamepads[-1].get_numaxes()), True, (0,0,0))
while not gameExit:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
# 버튼을 누르면
if event.type == pygame.JOYBUTTONDOWN :
if event.button == 4:
playerColor1 = (255, 0, 0)
if event.button == 5:
playerColor2 = (255, 0, 0)
else:
playerColor1 = (0, 180, 255)
playerColor2 = (180, 0, 180)
# 스틱을 움직이면
if event.type == pygame.JOYAXISMOTION:
lead_x += gamepads[-1].get_axis(0) *4
lead_y += gamepads[-1].get_axis(1) *4
lead2_x += gamepads[-1].get_axis(4) *4 #뭐지 이 얼척없는 번호의 순서는?
lead2_y += gamepads[-1].get_axis(3) *4
#
# 외곽을 벗어 나면
if(lead_x > width):
lead_x = 0
elif(lead_x < 0):
lead_x = width
elif(lead_y > height):
lead_y = 0
elif(lead_y < 0):
lead_y = height
if(lead2_x > width):
lead2_x = 0
elif(lead2_x < 0):
lead2_x = width
elif(lead2_y > height):
lead2_y = 0
elif(lead2_y < 0):
lead2_y = height
# 화면에 그리기
gameDisplay.fill(bgColor)
pygame.draw.rect(gameDisplay, playerColor1, [lead_x, lead_y, 40, 40])
pygame.draw.rect(gameDisplay, playerColor2, [lead2_x, lead2_y, 40, 40])
gameDisplay.blit(stick1, (lead_x+10, lead_y-20))
gameDisplay.blit(stick2, (lead2_x+10, lead2_y-20))
gameDisplay.blit(text, (320 - text.get_width() // 2, 80 - text.get_height() // 2))
gameDisplay.blit(basicText, (10, 20))
gameDisplay.blit(gamepadInfo, (10, 40))
gameDisplay.blit(gamepadInfo2, (10, 60))
gameDisplay.blit(gamepadInfo3, (10, 80))
pygame.display.update()
pygame.quit()
quit()
-------------
파이썬3으로 실행하면 된다. 이젠 기본이 파이썬3이다. 파이썬2? 그런게 있는지 난 모른다. 신경 안쓴다. ^^;
파이썬에서 게임패드 사용에 대한 자세한 내용은 아래 링크를 참조 하자.
https://www.pygame.org/docs/ref/joystick.html