Python 我做了一个拼盘机,但出了点问题

Python 我做了一个拼盘机,但出了点问题,python,pygame,Python,Pygame,我已经开始制作平板电脑,但我的第一次尝试失败了 代码是: import pygame as p p.init() win = p.display.set_mode((1280, 720)) p.display.set_caption('Project') player = [p.image.load('sprite/cube.jpg')] bg = [p.image.load('sprite/bgone.jpg')] clock = p.time.Clock() x = 1280 /

我已经开始制作平板电脑,但我的第一次尝试失败了

代码是:

import pygame as p

p.init()
win = p.display.set_mode((1280, 720))

p.display.set_caption('Project')

player = [p.image.load('sprite/cube.jpg')]
bg = [p.image.load('sprite/bgone.jpg')]

clock = p.time.Clock()

x = 1280 / 2
y = 720 / 1.5
width = 56
height = 60
speed = 10
delaytime = 50
jump = False
jumpspeed = 10

anim = 0


def draw():
    global anim
    global x
    global y
    if anim + 1 >= 30:
        anim = 0
    win.blit(bg, (0, 0))
    win.blit(player, (x, y))
    p.display.update()


run = True
while run:
    clock.tick(30)

    for event in p.event.get():
        if event.type == p.QUIT:
            run = False

    k = p.key.get_pressed()
    if k [p.K_LEFT] and x > 5:
        x = x - speed
    if k [p.K_RIGHT] and x < (1280 - width - 5):
        x = x + speed
    if k [p.K_a] and x > 5:
        x = x - speed
    if k [p.K_d] and x < (1280 - width - 5):
        x = x + speed
    if k [p.K_SPACE]:
        jump = True
    if not jump:
        bhop = False
    if jump:
        speed = 15
        if jumpspeed >= -10:
            if jumpspeed < 0:
                y += (jumpspeed ** 2) / 2
            else:
                y -= (jumpspeed ** 2) / 2
            jumpspeed -= 1
        else:    
            jump = False
            jumpspeed = 10
            speed = 10
    draw()
p.quit()
quit()
将pygame导入为p
p、 init()
win=p.display.set_模式((1280720))
p、 显示。设置标题(“项目”)
player=[p.image.load('sprite/cube.jpg')]
bg=[p.image.load('sprite/bgone.jpg')]
时钟=p.time.clock()
x=1280/2
y=720/1.5
宽度=56
高度=60
速度=10
延迟时间=50
跳转=错误
跳跃速度=10
动画=0
def draw():
全球动画
全球x
全局y
如果动画+1>=30:
动画=0
赢。布利特(背景,(0,0))
win.blit(玩家,(x,y))
p、 display.update()
运行=真
运行时:
时钟滴答(30)
对于p.event.get()中的事件:
如果event.type==p.QUIT:
运行=错误
k=p.key.get_pressed()
如果k[p.k_左]和x>5:
x=x-速度
如果k[p.k_RIGHT]和x<(1280-宽度-5):
x=x+速度
如果k[p.k_a]和x>5:
x=x-速度
如果k[p.k_d]和x<(1280-宽度-5):
x=x+速度
如果k[p.k_空间]:
跳转=真
如果没有跳转:
bhop=False
如果跳转:
速度=15
如果跳线速度>=-10:
如果跳跃速度<0:
y+=(跳跃速度**2)/2
其他:
y-=(跳跃速度**2)/2
跳跃速度-=1
其他:
跳转=错误
跳跃速度=10
速度=10
画()
p、 退出
退出
错误是:

Traceback (most recent call last):
  File "it dosen't matter", line 68, in <module>
    draw()
  File "it dosen't matter", line 30, in draw
    win.blit(bg, (0, 0))
TypeError: argument 1 must be pygame.Surface, not list
回溯(最近一次呼叫最后一次):
文件“没关系”,第68行,在
画()
文件“没关系”,第30行,在绘图中
赢。布利特(背景,(0,0))
TypeError:参数1必须是pygame.Surface,而不是list

我不知道这是什么。我看了很多视频,但没有人帮忙,所以我尝试了所有我知道的ide,但都给出了那个错误。试图重新编写程序,但我仍然看到了这一点。我做错了什么?

错误信息非常清楚:如果调用
blit()
,第一个参数必须是
曲面,而不是列表

查看您的代码

bg = [p.image.load('sprite/bgone.jpg')]
...
win.blit(bg, (0, 0))
我们看到您确实将列表作为第一个参数传递给
blit
函数

现在还不清楚为什么首先要将背景图像放在列表中,所以只需将代码更改为

bg = p.image.load('sprite/bgone.jpg').convert()
...
win.blit(bg, (0, 0))

convert()
确保
bg
-表面与显示表面具有相同的像素格式,这对游戏的性能非常重要。

能否编辑您的问题以包含代码?人们可能不愿意关注外部链接。你将很难让互联网上的随机陌生人点击下载链接。您需要根据错误消息创建一个替代项,它听起来像是
bg
应该是
pygame
的一个实例,但它是一个列表。