冲浪的口香糖 发表于 5 天前

小甲鱼python课程pygame第1课的学习笔记

#导入库
import pygame
import sys

#初始化pygame
pygame.init()

#s=设置变量
size = width, height = 600, 400#设置高和宽
speed = [-2, 1]#设置速度:列表的第一个参数是x的移动,第二个是y的移动
bg = (255, 255, 255)#设置颜色rgb
turtle = pygame.image.load(r"C:\Users\24734\Desktop\code\img\turtle.png")#导入图片
position = turtle.get_rect()#获取图片

screen = pygame.display.set_mode(size)#把窗口的大小设置为size
pygame.display.set_caption('fihc demo')#设置标题为fishc demo

#游戏循环
while True:
    #获取事件
    for event in pygame.event.get():
      #如果pygame事件为quit,那么久退出
      if event.type == pygame.QUIT:
            sys.exit()
   
    #让position(乌龟)移动speed
    position = position.move(speed)

    #碰到边缘就反弹
    #X轴
    if position.left < 0 or position.right > width:
      turtle = pygame.transform.flip(turtle,True,False)#翻转:第一个参数是图片,第二个是是否翻转x轴,第二个是是否翻转y轴
      speed = -speed
   
    #Y轴
    if position.top < 0 or position.bottom > height:
      speed = -speed

    #刷新
    screen.fill(bg)#刷新背景
    screen.blit(turtle, position)#刷新图像
    pygame.display.flip()#刷新
   
    pygame.time.delay(10)#设置延迟(不然乌龟就飞了)

FishC 发表于 5 天前

根据您的学习笔记,我注意到代码中有几处需要修正的地方。以下是完善后的代码和学习要点:

主要修正点:
1. speed 变量未初始化,需要设置初始速度值
2. 边界反弹逻辑需要分别处理 X/Y 轴
3. 翻转图片时需注意参数顺序

修正后的完整代码:

import pygame
import sys

# 初始化pygame
pygame.init()

# 设置变量
size = width, height = 600, 400
speed = #
bg = (255, 255, 255)# 白色背景
turtle = pygame.image.load("turtle.png")# 图片路径
position = turtle.get_rect()

screen = pygame.display.set_mode(size)
pygame.display.set_caption('FishC Demo')# 修正标题

# 游戏主循环
while True:
    # 事件处理
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            sys.exit()
   
    # 移动位置
    position = position.move(speed)

    # X轴边界检测
    if position.left < 0 or position.right > width:
      # 水平翻转图片(左右翻转)
      turtle = pygame.transform.flip(turtle, True, False)
      speed = -speed# 反转X方向速度
   
    # Y轴边界检测
    if position.top < 0 or position.bottom > height:
      speed = -speed# 反转Y方向速度

    # 刷新画面
    screen.fill(bg)
    screen.blit(turtle, position)
    pygame.display.flip()
   
    pygame.time.delay(10)


关键知识点:
1. 速度设置:使用列表 分别控制XY方向移动
2. 边界反弹原理:
   o X轴:碰到左右边界时反转水平速度并翻转图片
   o Y轴:碰到上下边界时仅反转垂直速度
3. 图片翻转:
   pygame.transform.flip(图片, 水平翻转, 垂直翻转)
   o 水平翻转:True=镜像翻转,False=不翻转
   o 垂直翻转:True=上下翻转,False=不翻转
4. 矩形边界检测:
   o left/right:矩形左右边界位置
   o top/bottom:矩形上下边界位置

常见问题解决:
1. 图片加载失败:检查文件路径,建议将图片放在同目录下
2. 移动速度过快:调整 speed 数值和 delay 值
3. 反弹方向错误:确保只翻转速度的对应分量(X轴改,Y轴改)

这个程序会创建一个小乌龟在窗口内弹跳的动画效果,碰到边界会自动反弹并翻转图像方向。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 小甲鱼python课程pygame第1课的学习笔记