Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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:我的图像不是';t出现_Python_Pygame - Fatal编程技术网

Python PyGame:我的图像不是';t出现

Python PyGame:我的图像不是';t出现,python,pygame,Python,Pygame,我已经写了一段代码,我试图让我的图像显示在中心,但当我运行它时,图像根本不显示,你知道我哪里出错了吗 (顺便说一句,我测试了不同的代码,图像加载良好,因此python或pygame本身没有任何问题) 您需要移动: rect = self.alien_img.get_rect() 到以下行之前的init: self.alien_pos = ((self.width-rect.width)//4, (self.height-rect.height)//4

我已经写了一段代码,我试图让我的图像显示在中心,但当我运行它时,图像根本不显示,你知道我哪里出错了吗

(顺便说一句,我测试了不同的代码,图像加载良好,因此python或pygame本身没有任何问题)

您需要移动:

rect = self.alien_img.get_rect()
到以下行之前的init:

self.alien_pos = ((self.width-rect.width)//4,
                      (self.height-rect.height)//4)
及之后:

self.alien_img = pygame.image.load('alien.png')
以下是将图片放入相框的更改代码:

from __future__ import division
import math
import sys
import pygame


class MyGame(object):
    def __init__(self):
        pygame.mixer.init()
        pygame.mixer.pre_init(44100, -16, 2, 2048)
        pygame.init()

        self.width = 800
        self.height = 600
        self.screen = pygame.display.set_mode((self.width, self.height))

        self.bg_color = 0, 0, 0

        self.alien_img = pygame.image.load('alien.png')
        rect = self.alien_img.get_rect()
        self.alien_pos = ((self.width-rect.width)//4,
                          (self.height-rect.height)//4)
        self.FPS = 30
        self.REFRESH = pygame.USEREVENT+1
        pygame.time.set_timer(self.REFRESH, 1000//self.FPS)


    def run(self):
        running = True
        while running:
            event = pygame.event.wait()

            if event.type == pygame.QUIT:
                running = False

            elif event.type == self.REFRESH:
                self.draw()

            else:
                pass # an event type we don't handle            

    def draw(self):
        self.screen.fill(self.bg_color)

        rect = self.alien_img.get_rect()
        rect = rect.move(self.alien_pos)
        self.screen.blit(self.alien_img, rect)

        pygame.display.flip()


MyGame().run()
pygame.quit()
sys.exit()
在定义rect之前尝试访问它的位置之前。我已经添加了下面创建的窗口的图片:

将指出,你在中间获得这张图的计划并没有起到你需要改变的作用:

self.alien_pos = ((self.width-rect.width)//4,
                      (self.height-rect.height)//4)
致:

给出了所需的结果:


只是一个提示:
else:pass
部分什么都不做。pixshi你能看看我的答案吗!如果使用screen的rect,可以执行
alien.rect.center=screen.center
或如果未定义,则执行
alien.rect.center=pygame.display.get_surface().get_rect().center
self.alien_pos = ((self.width-rect.width)//4,
                      (self.height-rect.height)//4)
self.alien_pos = (self.width//2 - rect.width//2,
                  self.height//2 - rect.height//2)