我想连续画一条可以通过按键转动的线

问题描述

我是编程新手,想通过在pygame中重新创建tron进行练习。但是我不知道如何画出我会连续前进并被按键按下的线条。预先感谢您的帮助

解决方法

欢迎使用StackOverflow!您应该先尝试一下,然后当某事不起作用时,再寻求帮助,这样我们就知道您已尝试过什么,并且不解释如何做您已经做过的事情。

尽管如此,您仍需要一个朝同一方向行驶的玩家,因此您需要一个变量来确定玩家在屏幕上的位置及其方向/速度

如此

player_pos = [200,200] #start position
player_vel = [1,0] #start moving to the right

现在在游戏循环中,您可以绘制玩家并更新位置

while running: #game loop
    pygame.draw.circle(screen,(255,0),player_pos,5) #draw the player
    
    player_pos[0] += player_vel[0] #update the x position of the player
    player_pos[1] += player_vel[1] #update the y position of the player

现在您想在按下键时更改方向,我使用wasd进行移动。

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # stop game loop
            running = False
            pygame.quit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_d:
                player_vel = [1,0] #move
            if event.key == pygame.K_a:
                player_vel = [-1,0]
            if event.key == pygame.K_w:
                player_vel = [0,-1]
            if event.key == pygame.K_s:
                player_vel = [0,1]

按此键可以使播放器真正快速移动,因此可以降低速度,我们可以限制fps

clock = pygame.time.Clock()

#in game loop

clock.tick(100) #limit it to 100 fps

所有代码都放在这里

import pygame

pygame.init()

screen = pygame.display.set_mode((500,500)) #setup the screen

player_pos = [200,200]  # start position
player_vel = [1,0]  # start moving to the right

clock = pygame.time.Clock()

screen.fill((255,255,255))
running = True
while running:  # game loop
    pygame.draw.circle(screen,5)  # draw the player

    player_pos[0] += player_vel[0]  # update the x position of the player
    player_pos[1] += player_vel[1]  # update the y position of the player

    clock.tick(100)

    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # stop game loop
            running = False
            pygame.quit()
            break
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_d:
                player_vel = [1,0]
            if event.key == pygame.K_a:
                player_vel = [-1,1]