簡體   English   中英

Python:玩家運動

[英]Python: Player Movement

我一直在做一個學校項目,需要一些球員運動方面的幫助。 問題是我必須手動點擊箭頭/ WASD鍵才能使播放器一次移動一個位置。 如果我按住鍵,播放器將不會移動。 如何解決此問題?

注意-我使用的是過時的Python-Python 2.7.3

碼:

# Begin 'The Maze'
# Import modules

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

# Initialise Pygame + Clock

pygame.init()
mainClock = pygame.time.Clock()

# Window Setup

WINDOWHEIGHT = 480
WINDOWWIDTH = 600
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption('The Maze')

# Player Variables

player = pygame.Rect(50, 50, 50, 50)

# Colour Setup

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)

# Movement Variables

moveLEFT = False
moveRIGHT = False
moveUP = False
moveDOWN = False

MOVESPEED = 7

x,y = 0,0
charx,chary = 0,0
movex,movey = 0,0

# Game Loop & Events + Updates
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        # Change the keyboard variables
        if event.type == KEYDOWN:
            if event.key == K_LEFT or event.key == ord('a'):
                moveLEFT = True
                movex = -0.5
            if event.key == K_RIGHT or event.key == ord('d'):
                moveRIGHT = True
                movex = -0.5
            if event.key == K_UP or event.key == ord('w'):
                moveUP = True
                movey = 0.5
            if event.key == K_DOWN or event.key == ord('s'):
                moveDOWN = True
                movey = -0.5
        if event.type == KEYUP:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
            if event.key == K_LEFT or event.key == ord('a'):
                moveLEFT = False
                movex = 0
            if event.key == K_RIGHT or event.key == ord('d'):
                moveRIGHT = False
                movex = 0
            if event.key == K_UP or event.key == ord ('w'):
                moveUP = False
                movey = 0
            if event.key == K_DOWN or event.key == ord('s'):
                moveDOWN = False
                movey = 0


        # Background Setup
        windowSurface.fill(WHITE)
        # Player Setup + Updating Screen
        if moveDOWN and player.bottom < WINDOWHEIGHT:
            player.top += MOVESPEED
        if moveUP and player.top > 0:
            player.top-= MOVESPEED
        if moveLEFT and player.left > 0:
            player.left -= MOVESPEED
        if moveRIGHT and player.right < WINDOWWIDTH:
            player.right += MOVESPEED
        pygame.draw.rect(windowSurface, GREEN, player)
        pygame.display.update()
        mainClock.tick(40)

謝謝!

# Background Setup完成該工作后,對代碼塊進行簡單的確定。

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        # Change the keyboard variables
        if event.type == KEYDOWN:
            if event.key == K_LEFT or event.key == ord('a'):
                moveLEFT = True
            elif event.key == K_RIGHT or event.key == ord('d'):
                moveRIGHT = True
            elif event.key == K_UP or event.key == ord('w'):
                moveUP = True
            elif event.key == K_DOWN or event.key == ord('s'):
                moveDOWN = True
        elif event.type == KEYUP:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
            elif event.key == K_LEFT or event.key == ord('a'):
                moveLEFT = False
            elif event.key == K_RIGHT or event.key == ord('d'):
                moveRIGHT = False
            elif event.key == K_UP or event.key == ord ('w'):
                moveUP = False
            elif event.key == K_DOWN or event.key == ord('s'):
                moveDOWN = False

         # <-- Dedent

    # Background Setup
    windowSurface.fill(WHITE)
    # Player Setup + Updating Screen
    if moveDOWN and player.bottom < WINDOWHEIGHT:
        player.top += MOVESPEED
    if moveUP and player.top > 0:
        player.top-= MOVESPEED
    if moveLEFT and player.left > 0:
        player.left -= MOVESPEED
    if moveRIGHT and player.right < WINDOWWIDTH:
        player.right += MOVESPEED
    pygame.draw.rect(windowSurface, GREEN, player)
    pygame.display.update()
    mainClock.tick(40)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM