3

私はPythonとPygameが初めてで、敵の上を飛んでいるプレイヤーの下を撃って、学んだことをテストする簡単なゲームを作り始めました。実行すると、文字列が必要ないというエラーが表示されます。以下のとおりです。

bgi="bg.png"     #BACKGROUND IMAGE
pi="man.png"     #PLAYER IMAGE
proji="proj.png" #PROJECTILE IMAGE

import pygame, sys            #Import
from pygame.locals import *   #Import

pygame.init() #Initialize

screen=pygame.display.set_mode((1000,600),0,32) #Display

background=pygame.image.load(bgi).convert() #Background
player=pygame.image.load(pi).convert_alpha() #Player

proji2=pygame.transform.rotate(proji, 180) #Rotate

x=0       #variables
y=0
mx=0
mv=0
projiy=0
player.pos=(x,y)

while True:                                   #Loop
    for event in pygame.event.get():
        if event.type==QUIT: #X Clicked
            pygame.quit()
            sys.exit()

        if event.type==KEYDOWN: #Key Press
            if event.key==K_a:
                mx=-1
            elif event.key==K_d:
                mx=+1
            elif event.key==K_s:
                screen.blit(proji2, player.pos)
                my=+1

        if event.type==KEYUP: #Key Release
            if event.key==K_a:
                mx=0
            elif event.key==K_d:
                mx=0
            elif event.key==K_s:
                my=0


    x+=mx
    projiy+=mv

    screen.blit(background, (0,0))  #Display
    screen.blit(player, (x,y))

    pygame.display.update()    #Update

エラーを見つけて、なぜ間違っているのか説明してくれる人はいますか? ありがとう!

4

2 に答える 2

2

「proj.png」をサーフェスに変換するのを忘れたようです。それでも、実際に開いたことのないファイルの文字列名です。

于 2012-10-21T23:09:56.563 に答える
0

コードの最初の 3 行を次のように置き換えます。

bgi=pygame.image.load("bg.png").convert_alpha()
pi=pygame.image.load("man.png").convert_alpha()
proji=pygame.image.load("proj.png").convert_alpha()

文字列を画面に表示することはできません。サーフェスのみです。pygame.image.load を使用してサーフェスに変換する必要があります。最後に .convert_alpha() を追加すると、フレームレートが大幅に向上しますが、絶対に必要というわけではありませんが、強くお勧めします。

楽しいパイゲーミングを!

于 2016-01-07T14:47:19.740 に答える