python - Getting next two indexes regardless of current index -
i trying create mock rock, paper, scissors game each name having 2 enemies, must able grab values of names regardless of position.
say given list:
names = ["kings", "queens", "jacks", "jokers", "masons", "warriors", "soldiers"]
and trying use logic indexes being values , gather next 2 values of indexes. each index return these values.
0 - 1, 2 1 - 2, 3 2 - 3, 4 3 - 4, 5 4 - 5, 6 5 - 6, 0 6 - 0, 1
so 'warriors' have enemies of: soldiers , kings
below being current implementation:
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])
thank you.
as comment said can use modular arithmetic:
def state_to_text(self): names = ["kings", "queens", "jacks", "jokers", "masons", "warriors", "soldiers"] names_length = len(names) return str(names[(self.state + 1) % names_length], names[(self.state + 2) % names_length])
or repeat first 2 elements in end of list can them add 1 or 2
def state_to_text(self): names = ["kings", "queens", "jacks", "jokers", "masons", "warriors", "soldiers", "kings", "queens"] return str(names[self.state + 1], names[self.state + 2])
Comments
Post a Comment