微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

雪碧表创建图像表面的窗口

如何解决雪碧表创建图像表面的窗口

我正在尝试在pygame / python内重新创建Chrome no internet dino游戏。但是,每当我运行它时,它都不会创建主文件窗口,而是从Sprite Sheet文件创建图像窗口。不知道我在做什么错。

文件

# importing the other file where the spritesheet class is
from SpriteSheet import SpriteSheet

import pygame

pygame.init()

SW = 500
SH = 500
win = pygame.display.set_mode((SW,SH))
SPRITE_SHEET = pygame.image.load('sheet.png')

# mainloop
run = True
while run:

# checking for clicking the x button
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

# cropping the image from the spritesheet
        spritesheet = SpriteSheet(SPRITE_SHEET)
        image = spritesheet.get_image(
            848,2,44,47,(255,255,255))
        win.blit(image,(0,0))

精灵表文件

import pygame

# creating the class
class SpriteSheet(object):
    SpriteSheet = None

# getting the spritesheet
    def __init__(self,sheet):
        self.SpriteSheet = sheet

# cropping the image
    def get_image(self,x,y,width,height,color):
        image = pygame.display.set_mode([width,height])

        image.blit(self.SpriteSheet,0),(x,height))

        image.set_colorkey(color)

        return image

解决方法

代替创建主文件窗口,而是创建图像窗口

不。没有像图像窗口那样的东西。

与显示相关联的pygame.Surface对象的内容就是您在窗口中看到的内容。

win = pygame.display.set_mode((SW,SH))

首先,您在SPRITESHEET(在image中) SpriteSheet.get_image()

image.blit(self.SpriteSheet,(0,0),(x,y,width,height)) 

现在image的内容是SPRITESHEET。然后您在image

win

因此,将显示win.blit(image,0)) (与image相同)的内容。

如果您不想在窗口中看到SPRITESHEET的内容,则必须删除该行

SPRITESHEET


顺便说一句,pygame Wiki提供了一个不错且完整的Spritesheet示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。