Skip to content

e1

代码阅读

# Ensure all assets are accessed in an OS independent way
<div markdown="1" style="margin-top: -30px; font-size: 0.75em; opacity: 0.7;">
:material-circle-edit-outline:  371 个字 :fontawesome-solid-code: 12 行代码 :material-clock-time-two-outline: 预计阅读时间 1 分钟
</div>
# Never hardcode a filename!
current_directory = Path('.')
background_image = current_directory / 'assets' / 'mario_background.png'

确保能够跨平台,不同 OS 的路径表达可能不一样

if __name__ == "__main__":
    main()

在 Python 中,每个文件(也称为模块)都有一个特殊变量 name

  • 如果这个脚本是被直接运行的(例如,在命令行中执行 python draw_background.py),那么 name 的值就是 "main"。
  • 如果这个脚本是被其他脚本导入的(例如,import draw_background),那么 name 的值就是模块的名称(例如 "draw_background")。

这是一种常见的 Python 编程模式,用于区分脚本是被直接运行还是被导入。

这样做的好处是:

  1. 当你想要重用这个脚本中的函数或类时,可以通过 import 将其导入到其他脚本中,而不会自动执行 main() 函数,避免不必要的代码执行。
  2. 当你直接运行这个脚本时,main() 函数会被调用,程序按预期开始运行。
jump_r = pygame.Rect(254, 13, 42, 49)  # source Rect to draw

pygame.Rect 用于表示矩形区域,它定义了矩形的 位置尺寸,常用于处理图形对象的绘制和碰撞检测

Rect(254, 13, 42, 49) 从左往右依次为 矩阵左上 x 左边、左上 y 坐标、宽度、高度

surface.blit(background, (0,0))
surface.blit(mario, (390, 510), jump_r)

blit 用于绘制图像的函数,作用是将一个图像(源图像)绘制到另一个图像(目标表面)上

surface.blit(source, dest, area=None),area 在源图像中指定的矩形区域,仅绘制该部分。

for y in range(60, size_y, 20):
    for x in range(size_x):
        surface.set_at((x, y), blue)

从 y = 60 开始,每隔 20 个像素遍历一次,直到 size_y。