试图让玩家在pygame中移动精灵。空白屏幕

2024-04-20 12:57:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python/pygame的新手。我试图使一个球员移动精灵,但这个代码只是带来了一个黑色的pygame窗口没有精灵。它甚至不应该是黑色的,因为我写了窗户应该是白色的。请帮帮我。非常感谢。你知道吗

 import pygame
 import os, sys
 import itertools
 import pygame
 import random

 pygame.init()
 screen = pygame.display.set_mode((640,400))

 class killer(pygame.sprite.Sprite):
    def _init_(self):
            pygame.sprite.Sprite.__init__(self)
            self.screen = screen
            self.image = pygame.image.load("player.png")
            self.image = self.image.convert()
            self.rect = self.image.get_rect()
            self.rect.center = (320, 400)
            self.dx = 0
            self.dy = 0
            self.x = self.rect.centerx
            self.y = self.rect.centery

    def update(self):
            self.CheckBounds()

    def checkBounds(self):
            screen = self.screen
            if self.x > screen.get_width():
                    self.x = screen.get_width()
            if self.x < 0:
                    self.x = 0

    def handle_keys(self):
            key = pygame.key.get_pressed()
            dist = 1
            if key[pygame.K_DOWN]: # down key
                self.y += dist # move down
            elif key[pygame.K_UP]: # up key
                self.y -= dist # move up
            if key[pygame.K_RIGHT]: # right key
                self.x += dist # move right
            elif key[pygame.K_LEFT]: # left key
                self.x -= dist # move left

    def draw(self,surface):
            surface.blit(self.image, (self.x, self.y))


 ZK = killer()
 Clock = pygame.time.Clock()

 running = True
 while running:    
 for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit() 
        running = False

    ZK.handle_keys()

    screen.fill((255,255,255))
    ZK.draw(screen) 
    pygame.display.update() 

    clock.tick(40)

Tags: keyrectimageimportselfgetmoveif
2条回答

1.) 第11行:你有

def _init_(self):

应该是的

def __init__(self):

2.) 第65行:你有

clock.tick(40)

应该是的

Clock.tick(40)

因为你在第50行把你的钟命名为“钟”

 Clock = pygame.time.Clock()

~只要改变这些错误,你就可以走了!~

您的代码充满了错误:

1.)压痕断裂
2.)killer从不运行初始值设定项,因为您将其命名为_init_,而不是__init__
3.)没有名为clock的变量,因为您将其命名为Clock
4.)当您关闭窗口时,将引发一个错误,因为视频系统关闭后将调用pygame.key.get_pressed(因为您之前调用了pygame.quit

解决这个问题,你的程序就会正常运行。你知道吗

相关问题 更多 >