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

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -