我正在使用 pygame 在 python 中创建一个乒乓球游戏,我希望在中间画一条虚线。我认为我有正确的代码来绘制虚线,但它不起作用。
for i in range(0, HEIGHT, HEIGHT//20):
if i % 2 == 1:
continue
pygame.draw.rect(win, WHITE, (WIDTH//2 - 5, i, 10, HEIGHT//20))
我尝试了这个并期望它画出一条虚线,但它没有。 这是我的完整代码:
import pygame
pygame.init()
WIDTH, HEIGHT = 1200, 800
NAME = "Pong"
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption(NAME)
WHITE = (255,255,255)
BLACK = (0,0,0)
PADDLE_WIDTH, PADDLE_HEIGHT = 10, 200
FPS = 60
class Paddle:
COLOUR = WHITE
VEL = 5
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height
def draw(self, win):
pygame.draw.rect(win, self.COLOUR, (self.x, self.y, self.width, self.height))
def move(self, up):
if up:
self.y -= self.VEL
else:
self.y += self.VEL
def draw(win, paddles):
win.fill(BLACK)
for paddle in paddles:
paddle.draw(win)
for i in range(0, HEIGHT, HEIGHT//20):
if i % 2 == 1:
continue
pygame.draw.rect(win, WHITE, (WIDTH//2 - 5, i, 10, HEIGHT//20))
pygame.display.update()
def handle_paddle_movement(keys, left_paddle, right_paddle):
if keys[pygame.K_w] and left_paddle.y - left_paddle.VEL > 0:
left_paddle.move(True)
if keys[pygame.K_s] and left_paddle.y + left_paddle.VEL + left_paddle.height < HEIGHT:
left_paddle.move(False)
if keys[pygame.K_UP] and right_paddle.y - right_paddle.VEL > 0:
right_paddle.move(True)
if keys[pygame.K_DOWN] and right_paddle.y + right_paddle.VEL + right_paddle.height < HEIGHT:
right_paddle.move(False)
def main():
run = True
clock = pygame.time.Clock()
left_paddle = Paddle(PADDLE_WIDTH, HEIGHT//2 - PADDLE_HEIGHT//2, PADDLE_WIDTH, PADDLE_HEIGHT)
right_paddle = Paddle(WIDTH - PADDLE_WIDTH*2, HEIGHT//2 - PADDLE_HEIGHT//2, PADDLE_WIDTH, PADDLE_HEIGHT)
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
break
keys = pygame.key.get_pressed()
handle_paddle_movement(keys, left_paddle, right_paddle)
draw(WIN, [left_paddle, right_paddle])
pygame.quit()
if __name__ == '__main__':
main()
最佳答案
这是您在每个循环中绘制的矩形:
# x y width height
(WIDTH//2 - 5, i, 10, HEIGHT//20)
您应该将 HEIGHT//20
替换为较小的值,这样每个矩形就不会那么高。尝试这样的事情:
pygame.draw.rect(win, WHITE, (WIDTH//2 - 5, i, 10, 20))
关于python - 如何使用 pygame 在 python 中绘制虚线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74978204/