2017-11-18 4 views
1

마우스로 패들 이미지를 수직으로 이동해야합니다. 어떻게해야합니까? 여기 내 코드가있다. 나는 퐁 게임과 같이 마우스를 움직이고 패들과 움직임을 연결하고 싶다.파이 게임에서 마우스로 이미지를 스크롤하는 방법은 무엇입니까?

import pygame 

pygame.init() 

width = 900 
height = 600 
black = (0,0,0) 
white = (255, 255, 255) 
screen = pygame.display.set_mode((width, height)) 
pygame.display.set_caption('Pong') 
clock = pygame.time.Clock() 

paddle1Img = pygame.image.load('paddle.png') 
paddle1Img = pygame.transform.scale(paddle1Img,(600, 300)) 

paddle2Img = pygame.image.load('paddle.png') 
paddle2Img = pygame.transform.scale(paddle2Img,(600, 300)) 
def paddle1(paddle1X, paddle1Y): 
    screen.blit(paddle1Img,(paddle1X, paddle1Y)) 
def paddle2(paddle2X, paddle2Y): 
    screen.blit(paddle2Img, (paddle2X, paddle2Y)) 
def gameloop(): 
    paddle1X = -90 
    paddle1Y = 0 
    paddle2X = width - 125 
    paddle2Y = 0 
    gameOver = False 
    while not gameOver: 
     for event in pygame.event.get(): 
      if(event.type == pygame.QUIT): 
       gameOver = True 
      if(event.type == pygame.MOUSEMOVE): 
       # i want to add here something that i cant understand that is how to associate paddleImg with mouse movement 
     screen.fill(white) 
     paddle1(paddle1X, paddle1Y) 
     paddle2(paddle2X, paddle2Y) 
     pygame.display.update() 
     clock.tick(60) 
gameloop() 
pygame.quit() 
quit() 
+0

이벤트는 'pygame.MOUSEMOTION'을 사용합니다. 모스가 움직이면 실행되고 마우스 위치는'even.pos'이고 상대 이동은 event.rel입니다 – furas

답변

1

마우스를 이동하려면 이벤트 pygame.MOUSEMOTION이 필요합니다.
패들 위치를 설정하는 데 사용할 수있는 마우스 위치 event.pos이 있습니다.
또는 event.rel을 입력하면 이전에 MOUSEMOTION에 비해 얼마나 많은 마우스가 이동했는지 볼 수 있습니다.

전 패들을 생성하기 위해 Surface을 사용하여 모든 사람이 이미지없이 실행할 수 있습니다.

나는 그것뿐만 아니라 xy뿐만 아니라 centerleft는, right는 등 top, bottom, 그래서 내가 테두리 "충돌"을 확인할 수 있기 때문에 높은 게재 순위를 유지하는 Rect를 사용합니다.

import pygame 

# --- constants --- (UPPER_NAMES) 

WIDTH = 900 
HEIGHT = 600 

BLACK = (0 , 0, 0) 
WHITE = (255, 255, 255) 

# --- classes --- (CamelNames) 
# empty 
# --- functions --- (lower_names) 
# empty 

# --- main --- (lower_names) 

# - init - 

pygame.init() 

screen = pygame.display.set_mode((WIDTH, HEIGHT)) 

# - objects - 

paddle1_image = pygame.surface.Surface((100,25)) 
paddle1_rect = paddle1_image.get_rect(x=90, y=10) 

# - mainloop - 

clock = pygame.time.Clock() 
game_over = False 

while not game_over: 

    # - events - 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      game_over = True 
     elif event.type == pygame.MOUSEMOTION: 
      # move padle with mouse 
      mouse_x, mouse_y = event.pos 
      paddle1_rect.centerx = mouse_x 

    # - updates (detect collision)- 

    # keep padle inside window 
    if paddle1_rect.left < 0: 
     paddle1_rect.left = 0 
    elif paddle1_rect.right > WIDTH: 
     paddle1_rect.right = WIDTH 

    # - draws - 

    screen.fill(WHITE) 
    screen.blit(paddle1_image, paddle1_rect) 
    pygame.display.update() 

    # - FPS - 

    clock.tick(30) # 30 FPS is enough for human eye to see animation 

# - end - 

pygame.quit() 
관련 문제