当前位置: 首页 > 知识库问答 >
问题:

使用pygame崩溃事件

支嘉祥
2023-03-14

我正在做一个简单的pygame项目,它目前有从屏幕顶部落到屏幕底部的炸弹。如果玩家击中炸弹他们就会死。到现在为止一切正常。问题是当炸弹已经经过玩家,但还没有离开屏幕时,它仍然会杀死玩家。也就是说,炸弹将会通过玩家的下部,但如果你越过,在它越过屏幕的下部之前,你将会死亡。他是我的代码:

   if player.rect.y < thing_starty + thing_height:
        if player.rect.x > thing_startx and player.rect.x < thing_startx + thing_width or player.rect.x  + 28 > thing_startx and player.rect.x  + 28 < thing_startx + thing_width: 
            gameOver = True

数值如下:

thing_startx = random.randrange(0, S_WIDTH)
thing_starty = -300
thing_speed = 3
thing_width = 128
thing_height = 128

player.rect.x的值范围为120到500,具体取决于播放机在屏幕上的位置。(当您移动时,屏幕也将从左向右滚动。)28来自字符图像的宽度。

坠落物的代码如下:

if thing_starty > S_HEIGHT:
        pygame.mixer.Sound.play(bomb_sound)
        thing_starty = 0 - thing_height
        thing_startx = random.randrange(0, S_WIDTH)
        dodged += 1
        thing_speed += .5

我已经在这方面工作了一个星期左右,没有任何进展。谢谢你的帮助。

共有1个答案

臧俊杰
2023-03-14

正如Neal已经说过的,你只需要检查y值是否大于玩家的y值。

但我的建议是,停止使用这样的代码:

 if player.rect.y < thing_starty + thing_height:
    if player.rect.x > thing_startx and player.rect.x < thing_startx + thing_width or player.rect.x  + 28 > thing_startx and player.rect.x  + 28 < thing_startx + thing_width: 
        gameOver = True

看看rect类的文档,可以找到很多方便的函数,比如colliderect

使用rect来表示炸弹的位置*(就像您对player)一样),您可以使用如下代码

if player.rect.colliderect(thing.rect):
    gameOVer = True

*它应该有自己的类,从sprite继承,但这是另一个主题

 类似资料:
  • 每当我试图制作一个蛇游戏时,这仍然是不完整的,每当我的蛇与边界碰撞时,它就会进入下一个屏幕a 你真差劲再试试 但如果我双击pygame窗口的任何地方,它有时会崩溃。 左点击的次数不止2次,但最终点击一段时间后仍然会崩溃。 我必须做些什么来解决这个问题,因为在我玩蛇的初始屏幕上没有这个问题。 我使用的代码如下所示:

  • 我使用getStringArrayListExtra()搜索将列表从一个活动传输到另一个活动。这在第一次(从MainActivity到Diag2Activity)时运行良好,但在第二次(从Diag2Activity到SSToActivity)时应用程序崩溃。 每次我使用相同的方法:第一次活动: 第二项活动: 谁能告诉我错误可能来自哪里?提前谢谢 请在下面找到完整的代码: 主要活动。JAVA } 主

  • 当我为JDBC构建PreparedStatement时,我的Java应用程序崩溃了。 以下是代码: 有人能看出这里出了什么问题吗? 谢谢你的帮助 MS 编辑: 下面是我如何设置连接的:con=DriverManager。getConnection(“jdbc:mysql://:3306/”、“**”、“*”);

  • 问题内容: 我正在尝试在我的角度应用程序中包括以下Bootstrap可折叠面板。但是,当我单击“展开”时,似乎可以看到角度,然后将其重定向到主页,而不是折叠面板。我的路由看起来像这样,我认为是引起问题的原因。有什么建议? 面板- 问题答案: 作为一个类似的问题mentionned,简单地由数据目标属性改变您的href

  • 问题内容: POI方法引发了一个我无法解决的异常: 这个错误 在我的代码中,将数据放入列后将调用该方法: 有人对此有任何帮助的线索吗? 提前致谢。 问题答案: 您已标记此android。在android上,大多数(所有?)AWT类都不可用。但是POI需要a 来计算列大小。 作为一种变通方法,代替您的来电通过。可以通过将该列中显示的最大字符数乘以一个因子来计算的近似值。首先尝试为比例字体设置大约的值

  • 正如你所看到的,我已经评论了这行和应用程序的工作 //编译“com.squareup.okhttp:okhttp:2.7.0” 取消注释这一行并运行项目,应用程序崩溃,我得到这个错误