鱼C论坛

 找回密码
 立即注册
查看: 1484|回复: 4

[已解决]这句代码有点看不明白为什么需要/存在的意义

[复制链接]
发表于 2022-6-19 00:42:17 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lzb1001 于 2022-6-19 00:44 编辑
  1. # 演示裁剪图像

  2. import pygame
  3. import sys
  4. from pygame.locals import *


  5. pygame.init()


  6. size = width, height = 640, 480
  7. bg = (255, 255, 255)




  8. clock = pygame.time.Clock()



  9. screen = pygame.display.set_mode(size)
  10. pygame.display.set_caption('FishC Demo')


  11. oturtle = pygame.image.load(r'd:\\work\\turtle_left.png')
  12. #turtle = pygame.transform.chop(oturtle, (71, 65, 30, 30))
  13. turtle = oturtle
  14. position = turtle.get_rect()
  15. # 图像中心点的位置坐标
  16. position.center = width // 2, height // 2 # 地板除法,哪里用到这个值???



  17. while True:
  18.        for event in pygame.event.get():
  19.         if event.type == pygame.QUIT:
  20.             sys.exit()

  21.       
  22.    
  23.    

  24.    
  25.     screen.fill(bg)
  26.    
  27.     screen.blit(turtle, position)
  28.     # 调用draw模块的rect()方法来绘制矩形:
  29.     pygame.draw.rect(screen, (0, 0, 0), position, 1)
  30.     # 第一个参数screen指定矩形将绘制在……
  31.     # 第二个参数(0, 0, 0)指定边框颜色为黑色
  32.     # 第三个参数position指定矩形的范围(left/top/width/height)
  33.     # 第四个参数1指定矩形边框线条的粗细(0表示用指定边框颜色填充矩形/数值越大线条越粗/负数表示无边框)

  34.     # 刷新页面:
  35.     pygame.display.flip()
  36.    

  37.     # 调用time模块的clock()方法:
  38.     clock.tick(30) # 设置不高于30帧执行
复制代码


------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------------------------------

【我的问题】

第30行代码position.center = width // 2, height // 2的作用?

它后面的代码pygame.draw.rect(screen, (0, 0, 0), position, 1)中都没有调用到position.center,而是position,所以第30行代码为什么一定要存在?


******************************

感谢大神不吝赐教,为新手解疑释惑。

赠人玫瑰,手有余香,好人一生平安!
最佳答案
2022-6-19 00:59:54
  1. pygame.draw.rect(screen, (0, 0, 0), position, 1)
复制代码

这个地方用到了,position是一个类,center是这个类的一个属性,进了pygame.draw.rect这个函数之后,pygame自然会去调用它,不需要你操心
如果position.center = width // 2, height // 2这行没有起作用的话,你怎么会看到乌龟出现在屏幕正中间呢,这行代码的作用就是定义屏幕正中间的坐标
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-19 00:59:54 | 显示全部楼层    本楼为最佳答案   
  1. pygame.draw.rect(screen, (0, 0, 0), position, 1)
复制代码

这个地方用到了,position是一个类,center是这个类的一个属性,进了pygame.draw.rect这个函数之后,pygame自然会去调用它,不需要你操心
如果position.center = width // 2, height // 2这行没有起作用的话,你怎么会看到乌龟出现在屏幕正中间呢,这行代码的作用就是定义屏幕正中间的坐标
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-19 01:19:37 | 显示全部楼层
本帖最后由 lzb1001 于 2022-6-19 01:21 编辑
临时号 发表于 2022-6-19 00:59
这个地方用到了,position是一个类,center是这个类的一个属性,进了pygame.draw.rect这个函数之后,pygame自 ...


感谢大神回复。哦,原来是这样。

我之前是有测试过了:如果删除这行代码,图像将显示在屏幕左上角的位置。

也就是说:如果不指定图像显示在中心位置,就可以不要这行代码,对吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-19 01:24:05 | 显示全部楼层
lzb1001 发表于 2022-6-19 01:19
感谢大神回复。哦,原来是这样。

我之前是有测试过了:如果删除这行代码,图像将显示在屏幕左上角的 ...

对,position.center默认是0,0的位置
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-19 01:26:06 | 显示全部楼层
lzb1001 发表于 2022-6-19 01:19
感谢大神回复。哦,原来是这样。

我之前是有测试过了:如果删除这行代码,图像将显示在屏幕左上角的 ...

如果你的问题解决了,不要忘了设置最佳答案哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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