鱼C论坛

 找回密码
 立即注册
查看: 72|回复: 1

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

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #导入库
  2. import pygame
  3. import sys

  4. #初始化pygame
  5. pygame.init()

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

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

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

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

  33.     #刷新
  34.     screen.fill(bg)#刷新背景
  35.     screen.blit(turtle, position)#刷新图像
  36.     pygame.display.flip()#刷新
  37.    
  38.     pygame.time.delay(10)#设置延迟(不然乌龟就飞了)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
根据您的学习笔记,我注意到代码中有几处需要修正的地方。以下是完善后的代码和学习要点:

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

修正后的完整代码:

  1. import pygame
  2. import sys

  3. # 初始化pygame
  4. pygame.init()

  5. # 设置变量
  6. size = width, height = 600, 400
  7. speed = [2, 1]  # [x速度, y速度]
  8. bg = (255, 255, 255)  # 白色背景
  9. turtle = pygame.image.load("turtle.png")  # 图片路径
  10. position = turtle.get_rect()

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

  13. # 游戏主循环
  14. while True:
  15.     # 事件处理
  16.     for event in pygame.event.get():
  17.         if event.type == pygame.QUIT:
  18.             sys.exit()
  19.    
  20.     # 移动位置
  21.     position = position.move(speed)

  22.     # X轴边界检测
  23.     if position.left < 0 or position.right > width:
  24.         # 水平翻转图片(左右翻转)
  25.         turtle = pygame.transform.flip(turtle, True, False)
  26.         speed[0] = -speed[0]  # 反转X方向速度
  27.    
  28.     # Y轴边界检测
  29.     if position.top < 0 or position.bottom > height:
  30.         speed[1] = -speed[1]  # 反转Y方向速度

  31.     # 刷新画面
  32.     screen.fill(bg)
  33.     screen.blit(turtle, position)
  34.     pygame.display.flip()
  35.    
  36.     pygame.time.delay(10)
复制代码


关键知识点:
1. 速度设置:使用列表 [x_speed, y_speed] 分别控制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轴改[0],Y轴改[1])

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-31 10:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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