pygame错误,没有设置视频模式

时间:2013-09-19 22:31:37

标签: python pygame

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

#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
谁知道我做错了什么?

2 个答案:

答案 0 :(得分:5)

我相信你需要打电话:

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

此调用实际上会返回您想要blit的表面。以下是链接资源的文档。

  

pygame.display.set_mode()

     

初始化窗口或屏幕以显示

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

此功能将创建一个显示Surface。传递的论点   是显示类型的请求。实际创建的显示将是   系统支持的最佳匹配。

     

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

     

返回的Surface可以像常规Surface一样绘制   但最终会在显示器上看到变化。

     

如果没有传递解析或设置为(0,0)并且pygame使用SDL   版本1.2.10或更高版本,创建的Surface将具有相同的大小   作为当前的屏幕分辨率。如果仅设置宽度或高度   如果为0,Surface将具有与屏幕相同的宽度或高度   解析度。使用1.2.10之前的SDL版本将引发   异常。

     

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

     

请求全屏显示模式时,有时会完全匹配   无法提出要求的解决方案。在这些情况下pygame   将选择最接近的兼容匹配。返回的表面将   仍然总是符合要求的分辨率。

     

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

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])

答案 1 :(得分:0)

在创建包含图像的变量之前不要忘记创建表面

像这样:

$(".mainDrop").droppable({
  accept: '.accordian',
  drop: function(event, ui) {
    if (!$(ui.draggable).hasClass('item')) {
      console.log(ui);
      
      $(ui.draggable).addClass("item");
      $(ui.draggable).addClass("droppableAccord item");
      
      $(ui.draggable).css({
        'min-height': '300px'
      });
      
      $(ui.draggable).append(deleteButton);
      $(ui.draggable).append('<div class="accordArea sortableItem"></div>');
      
      $(".sortableItem").sortable({
        revert: 10
      });
      
      $(".accordArea").droppable({
        accept: assets.join(', '),
        drop: function(event, ui) {
          if (!$(ui.draggable).hasClass('item')) {
            console.log('dropped');

            if ($(ui.draggable).hasClass('textfield')) {
              $(ui.draggable).html(textButton);
            } else if ($(ui.draggable).hasClass('dropdown')) {
              $(ui.draggable).html(dropdownButton);
            } else if ($(ui.draggable).hasClass('radio')) {
              $(ui.draggable).html(radioButton);
            } else if ($(ui.draggable).hasClass('checkbox')) {
              $(ui.draggable).html(checkboxButton);
            } else if ($(ui.draggable).hasClass('statictext')) {
              $(ui.draggable).html(statictextButton);
            } else if ($(ui.draggable).hasClass('customcode')) {
              $(ui.draggable).html(customcode);
            }

            $(ui.draggable).append(deleteButton);
            $(ui.draggable).addClass("item");
          }
        }
      });
    }
  }
});

不是这样的:

win = pygame.display.set_mode((576, 1024))
background_day = pygame.image.load("background-day.png").convert()