试图在pygame中制作一个玩家可移动的精灵。黑屏

时间:2014-06-24 07:30:28

标签: python pygame sprite

255我是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)

2 个答案:

答案 0 :(得分:0)

您的代码充满了错误:

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

修复此问题,您的程序运行正常。

答案 1 :(得分:-1)

1)。 第11行:你有

def _init_(self):

应该是

def __init__(self):

2)。 第65行:你有

clock.tick(40)

应该是

Clock.tick(40)

因为您在第50行将时钟命名为“时钟”

 Clock = pygame.time.Clock()

〜只是改变这些错误,你应该好好去!〜