pygame错误,未设置视频模式

发布于 2021-01-29 17:26:33

我只是为游戏设置了一些功能,但是我的脚本无法加载图像

#used variables
# x, y for alien location
# nPc for the aliens image
#
#
#
#
#
#
#
#
#
#



#set up
import pygame, sys, random, time, math
from pygame.locals import *
pygame.init()


nPc = '/home/claude/Dropbox/Bowtie/Prisim/Images/Alien_Races/Standered/alien_1.png'


nPc = pygame.image.load(nPc).convert_alpha()

def loc_alien():
        x = random.randint(0, 400)
        y = randaom.randint(0, 400)


def spawn_alien(x, y):
        screen.blit(nPc, (x, y))

当我运行它时,我什么都不会发生,因为我还没有使用函数,但是当我运行它时,我得到了这个错误

Traceback (most recent call last):
  File "/home/claude/Dropbox/Bowtie/Prisim/Scripts/aliens.py", line 26, in <module>
    nPc = pygame.image.load(nPc).convert_alpha()
error: No video mode has been set

有人知道我在做什么错吗?

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我相信您需要致电:

    screen = pygame.display.set_mode((800, 600)) # change to the real resolution
    

    该调用实际上将返回您要在其上拉伸的曲面。以下是链接资源中的文档。

    pygame.display.set_mode()

    初始化要显示的窗口或屏幕

    set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
    

    此功能将创建显示表面。传入的参数是对显示类型的请求。实际创建的显示将是系统支持的最佳匹配。

    分辨率参数是一对数字,代表宽度和高度。flags参数是其他选项的集合。depth参数代表用于颜色的位数。

    可以将返回的Surface绘制为常规的Surface,但最终会在监视器上看到更改。

    如果未通过任何分辨率或将其设置为(0,0)并且pygame使用SDL
    1.2.10或更高版本,则创建的Surface将具有与当前屏幕分辨率相同的大小。如果仅将width或height设置为0,则Surface的宽度或高度将与屏幕分辨率相同。使用1.2.10之前的SDL版本会引发异常。

    通常最好不要传递depth参数。对于系统,它将默认为最佳和最快的颜色深度。如果您的游戏需要特定的颜色格式,则可以使用此参数控制深度。Pygame将模拟不可用的颜色深度,该深度可能很慢。

    当请求全屏显示模式时,有时无法完全匹配所请求的分辨率。在这些情况下,pygame将选择最接近的兼容匹配。返回的表面仍将始终与请求的分辨率匹配。

    flags参数控制所需的显示类型。有多种选择,您甚至可以使用按位或运算符(管道“
    |”字符)组合多种类型。如果传递0或无标志参数,则默认为软件驱动的窗口。以下是您将要选择的显示标志:

    pygame.FULLSCREEN    create a fullscreen display
    pygame.DOUBLEBUF     recommended for HWSURFACE or OPENGL
    pygame.HWSURFACE     hardware accelerated, only in FULLSCREEN
    pygame.OPENGL        create an OpenGL renderable display
    pygame.RESIZABLE     display window should be sizeable
    pygame.NOFRAME       display window will have no border or controls
    

    例如:

    # Open a window on the screen
    screen_width=700
    screen_height=400
    screen=pygame.display.set_mode([screen_width,screen_height])
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看