如何在pygame中用鼠标滚动图像?

2024-09-30 18:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用鼠标垂直移动我的划桨图像,我怎么做?这是我的密码。我想移动我的鼠标,把运动和乒乓球联系起来。

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

Tags: eventdefdisplay鼠标widthscreenpygameheight
1条回答
网友
1楼 · 发布于 2024-09-30 18:30:29

您有事件pygame.MOUSEMOTION来移动鼠标。
它有鼠标位置event.pos,你可以用它来设置桨的位置。
或者您可以让event.rel来查看自从上一个MOUSEMOTION以来移动了多少鼠标。在

我使用Surface生成桨,这样每个人都可以在没有图像的情况下运行它。在

我使用Rect来保持位置,因为它不仅有x和{},而且还有{},leftrighttopbottom等,这样我就可以检查与边框的“碰撞”。在

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

相关问题 更多 >