2

输入这个 pygame 代码进行动画测试,我期待一些错误,但程序根本不会执行:

第一部分导入模块

import sys
import os
import pygame
from pygame.locals import *

初始化 pygame

pygame.init ()

加载精灵图像文件的类,然后加载声音

class Processes (object):
    @staticmethod
    def load_image (imagefile):
        image = pygame.image.load (imagefile)
        return image, image.get_rect ()

精灵类

class Sprite (pygame.sprite.Sprite):
    def __init__ (self):
        pygame.sprite.Sprite.__init__ (self)
        self.image, self.rect = Processes.load_image ('frame1.jpg')

简单的动画功能——让生活更轻松

    def animation (self, key_event):
        if key_event == K_DOWN:
            self.rect.centery = self.rect.centery - 10

        if key_event == K_UP:
            self.rect.centery = self.rect.centery + 10

        if key_event == K_RIGHT:
            self.rect.centerx = self.rect.centerx + 10

        if key_event == K_LEFT:
           self.rect.centerx = self.rect.centerx - 10

        return self.rect

主功能:

def main ():
    mecha = Sprite ()
    allsprites = pygame.sprite.RenderPlain ((mecha, ))

游戏循环:

while True:
    Surface = pygame.display.set_mode ((400, 400))
    pygame.display.set_caption ('Animation Test')

    for event in pygame.event.get ():
        if event.type == KEYDOWN:
            mecha.animation (event.key)

        if event.type == QUIT:
            pygame.quit ()
            sys.exit (0)


    allsprites.draw (Surface)
    pygame.display.update ()

这是实际的“错误”

C:/Khan's Family/python/Bunnies Vs. Zombies/BvZ_Animtest.py 

现在这里是输出:

(Nothing)

C:/Khan's Family/python/Bunnies Vs. Zombies

没有输出,这是我的问题。

4

2 回答 2

0

抱歉,我犯了定义“主”函数的愚蠢错误,但从未执行它。多谢你们。

于 2012-11-02T20:15:34.430 回答
0

当 pygame 出现错误时会发生什么,这就是我认为您所说的“不会执行”的意思。你必须点击 x 按钮来关闭它,错误将显示在 shell 中。在这个特定的程序上,错误是:

File "C:/Python32/projects/deletable.py", line 45, in <module>
    allsprites.draw (Surface)
NameError: name 'allsprites' is not defined

你可以自己处理这些问题,但这就是发生的事情。

于 2012-11-02T18:57:36.143 回答