pygame壁球小球跟着鼠标走

本文详细介绍使用Python的Pygame库开发一个简单的壁球游戏,包括窗口调整、键盘控制球的速度、鼠标操作以及游戏更新等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pygame
import sys
pygame.init()
icon = pygame.image.load('a.png')
pygame.display.set_icon(icon)

size = width,height = 600,400
screen = pygame.display.set_mode(size,pygame.RESIZABLE)     #窗体可变大小
print(screen)
pygame.display.set_caption('Pygame 壁球')

speed = [1,1]
BLACK = 0,0,0

ball = pygame.image.load('PYG02-ball.gif')  #pygame 中导入的任何一个对象都是Surface对象
ballrect = ball.get_rect()      # 在pygame 中覆盖图像的矩形对象  rect对象有重要属性:top bottom left right width height 坐标值

fps = 1000
fcclock = 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:
                speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) -1)*int(speed[0]/abs(speed[0]))
            elif event.key == pygame.K_RIGHT:
                speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
            elif event.key == pygame.K_UP:
                speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
            elif event.key == pygame.K_DOWN:
                speed[1] = speed[1] if speed[1] == 0 else (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.w,event.h
            screen = pygame.display.set_mode(size,pygame.RESIZABLE)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                still = True
        elif event.type == pygame.MOUSEBUTTONUP:
            if event.button == 1:
                still = False
                ballrect = ballrect.move(event.pos[0] - ballrect.left,event.pos[1] - ballrect.top)      #move方法是两次运动的相对距离
        elif event.type == pygame.MOUSEMOTION:
            if event.buttons[0] == 1:
                ballrect = ballrect.move(event.pos[0] - ballrect.left,event.pos[1] - ballrect.top)


    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]

    if pygame.display.get_active() and not still:     # pygame.display.get_active() 当窗体最大化时为true
        ballrect = ballrect.move(speed[0], speed[1])
        print(ballrect)

    fcclock.tick(fps)       #调用Clock()类创建的对象中的tick()函数
    screen.fill(BLACK)  # 将背景填充为黑色,不然之前的图片颜色还是存在
    screen.blit(ball, ballrect)  # 将球放进矩形中
      # move函数包括速度方向和速度大小

    pygame.display.update()     # 只重绘变化部分的背景


Pygame是一个流行的Python库,用于创建2D游戏、图形界面和其他多媒体应用。要使用Pygame模拟一个小球的运动,你需要了解以下基本步骤: 1. **安装Pygame**: 首先确保已经安装了pygame,如果没有,可以通过pip进行安装: ``` pip install pygame ``` 2. **导入模块**: 导入pygame库中的必要模块,如`pygame.display`, `pygame.time`, 和 `pygame.event`。 3. **初始化Pygame**: ```python import pygame pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("小球运动") clock = pygame.time.Clock() ``` 4. **创建小球类**: 定义一个小球类,包含位置、速度等属性,并定义更新位置的方法(如`move()`)。 5. **小球的位置和移动**: 使用小球类,比如用`x`和`y`表示位置,每次循环改变小球的速度方向或大小,让小球沿指定路径移动。 6. **主游戏循环**: ``` running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 更新小球位置 ball.move() # 绘制小球 screen.fill((255, 255, 255)) # 清屏 pygame.draw.circle(screen, (0, 0, 255), ball.position, ball.radius) pygame.display.flip() # 刷新屏幕 clock.tick(60) # 控制帧率 pygame.quit() ``` 7. **结束程序**: 当用户关闭窗口时,退出游戏循环并关闭Pygame。 这是一个基础的框架,你可以根据自己的需求添加更多的细节,例如碰撞检测、得分系统、键盘控制等。如果你有具体的问题,比如不明白某个概念,或者需要帮助编写特定的部分,请告诉我,我会提供更详细的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值