私はキーを押したときにpygame.draw.rect()でシェイプを描画しようとしていますが、シェイプは別のキーやイベントが発生しても保持されません。船の移動が、私はそれが私がそれを撮影したときに移動し、その場所に滞在し、私はキーpygame.draw.rect()に貼り付け
import pygame
pygame.init()
display_width = 800
display_hight = 600
colors = {"black": (0, 0, 0), "white": (255, 255, 255), "green": (0, 255, 0), "red": (255, 0, 0), "blue": (0, 0, 255)}
ship_width = 75
ship_hight = 72
gameDisplay = pygame.display.set_mode((display_width, display_hight))
pygame.display.set_caption('test')
clock = pygame.time.Clock()
shipimg = pygame.image.load('D:\\index.png')
def ship(x, y):
gameDisplay.blit(shipimg, (x, y))
def Game_Loop():
x = (display_width * 0.41)
y = (display_hight * 0.8)
x_change = 0
fire_start_y = y - ship_hight
fire_start_x = x + (ship_width/2)
GameExit = False
while not GameExit:
if fire_start_y < 0:
fire_start_y = y - 30
for event in pygame.event.get():
if event.type == pygame.QUIT:
GameExit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
if event.key == pygame.K_RIGHT:
x_change = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_change = 0
x += x_change
gameDisplay.fill(colors["white"])
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_x:
pygame.draw.rect(gameDisplay, colors["green"], [fire_start_x, fire_start_y, 2, 10])
ship(x, y)
if x <= 0 or x >= display_width - ship_width:
x -= x_change
fire_start_y -= 5
fire_start_x = x + (ship_width/2)
pygame.display.flip()
clock.tick(60)
Game_Loop()
pygame.quit()
iが消失問題を管理するには、このコードを試してみました、そのリリース後の形状は文句を言わない表面に滞在したいが、それは作られましたそれ私がキーを押した後、それが今までloppingとして 悪化し
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_x:
pygame.draw.rect(gameDisplay, colors["green"], [fire_start_x, fire_start_y, 2, 10])
fire_start_x = x + (ship_width/2)
elif event.type == pygame.KEYUP:
if event.key == pygame.K_x:
pygame.draw.rect(gameDisplay, colors["green"], [fire_start_x, fire_start_y, 2, 10])
fire_start_x = x + (ship_width/2)
次のようになります弾丸)を撃つときに。 rectを上に動かすには、 'for'ループを使って' y'値を減らしてください。 – skrx
私はあなたに例を示すことができますが、本当にほんの数の弾丸を撃ってみたいのかどうかは分かりません。目標を詳細に記述してください。 – skrx