Advertisement
stuppid_bot

rock, scissors, paper on python

Jan 22nd, 2016
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.35 KB | None | 0 0
  1. # И так сравниваем мы значения слева со значениями сверху. Например,
  2. # камень и камень - ничья (-1), камень и ножницы - побеждает камень (1),
  3. # камень и бумага - проигрыш: бумага накрывает камень (0).
  4. #
  5. # +---------+-----------------------------+
  6. # |         | Камень  | Ножницы | Бумага  |
  7. # |---------+---------+---------+---------|
  8. # | Камень  | -1      |  1      |  0      |
  9. # |---------+---------+---------+---------|
  10. # | Ножницы |  0      | -1      |  1      |
  11. # |---------+---------+---------+---------|
  12. # | Бумага  |  1      |  0      | -1      |
  13. # +---------+---------+---------+---------+
  14. import random
  15.  
  16. ROCK = 'rock'
  17. SCISSORS = 'scissors'
  18. PAPER = 'paper'
  19.  
  20. # Для игрока существует всего три выигрышных комбинации
  21. WINNING_MAP = {
  22.     # Камень ломает ножницы
  23.     ROCK: SCISSORS,
  24.     # Ножницы режут бумагу
  25.     SCISSORS: PAPER,
  26.     # Бумага накрывает камень
  27.     PAPER: ROCK
  28. }
  29.  
  30. CHOICES = list(WINNING_MAP.keys())
  31.  
  32. TIE = -1
  33. LOSE = 0
  34. WIN = 1
  35.  
  36. MESSAGES = {
  37.     TIE: 'tie',
  38.     LOSE: 'you lose',
  39.     WIN: 'you win'
  40. }
  41.  
  42.  
  43. def compare(choice_1, choice_2):
  44.     if choice_1 == choice_2:
  45.         return TIE
  46.     for choice_win, choice_lose in WINNING_MAP.items():
  47.         if choice_1 == choice_win and choice_2 == choice_lose:
  48.             return WIN
  49.     return LOSE
  50.  
  51.  
  52. def main():
  53.     while 1:
  54.         for i, v in enumerate(CHOICES):
  55.             print("{}: {}".format(i, v))
  56.         x = input("Enter item index or 'q' to exit: ")
  57.         x = x.strip()
  58.         if x.lower() == 'q':
  59.             return
  60.         try:
  61.             x = int(x)
  62.         except:
  63.             print("It's not a number")
  64.             continue
  65.         if x < 0 or x >= len(CHOICES):
  66.             print("Out of range")
  67.             continue
  68.         your_choice = CHOICES[x]
  69.         comp_choice = random.choice(CHOICES)
  70.         print("your {} vs comp {}: {}".format(
  71.                 your_choice,
  72.                 comp_choice,
  73.                 MESSAGES[compare(your_choice, comp_choice)]
  74.             )
  75.         )
  76.     return 0
  77.  
  78.  
  79. if __name__ == '__main__':
  80.     import sys
  81.     sys.exit(main())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement