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

PyGame崩溃时双击屏幕

吴英武
2023-03-14

每当我试图制作一个蛇游戏时,这仍然是不完整的,每当我的蛇与边界碰撞时,它就会进入下一个屏幕a

你真差劲再试试

但如果我双击pygame窗口的任何地方,它有时会崩溃。

左点击的次数不止2次,但最终点击一段时间后仍然会崩溃。

我必须做些什么来解决这个问题,因为在我玩蛇的初始屏幕上没有这个问题。

我使用的代码如下所示:

import pygame
import random
pygame.init()
font = pygame.font.Font(None,25)
def mess(msg,color):
    screen_text = font.render(msg, True , color)
    display.blit(screen_text , [(w/2) - 50 , h/2] )
score = 0
w = 800
h = 600
display = pygame.display.set_mode((w,h))
pygame.display.update()
red = (255,0,0)
white = (255,255,255)
black = (0,0,0)
yellow = (255,255,0)
bye = False
xpos = w/2
ypos = h/2
xch  = 0
ych  = 0
b    = 10
while True:
    wa = random.randrange (10,700)
    ha = random.randrange (10,500)
    if wa%10 == 0 and ha%10 == 0:
        break

time = pygame.time.Clock()
FPS = 10
up = False
side = False
lenth = 10
while not bye:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w and up == False:
                 ych = -b
                 xch = 0
                 up = True
                 side = False
            if event.key == pygame.K_s and up == False:
                 ych = +b
                 xch = 0
                 up = True
                 side = False

            if event.key ==pygame.K_d and side == False:
                 xch = +b
                 ych = 0
                 side = True
                 up = False

            if event.key == pygame.K_a and side == False:
                 xch = -b
                 ych = 0
                 side = True
                 up = False
    if xpos == wa  and ypos == ha:
        lenth = lenth + 10
        while True:
            wa = random.randrange (10,700)
            ha = random.randrange (10,500)
            if wa%10 ==0 and ha%10 == 0:
                break

        score = score + 10
    if xpos == w - 10  or xpos == 0 or ypos == h - 10 or ypos == 0:
        xch = 0
        ych = 0
        display.fill(black)
        mess("You suck Try again!",red)
        pygame.display.update()
        break

    xpos = xpos + xch
    ypos = ypos + ych
    time.tick(FPS)

   display.fill(white)
   display.fill(red , rect=[xpos,ypos,10,10])#snake
   display.fill(yellow ,rect=[xpos + 0.41 , ypos +10 ,10 , lenth])#bady
   display.fill(black, rect=[wa,ha,10,10])  #food
   pygame.display.update()

共有2个答案

公孙英飙
2023-03-14

当snake离开屏幕时,将执行以下if语句:

if xpos == w - 10  or xpos == 0 or ypos == h - 10 or ypos == 0:
    xch = 0
    ych = 0
    display.fill(black)
    mess("You suck Try again!",red)
    pygame.display.update()
    break

因此,在将一些文本绘制到显示器并调用pygame.display.update()之后,您将调用brot,这将结束您的循环。

所以你的游戏不会崩溃,它只是结束。

百里杰
2023-03-14

我不知道这是否能完全解决你的问题。但是像这样没有睡眠的循环会导致你的程序占用你所有的CPU能量,这可能会导致你的程序崩溃。解决这个问题的方法是改变这个代码...

while True:
    wa = random.randrange (10,700)
    ha = random.randrange (10,500)
    if wa%10 ==0 and ha%10 == 0:
        break

对这个...

wa = random.randrange(1,70)*10
ha = random.randrange(1,50)*10

这将同时删除while循环,并且仍然给出一个在10和700之间以及10和500之间被10整除的数字。

 类似资料:
  • 自定义datePicker代码: 这就是我如何在我的主要活动中使用这个类: Logcat:

  • 我正在做一个简单的pygame项目,它目前有从屏幕顶部落到屏幕底部的炸弹。如果玩家击中炸弹他们就会死。到现在为止一切正常。问题是当炸弹已经经过玩家,但还没有离开屏幕时,它仍然会杀死玩家。也就是说,炸弹将会通过玩家的下部,但如果你越过,在它越过屏幕的下部之前,你将会死亡。他是我的代码: 数值如下: player.rect.x的值范围为120到500,具体取决于播放机在屏幕上的位置。(当您移动时,屏幕

  • (现在,我只想在我的屏幕上放一张地图) 下面是XML 代码如下: 当我查看调试时,我得到了这样的结果:

  • 所以我正在制作一个简单的寻宝游戏。我已经实现了SurfaceHolder.Callback和OnTouchListener方法。当触摸屏幕以挖掘宝藏时,应用程序崩溃。 下面是 DrawSurface 类的代码: 以下是我收到的错误消息: E/AndroidRuntime: FATAL EXCEPTION: main Process:justinrhinehart.cse.fullsail.trea

  • 更新XCode 8.2后,每次保存模拟器屏幕截图都会使其崩溃。即使我重置了内容和设置,仍然会崩溃。 我应该删除所有模拟器并再次安装它们吗? 更新: 8.2.1也有同样的问题 8.3只支持塞拉利昂 以下是坠机报告:

  • 我试图在应用程序启动的实际闪屏之前删除系统白色飞溅。我遵循以下主题: 如何修复应用程序启动上的白屏?并为飞溅活动创建了半透明样式: 但在安装后首次启动时,应用程序崩溃并出现以下未处理的异常: 首次启动后应用程序正常启动。我可以修复这种行为吗?如果这很重要,我正在使用最新的android支持库