我正在Pygame中基于https://www.youtube.com/watch?v=zH_omFPqMO4制作一个俄罗斯方块克隆,我需要知道如何转动
struct Point
{int x,y;} a[4],b[4];
从C++转换成Python。
我正在Pygame中基于https://www.youtube.com/watch?v=zH_omFPqMO4制作一个俄罗斯方块克隆,我需要知道如何转动
struct Point
{int x,y;} a[4],b[4];
从C++转换成Python。
4条答案
按热度按时间z31licg01#
因此,C++代码
struct point {int x, y} a[4], b[4]
创建了一个新的structure
,它是一个包含两个整型x
和y
的数据类型。a[4]
和b[4]
是两个创建的point
类型的数组,每个数组的大小为4
。要在python中复制
structure
,我们可以使用class
示例:
7fhtutme2#
首先,我要重复评论中所说的话:不要试图直接翻译。用Python编写你的项目。Python的工作方式不同。在C++中,你处理内存,并证明什么是安全的内存。在Python中,你直接处理高层的类。它们处于不同的抽象层,试图直接翻译将导致非常笨拙和僵硬的代码。
无论如何,在Python中用类编写
Point
类型的方法是但是这还有很多需要改进的地方:首先,点在相等性方面是不可比较的;其次,如果你试图把它们打印出来,你会得到一些笨拙的Python指针式语法;相反,对于基本的结构式数据,你需要dataclasses。
现在,您可以免费获得等式和字符串化,以及一个漂亮的构造函数和一个用于创建类似示例的
replace
函数。(这是一个很棒的主意,我强烈推荐),然后你可以抛出一个frozen=True
作为dataclass
装饰器的参数,这样你就可以免费得到散列了,这意味着你可以使用点作为字典的键。除此之外,您可能希望像
__add__
那样实现magic methods,以便可以在Point
类型上使用+
这样的运算符(读者要注意:我链接的那篇文章中有一些Python 2中过时的内容。一定要阅读附录2以了解它们之间的差异,但尽管年代久远,它仍然是对各种神奇方法的最佳总结之一)4urapxun3#
这里我们使用列表解析来创建大小为4的列表,每个元素都初始化为Point(0,0)
0h4hbjxa4#
那么C++中类就是结构化的?
是
?