问题描述
我正在尝试在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示例。