Sprite sheet 创建一个 window 的图像表面

Sprite sheet creating a window of the image surface

我正在尝试在 pygame/python 中重新创建 chrome 无互联网恐龙游戏。但是每当我 运行 它而不是创建主文件 window 时,它都会从 sprite sheet 文件创建图像 window。不知道我在这里做错了什么。

主文件:

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

精灵sheet文件:

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, 0), (x, y, width, height))

        image.set_colorkey(color)

        return image

instead of creating the main file window it creates the image window

没有。没有什么比图像更好的了 window.

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

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

首先你 blit SPRITESHEETimage(在 SpriteSheet.get_image()

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

现在 image 的内容是 SPRITESHEET。然后你 blit imagewin

win.blit(image, (0, 0))

因此显示image的内容(与SPRITESHEET相同)。

当你不想在window中看到SPRITESHEET的内容时,那么你就要去掉

这一行

>win.blit(image, (0, 0))


顺便说一句,pygame wiki 提供了一个很好且完整的 Spritesheet 示例。