これは私が作っている最初のパイゲームです。なぜ私のキャラクターはpygame/pythonでジャンプしません
私は基本的な四角形/ブロックで2人の戦闘ゲームを作ろうと計画しています。
私は今、最初のキャラクターへのジャンプを実装しようとしています。私の目ではすべてのロジックが正しいように見えますが、現時点でエラーはありません。しかし、ジャンプするためにw
を押すと、何も起こりません!
すべてのお役に立ちました。 (PS私は私のスクリプトには、クラスを持っていないなぜあなたは迷っているならば、私はクラスのまわりで私の頭を取得するように見えることができないと、彼らは私をたくさん混乱:P)のおかげで、ここに私のコードだ:
import pygame
pygame.init()
#Sets up 8 bit colours
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
lightblue = (180,235,255)
grassgreen =(20,200,50)
#Sets up pygame window
gameDisplay = pygame.display.set_mode((1000,600))
pygame.display.set_caption('Block Fighter')
gameExit = False
#Variables
x = 50
y = 480
x_change = 0
y_change = 0
clock = pygame.time.Clock()
#Main Game Loop
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
x_change = -5
if event.key == pygame.K_d:
x_change = 5
if event.key == pygame.K_w:
y_change = -5
if event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
x_change = 0
if y <= 480:
onGround = False
else:
onGround = True
if onGround == False:
y_change = 5
if onGround == True:
y_change = 0
x += x_change
y += y_change
gameDisplay.fill(lightblue)
pygame.draw.rect(gameDisplay, grassgreen, [1000,600,-1000,-100])
pygame.draw.rect(gameDisplay, black, [x,y,20,20])
pygame.display.update()
clock.tick(40)
pygame.quit()
quit()
間違いなく、クラスを理解するための努力をしてください。 Python(あるいは実際にはほとんどの言語)を書くつもりなら、それはとても重要です。また、オブジェクト指向プログラミングがどのように機能するかについての一般的な理解を向上させ、すべてを手助けします。 – Jeff
実際の問題としては、 'y_change = -5'という行の後に' print( "changed") 'をコード内に置くと、wを押すと" changed "が表示されますか? –
@Jake Biggs:Johanがあなたの質問にちょうど答えました。 :D –