我目前正在设计基本的游戏项目。随机的项目实际上,只是一些随机的想法,在平常的白天突然出现在我的脑海里。其中一个是挂钟。在这里,我使用sin
,cos
函数来绘制时针、分针等。。在
作为这些函数的结果,我得到了浮点值。pygame不允许。因此,在绘图函数中使用它们之前,我round
和int()
所有值。这是有意义的,因为像素不能被部分填充。但是,我认为这会导致画画不好。在
上图是pygame模块绘制的时钟。你看把手有点倾斜。不直。在
我还在codeskulptor中实现了这一点。这是一个python2环境,用于基本游戏(或任何图形)编程。功能清晰,使用方便。我使用的浮点值不需要转换,直接接受。我不知道它是如何处理的,但它显然更好。显然不仅仅是取整和整型(这个词存在吗?)价值观。让我给你看用codeskuptor绘制的时钟:
如您所见,边缘更加平滑。线条的末端不是倾斜的,而是笔直的。很明显这是一幅比皮游戏画更好的画。在
但问题是,codeskuptor没有实现比初级知识更难的许多模块和内置函数。它也不支持著名的编译器(基本上不是python模块)。所以不能在计算机上工作,也不能用py2exe,pyinstaller这样编译。在
所以我不想在pygame中实现所有这些,并像在codeskulptor中那样获得平滑的结果。也许是处理绘图用浮点的更好方法。任何在这方面的想法或知识将不胜感激。在
My code for codeskuptor(Does not show realtime)
代码没有提供适当的注释,因为它们只是一个深夜的乐趣。我会解释任何必要的部分。在
综上所述,您注意到的问题是抗锯齿。对于线,pygame提供了^{} 函数,可以用来绘制一条线。不幸的是,这并不支持不同的厚度。潜在的解决方法可能是绘制一条厚度正确的线,并在其任一侧绘制} (来自
aaline
,或者使用^{gfxdraw
模块)绘制线。在标准的} 。在
draw
模块不包括抗锯齿圆,但您可以使用gfxdraw
中的另一个函数来绘制抗锯齿圆^{需要注意的是,
gfxdraw
模块被标记为“实验性的”,因此不能保证这些函数在pygame的不同版本中保持不变。但对于你的快速项目,这可能不是一个问题。在至于CodeSkulptor,他们在HTML5
<canvas>
元素上呈现行,根据this question默认情况下启用了抗锯齿。在相关问题 更多 >
编程相关推荐