2016-08-06 22 views
-2

私はPygameを使ってPythonでRPGを作っています。私の最初のステップは、私の主人公を作り、それを動かすことです。しかし、そうではありません。私のblittedキャラクターがパイゲームで動かないのはなぜですか?

import pygame,random 
from pygame.locals import * 

pygame.init() 

black = (0,0,0) 
white = (255,255,255) 
red = (255,0,0) 
blue = (0,255,0) 
green = (0,0,255) 

global screen, size, winWidth, winHeight, gameExit, pressed, mainChar, x, y 
size = winWidth,winHeight = (1350,668) 
screen = pygame.display.set_mode(size) 
pygame.display.set_caption("RPG") 
gameExit = False 
pressed = pygame.key.get_pressed() 
mainChar = pygame.image.load("Main Character.png") 
x,y = 655,500 

def surroundings(): 
    stoneTile = pygame.image.load("Stone Tile.png") 
    stoneTileSize = stoneTile.get_rect() 

def move(): 
    if pressed[K_LEFT]: x -= 1 
    if pressed[K_RIGHT]: x += 1 
    if pressed[K_UP]: y -= 1 
    if pressed[K_DOWN]: y += 1 

def player(): 
    move() 

    screen.fill(black) 
    screen.blit(mainChar,(x,y)) 

while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      gameExit = True 

    surroundings() 
    move() 
    player() 

    pygame.display.update() 

pygame.quit() 
quit() 

は、あまりにも、私を助け、それが動作していない理由を説明してください:これは私のコードです。ありがとう。

+0

あなたはそのコードを実行しようとしましたか? – Matthias

答えて

1

あなたはその移動の関数内で使用している

while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      gameExit = True 

    pressed = pygame.key.get_pressed() 

    surroundings() 
    move() 
    player() 

    pygame.display.update() 

値xとyは、あなたがいることをインタプリタに伝える必要がありますローカル変数として扱われている各ランであなたの押された変数を更新する必要がありますそれらはグローバル変数です

def move(): 
    global x,y 
    if pressed[K_LEFT]: x -= 1 
    if pressed[K_RIGHT]: x += 1 
    if pressed[K_UP]: y -= 1 
    if pressed[K_DOWN]: y += 1 
関連する問題