python - 我在 Pygame 中使用 .blit() 做错了什么?
问题描述
我最近一直在尝试学习 Pygame,但遇到了一些麻烦。一件事是我根本无法显示图像。我尝试了很多不同的方法,但最接近的是收到此错误消息,
TypeError: argument 1 must be pygame.Surface, not function
尝试使用时.blit()
。我在教程中看到过以这种方式使用的命令,但由于某种原因,它对我不起作用。我的代码如下。
Python 3.8、Spyder、macOS 10.14.6
import pygame as pg
pg.init()
width = 800
height = 600
white = ((255, 255, 255))
purple = ((100, 0, 130))
screen = pg.display.set_mode((width, height))
pg.display.set_caption("Race Game:")
clock = pg.time.Clock()
car = pg.image.load("car.png")
def car(x, y):
screen.blit(car, (x, y))
x = width * 0.45
y = height * 0.8
crashed = False
while not crashed:
for event in pg.event.get():
if event.type == pg.QUIT:
crashed = True
screen.fill(white)
car(x, y)
pg.display.update()
clock.tick(60)
pg.quit()
quit
解决方案
pygame.Surface 对象和函数具有相同的名称car
:
car = pg.image.load("car.png") def car(x, y): screen.blit(car, (x, y))
该函数car
涵盖car
导致错误的变量。当你 screen.blit(car, (x, y))
在函数中做时car
,则car
指的是函数car
而不是pygame.Surface
对象car
。
您必须使用不同的名称。例如:
car_image = pg.image.load("car.png")
def car(x, y):
screen.blit(car_image, (x, y))
推荐阅读
- sql-server - 更新桥表时自动将实体设置为已修改?
- python - 如何使用 Python 从网络驱动器获取具有最后修改日期的文件名?
- php - 用 PHP 更新 FTP 服务器中的 CSV 文件
- python - 将 PyPI 包添加到 Composer 环境时出现错误
- javascript - 一段时间后隐藏覆盖,就像标准视频播放器一样
- sql - 如何在 oracle apex 中创建倒计时
- windows - 如何使用bash从目录名中提取子字符串
- python - 使用列表推导替换字符串列表中的特定字符
- django - 如何将 django 管理命令的异常记录到文件而无需破解 manage,py?
- sql - Oracle 使用 LENGTH 和 INSTR 返回错误值