pygame.围绕圆绘制矩形

问题描述 投票:0回答:3

我正在尝试在 pygame 中制作乒乓球游戏,但我不知道如何制作一个球圈,我可以使用 pygame.draw.circle 创建一个球圈到 pygame.Rect 对象中,这样我就可以使用 colliderect 函数并操纵球的位置。 例如,对于矩形,我可以做这样的事情:

rect = pygame.Rect(255, 255, 100, 100)
pygame.draw.rect(screen, yellow, rect)

然后当我更改 pygame.Rect 对象位置时,绘图基元位置也会更改。当我想画一个圆形而不是一个矩形时,如何才能达到相同的效果? 谢谢你。

python pygame
3个回答
3
投票

http://pygame.org/docs/ref/draw.html#pygame.draw.circle

pygame.draw.circle

围绕一个点画一个圆

pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect

如果你这样做:

circleRect = pygame.draw.circle(windowSurface, (0,0,0), (10, 10), 5)

Pygame 会给你圆所在的矩形,你可以操纵它。

希望对您有所帮助,祝您好运。


0
投票

一些非常酷的东西- pygame.draw.rect(屏幕, "红色", pygame.Rect(100, 100, 100, 100),100, 100) 这会画一个圆圈(无上限)


0
投票

这可能对您有帮助:

import pygame

pygame.init()

# variables

SW, SH = 600, 600
screen = pygame.display.set_mode((SW, SH))
clock = pygame.time.Clock()
fullscreen = False
running = True

# forever loop
while running:
    # running loop quit
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_p:
                if not fullscreen:
                    screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
                    fullscreen = True
                else:
                    screen = pygame.display.set_mode((SW, SH))
                    fullscreen = False

            # escape/out
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                exit()


    place = SW/2, SH/2
    size = 100
    mx, my = pygame.mouse.get_pos() # mouse pos
    rectsur = pygame.Surface((size * 1.7, size * 1.7)) # get surface for rect
    pr = rectsur.get_rect(center=place) # get rect
    pygame.draw.rect(screen, 'black', ((0, 0), (SW, SH)))

    # just here...
    if pr.collidepoint(mx, my):
        pygame.draw.circle(screen, 'white', place, size+5)
    pygame.draw.circle(screen, 'blue', place, size) # draw the circle on top


    SW, SH = (screen.get_width(), screen.get_height())
    pygame.display.update()
    clock.tick(60)

# fps cap (60)
pygame.quit()
© www.soinside.com 2019 - 2024. All rights reserved.