2017-11-18 182 views
1

我需要通過鼠標垂直移動槳圖像,我該怎麼做?這是我的代碼。我想在pong遊戲中移動我的鼠標並將運動與槳聯繫起來。如何在pygame中使用鼠標滾動圖像?

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'。它在mose移動時執行,它給鼠標位置'even.pos'和相對移動'event.rel' – furas

回答

1

您有事件pygame.MOUSEMOTION讓鼠標移動。
它有鼠標positon event.pos,您可以使用它來設置槳位置。
或者您可以通過event.rel瞭解自從之前的MOUSEMOTION以來有多少鼠標移動了。

我使用Surface生成槳,所以每個人都可以運行它沒有圖像。

我用Rect保持現在的位置,因爲它不僅具有xycenterleftrighttopbottom等,所以我可以檢查「衝突」與邊界。

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()