Pygame绘制行为

2024-09-30 04:41:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在设计基本的游戏项目。随机的项目实际上,只是一些随机的想法,在平常的白天突然出现在我的脑海里。其中一个是挂钟。在这里,我使用sincos函数来绘制时针、分针等。。在

作为这些函数的结果,我得到了浮点值。pygame不允许。因此,在绘图函数中使用它们之前,我roundint()所有值。这是有意义的,因为像素不能被部分填充。但是,我认为这会导致画画不好。在

pygame clock

上图是pygame模块绘制的时钟。你看把手有点倾斜。不直。在

我还在codeskulptor中实现了这一点。这是一个python2环境,用于基本游戏(或任何图形)编程。功能清晰,使用方便。我使用的浮点值不需要转换,直接接受。我不知道它是如何处理的,但它显然更好。显然不仅仅是取整和整型(这个词存在吗?)价值观。让我给你看用codeskuptor绘制的时钟:

codeskuptor clock

如您所见,边缘更加平滑。线条的末端不是倾斜的,而是笔直的。很明显这是一幅比皮游戏画更好的画。在

问题是,codeskuptor没有实现比初级知识更难的许多模块和内置函数。它也不支持著名的编译器(基本上不是python模块)。所以不能在计算机上工作,也不能用py2exe,pyinstaller这样编译。在

所以我不想在pygame中实现所有这些,并像在codeskulptor中那样获得平滑的结果。也许是处理绘图用浮点的更好方法。任何在这方面的想法或知识将不胜感激。在

My code for codeskuptor(Does not show realtime)

My code for pygame

代码没有提供适当的注释,因为它们只是一个深夜的乐趣。我会解释任何必要的部分。在


Tags: 模块项目函数游戏绘图formy绘制
1条回答
网友
1楼 · 发布于 2024-09-30 04:41:31

综上所述,您注意到的问题是抗锯齿。对于线,pygame提供了^{}函数,可以用来绘制一条线。不幸的是,这并不支持不同的厚度。潜在的解决方法可能是绘制一条厚度正确的线,并在其任一侧绘制aaline,或者使用^{}(来自gfxdraw模块)绘制线。在

标准的draw模块不包括抗锯齿圆,但您可以使用gfxdraw中的另一个函数来绘制抗锯齿圆^{}。在

需要注意的是,gfxdraw模块被标记为“实验性的”,因此不能保证这些函数在pygame的不同版本中保持不变。但对于你的快速项目,这可能不是一个问题。在

至于CodeSkulptor,他们在HTML5 <canvas>元素上呈现行,根据this question默认情况下启用了抗锯齿。在

相关问题 更多 >

    热门问题