【发布时间】:2016-02-09 21:57:01
【问题描述】:
我目前正在设计基本的 pygame 项目。实际上是随机项目,这些只是在普通白天出现在我脑海中的随机想法。其中之一是挂钟。我使用sin、cos 函数绘制时针、分针等。
作为这些函数的结果,我获得了浮点值。哪个pygame不允许。所以我round 和int() 在绘图函数中使用它们之前的所有值。这是有道理的,因为像素不能被部分填充。但是,我认为这会导致画不好。
上图是pygame模块绘制的时钟。如您所见,手柄有些倾斜。不直。
我也在codeskulptor 中实现了这一点。这是一个用于基本游戏(或任何图形)编程的 python2 环境。具有漂亮而清晰的功能,确实非常易于使用。我使用的浮点值不需要转换并直接接受。我不知道它如何处理它,但它显然更好。显然不只是四舍五入和整数(这个词是否存在?)值。让我给你看一下codeskuptor中绘制的时钟:
如您所见,边缘更加平滑。线条的末端不是倾斜的,而是笔直的。这显然是比 pygame 更好的绘图。
但是问题是,codeskuptor 并没有实现比初级知识更难的许多模块和内置功能。它也不支持众所周知的编译器(基本上不是 python 模块)。所以不能在电脑上工作,不能用py2exe、pyinstaller等编译。
所以我不想在 pygame 中实现所有这些,并像在 codeskulptor 中一样获得平滑的结果。也许是处理浮点数以进行绘图的更好方法。非常感谢您在这方面的任何想法或知识。
My code for codeskuptor(Does not show realtime)
代码没有提供适当的注释,因为它们只是深夜的乐趣而已。我会解释任何必要的部分。
【问题讨论】:
-
“整数”在“四舍五入”这个词中被准确捕捉到了 :) 你试过
aaline函数来绘制抗锯齿线吗? -
好吧,我的意思是 round(3.4) 给你 3.0 然后你需要 int() :) 让我检查 aaline
-
画圆也有点不对劲。就像你画一个粗圆圈一样。图纸上有空点,使它看起来很糟糕。也许是所有 pygame 绘图的事情。
-
根据the comments on draw_circle 判断,这是 pygame 的一个常见问题,并且它们没有内置的圆抗锯齿功能。 gfxdraw 模块确实有一个
aacircle方法,但它被标记为实验性的.. -
我猜 aaline 不允许设置宽度(这是一个巨大的缺点)。浏览器的 Codeskulptor 绘图方法在 javascript 中定义。也许 pygame 源代码可以从中受益并实现更好的结果。
标签: python python-2.7 integer pygame