Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame只是显示一个黑屏_Python_Raspberry Pi_Pygame - Fatal编程技术网

Python pygame只是显示一个黑屏

Python pygame只是显示一个黑屏,python,raspberry-pi,pygame,Python,Raspberry Pi,Pygame,我试图让这个游戏工作,但它只是显示一个黑屏。这是一个简单的游戏,你只要避免掉块。我看了相关的问题,但没有一个答案对我有用。它说我必须添加更多细节,所以希望这一行足够,因为idk在这一行中还可以写些什么来为我的文章添加细节。 我的代码: 导入pygame 随机输入 导入系统 pygame.init() 宽度=800 高度=600 玩家颜色=(200,0,0) 颜色=(0200,0) 背景颜色=(0120150) 播放器大小=50 播放器位置=[宽度/2,高度-2*播放器大小] 敌人大小=50 敌人

我试图让这个游戏工作,但它只是显示一个黑屏。这是一个简单的游戏,你只要避免掉块。我看了相关的问题,但没有一个答案对我有用。它说我必须添加更多细节,所以希望这一行足够,因为idk在这一行中还可以写些什么来为我的文章添加细节。 我的代码:

导入pygame
随机输入
导入系统
pygame.init()
宽度=800
高度=600
玩家颜色=(200,0,0)
颜色=(0200,0)
背景颜色=(0120150)
播放器大小=50
播放器位置=[宽度/2,高度-2*播放器大小]
敌人大小=50
敌人位置=[random.randint(0,宽度-敌人大小),0]
敌人列表=[敌人位置]
速度=5
screen=pygame.display.set_模式((宽度、高度))
游戏结束=错误
分数=0
clock=pygame.time.clock
def投放敌人(敌人列表):
如果len(敌方名单)<10:
x_pos=random.randint(0,宽度大小)
y_pos=0
敌人列表。追加([x位置,y位置])
def抽取敌人(敌人列表):
对于敌人列表中的敌人位置:
pygame.draw.rect(屏幕,敌方颜色,(敌方位置[0],敌方位置[1],敌方大小,敌方大小))
def更新敌人位置(敌人列表,分数):
对于idx,枚举中的敌方位置(敌方列表):
如果敌方位置[1]>=0且敌方位置[1]<高度:
敌人位置[1]+=速度
其他:
敌方列表。pop(idx)
分数+=1
回击得分
def碰撞检查(敌人列表、玩家位置):
对于敌人列表中的敌人位置:
返回真值
返回错误
def检测碰撞(玩家位置、敌人位置):
p_x=玩家位置[0]
p_y=玩家位置[1]
e_x=敌人_位置[0]
e_y=敌人位置[1]
如果e_x>=p_x和e_x<(p_x+玩家大小)或p_x>=e_x和p_x<(e_x+敌人大小):
如果e_y>=p_y和e_y<(p_y+玩家大小)或p_y>=e_y和e_y<(e_y+敌人大小):
返回真值
返回错误
虽然游戏尚未结束:
屏幕填充(背景颜色)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
sys.exit()
如果event.type==pygame.KEYDOWN:
x=玩家位置[0]
y=玩家位置[1]
如果event.key==pygame.K_左:
x-=播放器大小
elif event.key==pygame.K_RIGHT:
x+=播放器大小
玩家位置=[x,y]
放下敌人(敌人列表)
更新敌方位置(敌方列表,得分)
如果碰撞检查(敌人列表、玩家位置):
游戏结束=正确
打破
抽取敌人(敌人列表)
pygame.draw.rect(屏幕,敌方颜色,(敌方位置[0],敌方位置[1],敌方大小,敌方大小))
pygame.draw.rect(屏幕,玩家颜色,(玩家位置[0],玩家位置[1],玩家大小,玩家大小))
时钟滴答(30)
pygame.display.update()
问题在于:

def collision_check(enemy_list, player_pos):
    for enemy_pos in enemy_list:
        return True
    return False
您缺少的
内的条件检查,该检查用于检查/检测敌方位置和玩家位置之间的碰撞。可能应该是这样的:

def collision_check(enemy_list, player_pos):
    for enemy_pos in enemy_list:
        if detect_collision(player_pos, enemy_pos):
            return True
    return False
现在它总是返回真的,所以你的游戏在画任何东西之前退出,因此出现了黑屏

编辑:

我注意到代码中还有另外两个相当简单的打字错误。我正要指出它们。然而,关于虫子的本质,我感到有些惊讶。这有一种任务的感觉:“找到这段代码中的三个bug并让它工作”。如果这真的是你的代码,我们很乐意帮助你,但如果这是一个家庭作业,我们不会帮你做,而不是你在做中学

前一个bug很容易找到,剩下的两个bug也很容易找到。尝试调试其余部分。我建议使用IDE进行调试,而不仅仅是运行脚本。有许多好的免费IDE可以让您的编程体验,特别是调试体验变得更加轻松。

问题在于:

def collision_check(enemy_list, player_pos):
    for enemy_pos in enemy_list:
        return True
    return False
您缺少
内的条件检查,该检查用于检查/检测敌方位置和玩家位置之间的碰撞。可能应该是这样的:

def collision_check(enemy_list, player_pos):
    for enemy_pos in enemy_list:
        if detect_collision(player_pos, enemy_pos):
            return True
    return False
现在它总是返回真的,所以你的游戏在画任何东西之前退出,因此出现了黑屏

编辑:

我注意到代码中还有另外两个相当简单的打字错误。我正要指出它们。然而,关于虫子的本质,我感到有些惊讶。这有一种任务的感觉:“找到这段代码中的三个bug并让它工作”。如果这真的是你的代码,我们很乐意帮助你,但如果这是一个家庭作业,我们不会帮你做,而不是你在做中学


前一个bug很容易找到,剩下的两个bug也很容易找到。尝试调试其余部分。我建议使用IDE进行调试,而不仅仅是运行脚本。有很多好的免费IDE可以让您的编程体验,特别是调试体验更加轻松。

您真的编写了所有这些代码,而没有在过程中进行测试吗?如果不是,它在什么时候开始变黑?这是我添加碰撞检测后的某个点。我只是一直遵循指南,并假设它会自行修复。(这是我的第一个项目)你能评论一下bug开始的地方吗?好的,我试试看。它仍然显示一个黑屏。你真的编写了所有这些代码,但没有在过程中测试它?如果不是,它在什么时候开始变黑?这是我添加碰撞检测后的某个点。我只是一直遵循指南,并假设它会自行修复。(这是我的第一个项目)你能评论一下bug开始的部分吗?好的,我会尝试这样做。它仍然显示一个黑屏。如果你以前没有看过,这里有一个讨论提问和回答家庭作业问题的窗口。@importrandom谢谢,我没有看到这个,我会读的。这里有一个讨论会,询问和回答家庭作业问题,以防你以前没看过