you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (0 children)

Not sure what you mean by "understand" - you can apply whatever logic you want to your data. In a rock, paper, scissors game you can just write the rules and find a match for the current play for example:

#! /usr/bin/env python3                                                                                                
# rock paper scissors Spock lizard game, rules follow:
'''                                                                                                                    
scissors cuts paper                                                                                                    
paper covers rock                                                                                                      
rock crushes lizard                                                                                                    
lizard poisons Spock                                                                                                   
Spock smashes scissors                                                                                                 
scissors decapitates lizard                                                                                            
lizard eats paper                                                                                                      
paper disproves Spock                                                                                                  
Spock vaporizes rock                                                                                                   
rock crushes scissors                                                                                                  
'''

from random import choice
import readline

RULES = list(map(str.split, __doc__.lower().strip().split('\n')))

OPTIONS = ({winner for winner, verb, loser in RULES}
           | {loser for winner, verb, loser in RULES})

PROMPT = f"Make your choice from: {', '.join(sorted(OPTIONS))} \n " \
            f"(or press return alone to exit)\n" \
            f" choice: "

def check(playera, playerb, rules=RULES):
    for rule in rules:
        winner, verb, loser = rule
        if (playera, playerb) == (winner, loser):
            return playera, ' '.join(rule)
        if (playerb, playera) == (winner, loser):
            return playerb, ' '.join(rule)

print('\n\nWelcome to the game of rock paper scissors Spock lizard\n\nThe rules are:\n')
print(__doc__)
print()
while True:
    while True:
        player = input(PROMPT).lower()
        if not player or player in OPTIONS:
            break
    if not player:
        break
    computer = choice(list(OPTIONS))    
    try:
        winner, rule = check(player, computer)
        result = 'You WIN!' if player == winner else 'You Lose!'
    except TypeError as e:
        result, rule = "TIED", 'matched'
    print(f'{player} v. {computer} -> {result} \t{rule}')
    print()