Pygame未正确加载图像

2024-09-29 01:18:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我将图像加载到项目中的方法在学校的Windows机器上工作,但是当我回家在OpenSUSE上以相同的格式编写一些代码时,我的图像加载不正确。你知道吗

import pygame
import os

pygame.init()

os.environ['SDL_VIDEODRIVER']='windib'

class game(object):

def __init__(self):
    self._running = True
    self._screen = pygame.display.set_mode((800,600))
    self._background = pygame.Surface(self._screen.get_size())
    self._background.fill((0,0,0))
    pygame.display.set_caption('The Spice is Right')
    self.scroller1 = pygame.image.load("scroller.png")
    self.scroller2 = pygame.image.load("scroller.png")
    self.playerCross = pygame.image.load("")
    self.playerRect = self.playerCross.get_rect()
    self.head = pygame.image.load("tyler.png")
    self.headRect = self.head.get_rect()
    self.title = pygame.image.load("spiceMain.png")
    self.timer = 100
    self.attack = False
    self.spiceLevel = 0

    self.headRight = False
    self.headLeft = False
    self.headUp = False
    self.headDown = False

    self.titleScreen = True
    self.gameMode = False
    self.bgy = 0
    self.bgy2 = -600

def run(self):
    while self._running:
        self.handle_input()
        pygame.display.flip()
        self.bgMethod()
        if self.titleScreen:
            self.backgrounScroll()
        if self.gameMode:
            self.bgMethod()
            self.headMethod()
            self.player()

    pygame.quit()
def handle_input(self):
    for evt in pygame.event.get():
        if evt.type == pygame.QUIT:
            self._running = False
        elif evt.type == pygame.KEYDOWN:
            if evt.key == pygame.K_ESCAPE:
                self._running = False
def bgMethod(self):
    self._screen.blit(self._background,(0,0))

def backgroundScroll(self):
    self._screen.blit(self.scroller1,(0,self.bgy))
    self._screen.blit(self.scroller2,(0,self.bgy2))
    self._screen.blit(self.title,(400,300))
    self.bgy += 4
    self.bgy += 4
    if self.bgy >= 600:
        self.bgy == 0
    if self.bgy2 >= 600:
        self.bgy2 == 0
def headMethod(self):
    self._screen.blit(self.head(self.headRect.x,self.headRect.y))
    if self.headRect.x <= 800:
        self.headRight = True
    if self.headRect.x >= 800:
        self.headLeft = True
    if self.headRect.x <= 0:
        self.headRight = True
    if self.headRect.x >= 0:
        self.headLeft = True

    if self.headRight:
        self.headRect.x += 6
    if self.headLeft:
        self.headRect.x -= 6

    if self.headRect.y <= 600:
        self.headDown
    if self.headRect.y >= 600:
        self.headUp
    if self.headRect.y <= 0:
        self.headDown
    if self.headRect.y >= 0:
        self.headUp

    if self.headUp:
        self.rectHead.y -= 6
    if self.headDown:
        self.rectHead.y  += 6
def player(self):
    self._screen.blit(self.playerCross,(pygame.mouse.get_pos()))
def attackMethod(self):
    if self.timer == 100:
        if self.attack:
            self.timer == 0
            self.timer += 1
            if self.timer == 100:
                self.spiceLevel += 1



g= game()
g.run

不,我还不能在Windows机器上测试这个代码。你知道吗


Tags: imageselffalsetruegetifdefload
1条回答
网友
1楼 · 发布于 2024-09-29 01:18:46
os.environ['SDL_VIDEODRIVER']='windib'

删除此行。你知道吗

SDL_VIDEODRIVER并不是真的需要,除非你正在做一些奇怪的事情。从this site可以看出,windib指的是Win95/98/NT/2000 GDI (Win32)。。。显然OpenSUSE上没有可用的东西。SDL(以及pygame)应该有合理的默认值,并为平台选择正确的视频驱动程序,因此不需要设置这个envvar。你知道吗

相关问题 更多 >