RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1169920
Accepted
Coffee inTime
Coffee inTime
Asked:2020-08-24 23:42:35 +0000 UTC2020-08-24 23:42:35 +0000 UTC 2020-08-24 23:42:35 +0000 UTC

如何在任意方向平滑移动圆,例如 110 度

  • 772

我有一个圈子:

pygame.draw.circle(sc, ORANGE, (x, y), r)

在每次迭代中,我将其更改x为or :y+1-1

x += 1
y += 1

这样我可以像这样移动它:

\|/
-o-
/|\

所以我可以将我的圆圈移动45, 90, 135,180度等。

实际上问题是,我怎样才能将我的圆圈移动 110 度?如果我的表面由像素(正方形)组成并且我只能移动,如示例所示?

\|/
-o-
/|\

x += 1.5我不能这样做,因为pygame.draw.circle它只接受整数。

这个话题对我来说很复杂,我很难形成一个问题,但我希望我能够正确解释。

完整代码:

import pygame

def main():
    WHITE = (255, 255, 255)
    ORANGE = (255, 150, 100)

    clock = pygame.time.Clock()
    FPS = 60

    WIN_WIDTH = 800
    WIN_HEIGHT = 600

    pygame.init()

    sc = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))

    # радиус и координаты круга
    r = 90
    x = WIN_WIDTH//2
    y = WIN_HEIGHT//2

    while 1:
        sc.fill(WHITE)
        pygame.draw.circle(sc, ORANGE, (x, y), r)
        pygame.display.update()

        for i in pygame.event.get():
            if i.type == pygame.QUIT:
                return

        x += 1
        y -= 1

        # Круг двигается на 135 градусов, а хотелось бы например на 110 градусов

        clock.tick(FPS)

if __name__ == "__main__":
    main()
python
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    S. Nick
    2020-08-25T00:48:53Z2020-08-25T00:48:53Z

    是的,您需要操纵值x和y

    在此处输入图像描述

    import pygame
    
    def main():
        WHITE = (255, 255, 255)
        BLACK = (0, 0, 0)
        GRAY = (125, 125, 125)
        LIGHT_BLUE = (64, 128, 255)
        GREEN = (0, 200, 64)
        YELLOW = (225, 225, 0)
        PINK = (230, 50, 230)
        ORANGE = (255, 150, 100)
    
        clock = pygame.time.Clock()
        FPS = 20                                                     # 60
    
        WIN_WIDTH = 800
        WIN_HEIGHT = 600
    
        pygame.init()
    
        sc = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
    
        # радиус и координаты круга
        r = 10                                                       # 90
        x = WIN_WIDTH//2
        y = WIN_HEIGHT//2
    
        while 1:
            sc.fill(WHITE)
            pygame.draw.circle(sc, ORANGE, (x, y), r)
            pygame.display.update()
            for i in pygame.event.get():
                if i.type == pygame.QUIT:
                    return
            x += 1 
            y -= 3                                                  # + 3        # <<<=====<
    
            # Круг двигается на 135 градусов, а хотелось бы например на 110 градусов
            # 90 + (90 - 45) = 135
            # 90 + (90 - x ) = 110   x = 180 - 110 = 70
    
            clock.tick(FPS)
    
    if __name__ == "__main__":
        main()
    

    在此处输入图像描述

    • 3
  2. КИТ KIT
    2020-08-24T23:58:41Z2020-08-24T23:58:41Z

    如果你想慢慢移动,并且只接受整数,那么降低 FPS。因此,要移动一定距离,可以使用 for 循环。例如

    for i in range(10):
        x += 1
    
    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5