특정 키를 누르면 플레이어가 계속 움직여야합니다. 문제는 플레이어의 이미지가 한 번 (정의 된 키 중 하나를 누를 때) 움직이며 멈추는 것입니다. 여기에 코드를 입력하십시오.파이 게임에서 스프라이트 이동을 어떻게 만드나요?
import pygame
import sys
import os
import random
import time
from pygame.locals import *
pygame.init()
white = (255, 255, 255)
black = (0, 0, 0)
screenw = 800
screenh = 600
screen = pygame.display.set_mode((screenw, screenh))
pygame.display.set_caption("Game") # Here I create a display.
clock = pygame.time.Clock()
class Car(pygame.sprite.Sprite): # Here I create a class.
def __init__(self, color = black, width = 100, height = 100):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((width, height))
self.image.fill(color)
self.rect = self.image.get_rect()
def set_pos(self, x, y):
self.rect.x = x
self.rect.y = y
def set_img(self, filename = None):
if filename != None:
self.image = pygame.image.load(filename)
self.rect = self.image.get_rect()
def main():*I create a game loop
x_change = 0
y_change = 0
x = 0
y = 0
car_group = pygame.sprite.Group() # Make a group
player = Car()
player.set_img("images.jpg")
car_group.add(player)
exit = False
FPS = 60
while not exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -10
elif event.key == pygame.K_RIGHT:
x_change = 10
elif event.key == pygame.K_UP:
y_change = -10
elif event.key == pygame.K_DOWN:
y_change = 10
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_UP or event.type == pygame.K_DOWN:
x_change = 0
y_change = 0
x += x_change
y += y_change
screen.fill(white)
player.set_pos(x, y) # Blit the player to the screen
car_group.draw(screen)
clock.tick(FPS)
pygame.display.update()
main()
pygame.quit()
quit()
0120-13d 또한 파이 게임에서 문서를 읽으십시오 http://www.pygame.org/docs/ref/key.html – RNikoopour
'x + = ... y + = ...'한 들여 쓰기를 취소하면 네가 원하는 걸해라. – user2097159
첫눈에. 상황이 바뀌어 - while 루프에서 "pygame.event.pump"호출을 추가하십시오. 그 필요성은 event. * 함수 및 시스템에 대한 특정 호출에 따라 다릅니다. – jsbueno