鱼C论坛

 找回密码
 立即注册
查看: 1290|回复: 0

pygame壁球小游戏代码的疑问

[复制链接]
发表于 2022-3-29 16:44:38 | 显示全部楼层 |阅读模式
9鱼币
import pygame
import sys

pygame.init()

size = width, height = 600, 400
speed = [1, 1]
Black = (0, 0, 0)
# screen = pygame.display.set_mode(size)
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
pygame.display.set_caption('Pygame壁球')
ball = pygame.image.load('C:\\Users\\admin\\Desktop\\PYG02-ball.gif')
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()
still = False

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                if speed[0] == 0:
                    speed[0] = speed[0]
                else:
                    speed[0] = (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
            elif event.key == pygame.K_RIGHT:
                if speed[0] > 0:
                    speed[0] += 1
                else:
                    speed[0] -= 1
            elif event.key == pygame.K_UP:
                if speed[1] > 0:
                    speed[1] += 1
                else:
                    speed[1] -= 1
            elif event.key == pygame.K_DOWN:
                if speed[1] == 0:
                    speed[1] = speed[1]
                else:
                    speed[1] = (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
            elif event.key == pygame.K_ESCAPE:
                sys.exit()
        elif event.type == pygame.VIDEORESIZE:
            size = width, height = event.size[0], event.size[1]
            screen = pygame.display.set_mode(size, pygame.RESIZABLE)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                still = True
        elif event.type == pygame.MOUSEBUTTONUP:
            still = False
            if event.button == 1:
                ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
        elif event.type == pygame.MOUSEMOTION:
            if event.buttons[0] == 1:
                ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
                print(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)

    if pygame.display.get_active() and not still:
        ballrect = ballrect.move(speed[0], speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
        if ballrect.right > width and ballrect.right + speed[0] > ballrect.right:
            speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]
        if ballrect.bottom > height and ballrect.bottom + speed[1] > ballrect.bottom:
            speed[1] = -speed[1]

    screen.fill(Black)
    screen.blit(ball, ballrect)
    pygame.display.update()
    fclock.tick(fps)
    # pygame.time.Clock().tick(fps)

上面的代码中的pygame.MOUSEMOTION事件我不是很理解,(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)的结果不是(0,0)吗,
为什么球会跟着鼠标一起移动

PYG02-ball.gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 02:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表