私はPygameでAsteroidzのゲームを作っています(これは初めてPygameを使用しています)。そしてこのイントロ画面を作ることを試みています。彼らはゲームに入っても動作しません。イメージファイルは、黒の背景にちょうど白い三角形である(それはプログラムと同じ場所にいた場合、私はディレクトリを指定する必要がありますか?)Pygame Asteroidzのプログラムの問題
ここでは、コードです:すべての
import pygame
import sys
class Player:
def __init__(self):
self.colour = (255, 255, 255)
self.x = 390
self.y = 290
self.shape = pygame.image.load('C:/Users/John Birch/Desktop/Python/playerimg.jpg')
def Input(self):
key = pygame.key.get_pressed()
dist = 3
if key[pygame.K_DOWN]:
self.y += dist
elif key[pygame.K_UP]:
self.y -= dist
elif key[pygame.K_LEFT]:
self.x -= dist
elif key[pygame.K_RIGHT]:
self.x += dist
class Menu:
def __init__(self):
self.score = 0
self.level = 0
self.font = pygame.font.SysFont('freesansbold', 60)
def Start(self):
start = menu.font.render("Press space to begin!", 1, (255, 255, 255))
return start
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
player = Player()
menu = Menu()
pygame.display.set_caption('Asteroidz')
if __name__ == '__main__':
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit()
elif event.type == pygame.K_SPACE:
while True:
player.Input()
screen.blit(player.shape, (player.x, player.y))
clock.tick(40)
pygame.display.update()
start = menu.Start()
screen.blit(start, (190, 280))
pygame.display.update()
のみ使用してください'while'ループと' space'をクリックしたときにこのループを離れると、ゲームのためだけに第2の 'while'ループが作成されます。 http://imgur.com/MT7tZ4s – furas
のテキストを '__init__'で1回だけレンダリングし、後で' while'ループでblitしてください。関数にはlower_case、クラス名には 'CamelCase'を使用してください。参照:[PythonコードのPEP 8スタイルガイド](https://www.python.org/dev/peps/pep-0008/) – furas
'pygame.Rect()'について読む - オブジェクトを保持すると便利ですサイズと位置。また、他のオブジェクトやマウスとの衝突を確認することもできます。 – furas