我正在用Python写一个类似流氓的游戏,并定义了我的Tile
类。瓷砖可以是封闭的,墙壁或地板。我希望能够按照
self.state = Blocked
类似于使用布尔值的方式(但有三个值)。
我有一个很好的方法来定义数据类型以使我能够这样做吗?
由于
答案 0 :(得分:4)
答案 1 :(得分:0)
class State:
Blocked=1
Wall=2
Floor=3
some = State.Blocked
答案 2 :(得分:0)
使用位标志。 您可以搜索谷歌以获取更多信息,最简单的术语是您可以以二进制形式存储布尔值,因为True / False是一个位,您可以使用4位或1个字节来存储4个不同的布尔值。
所以,请这样说:
python语法:
a = 0x0
#[这是位标志或二进制数<class 'int'>
或python27 <type 'int'>
中的python表示形式]
二进制表示:
0x0 = 000
[零为零,二元变量的长度无关紧要]
0x1 = 001
[1]
0x2 = 010
[2]
0x4 = 100
[4]
所以这里我们有3个或更多不同的布尔位置我们可以检查,因为000000000001 == 001 == 01 == 0x1
但是在位标志中
0x3 = 011
[3 = 2 + 1]
0x5 = 101
[5 = 4 + 1]
0x6 = 110
[6 = 4 + 2]
0x7 = 111
[7 = 4 + 2 + 1]
最简单的条款
我会给你一个比较语法&
,这意味着AND,这意味着&#39; 1&#39;位标志必须相同。因此实际上,0x1和0x2 == 0x2将为假,因为001&amp; 010没有&#39; 1&#39;在同一个地方
所以如果你想检查位标志中的两种类型,只需将它们加在一起并检查,语法如上
例如:0x3&(0x1+0x2)==(0x1+0x2)
我希望这会有所帮助。快乐的谷歌搜索。