我试图创建一个模拟石头,布,剪刀游戏,每个名字有两个敌人,所以我必须能够抓住所有的名字,无论位置的值。你知道吗
假设给我这个清单:
names = ["Kings", "Queens", "Jacks", "Jokers", "Masons", "Warriors", "Soldiers"]
我尝试使用以索引为值的逻辑,并收集索引的下两个值。每个索引将返回这些值的值。你知道吗
0 - 1, 2
1 - 2, 3
2 - 3, 4
3 - 4, 5
4 - 5, 6
5 - 6, 0
6 - 0, 1
所以“战士”会有敌人:士兵和国王
以下是我当前的实现:
def state_to_text(self):
names = ["Kings", "Queens", "Jacks", "Jokers", "Masons", "Warriors", "Soldiers"]
if self.state == 0:
return str(names[1], names[2])
if self.state == 1:
return str(names[2], names[3])
if self.state == 2:
return str(names[3], names[4])
if self.state == 3:
return str(names[4], names[5])
if self.state == 4:
return str(names[5], names[6])
if self.state == 5:
return str(names[6], names[1])
if self.state == 6:
return str(names[0], names[1])
谢谢你。你知道吗
正如评论所说,你可以使用模运算:
或者基本上重复列表末尾的前两个元素,这样您只需添加1或2就可以得到它们
只需将偏移量添加到
self.state
。这不会改变self.state
,因为它只是一个表达式,而不是赋值。你知道吗为了确保您不会离开数组的末尾,您可能需要添加一个
if
语句来检查self.state
是否设置为高于len(names) - 2
。你知道吗相关问题 更多 >
编程相关推荐