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

エラーが発生したときにpygameで何が起こるかは、「実行しない」という意味だと思います。xボタンをスパムクリックして閉じる必要があり、シェルにエラーが表示されます。この特定のプログラムでは、エラーは次のとおりです。

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 に答える
0

申し訳ありませんが、「main」関数を定義するというばかげた間違いを犯しましたが、決して実行しませんでした。みんなありがとう。

于 2012-11-02T20:15:34.430 に答える