即時通訊當我按下一個鍵時,試圖繪製一個形狀與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()
我想這代碼管理消失的問題,但它使更糟糕 因爲它曾經截枝後,我按一次鍵
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)
如果你只是想拍攝子彈,然後創建一個列表,並追加'pygame.Rect's(代表子彈)當你射擊。要向上移動矩形,使用'for'循環並減少它們的'y'值。 – skrx
我可以給你看一個例子,但是如果你真的只想拍一些子彈還不是很清楚。請詳細描述你的目標。 – skrx