所以我遵循本教程:https://www.youtube.com/watch?v=Vg83OtRkevE我已经完成了教程告诉我的一切,但当我运行它时,我仍然收到这个错误消息:
if event.type == pygame.QUIT:
syntax Error
(这是在回复中做出的(我的代码是:
import sys
WIN_WIDTH = 800
WIN_HEIGHT = 600
TILESIZE = 32
FPS = 60
class Spritesheet:
def __init__(self, file):
self.sheet = pygame.image.load(file).convert()
def get_sprite(self, x, y, width, height):
sprite = pygame.Surface([width, height])
sprite.blit(self.sheet, (0, 0), (x, y, width, height))
return sprite
class Ground(pygame.sprite.sprite):
def __init__(self, game, x, y):
self.game = game
self._layer = 1
self.groups = self.game.all_sprites
pygame.sprite.Sprite.__init__(self, self.groups)
self.x = x * TILESIZE
self.y = y * TILESIZE
self.width, self.height = TILESIZE, TILESIZE
self.image = self.gane.terainsheet.get_sprite(0, 96, self.width, self.height)
self.rect = self.image.get_rect()
self.rect.x, self.rect.y = self.x, self.y
def build_map(self, tilemap):
for i, row in enumerate(tilemp):
for j, column in enumerate(row):
Ground(self, j, i)
class Game:
def __init__(self):
self.screen = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
self.clock = pygame.time.Clock()
self.running = True
self.terrainsheet = spritesheet(('terrain1.png'))
def createTilemap(self, tilemap):
build_map(self, tilemap)
def new(self, tilemap):
self.playing = True
self.all_sprites = pygame.sprite.LayeredUpdates()
self.createTilemap(tilemap)
def events(self):
for event in pygame.event.get():
if eve nt.type == pygame.QUIT:
self.playing = False
self.running = False
def update(self):
self.all_sprites.update()
def draw(self):
self.screen.fill('black')
self.all_sprites.draw(self.screen)
self.clock.tick(FPS)
pygame.display.update()
def main(self):
while self.playing:
self.Events()
self.updates()
self.draw()
TILEMAP = [
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
'............................',
]
game = game()
game.new(TILEMAP)
while game.running:
game.main
pygame.quit
sys.exit()
起初,这是一些其他语法错误,我必须修复,如果有人能帮忙,请做!我是玩pygame的新手,如果我的问题看起来很愚蠢,我很抱歉。
Python需要缩进才能知道每个部分的范围(例如if、while、for、function等(。以下是如何正确执行的全面指南:https://peps.python.org/pep-0008/.如果你的代码像你的问题一样缩进。这里有一个问题:
for event in pygame.event.get():
if event.type == pygame.QUIT: # This If is empty
self.playing = False # this
self.running = False # and this does not belong to that If
它必须按照缩进
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.playing = False
self.running = False