top drop menu

Recent Post

월요일, 11월 26

파이썬 : 윈도우에서 pygame을 이용하여 게임 개발하기(1)

윈도우에서 파이썬으로 간단한 게임을 개발해 보기로 하자. 이전에 해 본것 같은데 복습이 될듯 하다. pygame을 사용하기 위해서 먼저 설치를 해줘야 한다.
python -m pip install -U pygame –user
먼저 게임패드를 파이썬에서 어떻게 읽어 들릴까? 자바스크립트에서 끙끙대며 겨우 알아 냈었는데 파이썬도 마찬가지로 겨우 알아 냈다. 필요한 버튼만 찾아 내자. 나머지 버튼은 동일한 방식으로 활용하면 된다. 먼저 간단히 게임패드로 화면의 박스를 움직이는 예제를 만들어 보자.  좌, 우 스틱을 이용해서 박스를 움직이도록 했다. 전면의 L1과 R1에는 슈팅기능이나 기타 기능을 연결해 주면 될듯 하다. 예제에서는 색상이 변하도록 했다.  양손으로 오브젝트를 따로 따로 움직이는게 쉬운게 아니구나..ㅋ
이미지 131
유아틱한 색상 좋아. 파이썬 코드를 살펴 보자.
------------- 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


Blogger Widget