Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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.error:显示表面退出“;运行代码时_Python_Python 3.x_Pygame_Pygame Surface - Fatal编程技术网

Python &引用;pygame.error:显示表面退出“;运行代码时

Python &引用;pygame.error:显示表面退出“;运行代码时,python,python-3.x,pygame,pygame-surface,Python,Python 3.x,Pygame,Pygame Surface,我正在尝试用Pygame制作一个简单的移动游戏,因为我正在学习它。每当我尝试运行代码时,总会遇到一个问题:“pygame.error:display Surface quit” 我试着在末尾加上“break”,但窗口立即关闭!我尝试过搜索解决方案,但找不到一个对我的代码有帮助的解决方案 import pygame import random pygame.init() # Window setup size = [400, 400] screen = pygame.display.set_mod

我正在尝试用Pygame制作一个简单的移动游戏,因为我正在学习它。每当我尝试运行代码时,总会遇到一个问题:“pygame.error:display Surface quit”

我试着在末尾加上“break”,但窗口立即关闭!我尝试过搜索解决方案,但找不到一个对我的代码有帮助的解决方案

import pygame
import random
pygame.init()
# Window setup
size = [400, 400]
screen = pygame.display.set_mode(size)
clock = pygame.time.Clock()

# player position
x = size[0] // 2
y = size[1] // 2

# ball position
ballX = random.randrange(0, size[0])
ballY = random.randrange(0, size[1])

# colours
red = pygame.color.Color('#FF8080')
blue = pygame.color.Color('#8080FF')
white = pygame.color.Color('#FFFFFF')
black = pygame.color.Color('#000000')


def CheckOffScreenX(x):
    if x > size[0]:
        x = 0
    elif x < 0:
        x = size[0]
    return x
def CheckOffScreenY(y):
    if y > size[1]:
        y = 0
    elif y < 0:
        y = size[1]
    return y

# Game loop
done = False
while not done:
    screen.fill(black)


    keys = pygame.key.get_pressed()

    #player movement
    if keys[pygame.K_w]:
        y -=1
    if keys[pygame.K_s]:
        y +=1
    if keys[pygame.K_a]:
        x -=1
    if keys[pygame.K_d]:
        x +=1

    # Check offscreen
    x = CheckOffScreenX(x)
    y = CheckOffScreenY(y)

    # draw player
    pygame.draw.circle(screen, red, [x, y], 6)
    pygame.display.flip()

    # draw ball
    pygame.draw.circle(screen, blue, [ballX, ballY], 6)
    pygame.display.flip()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
    clock.tick(32)
    pygame.quit()
导入pygame
随机输入
pygame.init()
#窗口设置
大小=[400400]
screen=pygame.display.set_模式(大小)
clock=pygame.time.clock()
#球员位置
x=大小[0]//2
y=大小[1]//2
#球位
ballX=random.randrange(0,大小[0])
ballY=random.randrange(0,大小[1])
#颜色
红色=pygame.color.color(“#FF8080”)
blue=pygame.color.color(“#8080FF”)
白色=pygame.color.color(“#FFFFFF”)
black=pygame.color.color(“#000000”)
def CheckOffScreenX(x):
如果x>大小[0]:
x=0
elif x<0:
x=大小[0]
返回x
def CheckOffScreenY(y):
如果y>大小[1]:
y=0
elif y<0:
y=尺寸[1]
返回y
#游戏循环
完成=错误
虽然没有这样做:
屏幕填充(黑色)
keys=pygame.key.get_pressed()
#球员运动
如果键[pygame.K_w]:
y-=1
如果键[pygame.K_s]:
y+=1
如果键[pygame.K_a]:
x-=1
如果键[pygame.K_d]:
x+=1
#屏幕外检查
x=CheckOffScreenX(x)
y=CheckOffScreenY(y)
#平局球员
pygame.draw.circle(屏幕,红色,[x,y],6)
pygame.display.flip()
#抽签
pygame.draw.circle(屏幕,蓝色,[ballX,ballY],6)
pygame.display.flip()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
完成=正确
时钟滴答(32)
pygame.quit()
任何帮助都将不胜感激

问题是主回路的内部人员
pygame.quit()
取消初始化所有pygame模块。取消初始化模块后,所有对pygyme指令的进一步调用(在下一帧中)都将导致崩溃。
当应用程序结束时,在主循环之后执行
pygame.quit()

done=False
虽然没有这样做:
屏幕填充(黑色)
# [...]

#退出()啊,非常感谢!!我从一本书中学习Python,我开始认为这本书主要是针对Python 2的@谢谢你。不客气。注意,这在Python2中没有什么不同。