Advertisement
NozdrachevNN

sweets_3v2

Jul 28th, 2022
2,114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.21 KB | None | 0 0
  1. # Создайте программу для игры с конфетами человек против человека.
  2. # Условие задачи: На столе лежит 2021 конфета. Играют два игрока делая ход друг после друга.
  3. # Первый ход определяется жеребьёвкой. За один ход можно забрать не более чем 28 конфет.
  4. # Тот, кто берет последнюю конфету - проиграл.
  5.  
  6. # a) Добавьте игру против бота
  7. # b) Подумайте как наделить бота ""интеллектом""
  8.  
  9.  
  10. # man vs smart bot
  11. import random
  12. from random import randint, choice
  13.  
  14. print(
  15.     '"Игра с конфетами"\n'
  16.     'В игре участвуют два игрока\n'
  17.     'Первый ход определяется жеребьевкой.\n'
  18.     'Игроки ходят, совершая ход друг после друга\n'
  19.     'Правила игры\n'
  20.     'У нас есть некоторое количество конфет\n'
  21.     'За один ход можно забрать не более определенного количества конфет, о котором мы договоримся\n'
  22.     'Тот, кому достанется последняя конфета - проиграл\n'
  23.     )
  24.  
  25. messages = ['Ваш ход брать конфеты', 'Возьмите конфеты',
  26.             'сколько конфет берем?', 'берите еще', 'Ваш ход']
  27. max_number_move = 0
  28.  
  29. def introduce_players():
  30.     player1 = input('Первый игрок, представьтесь\n')
  31.     player2 = 'SmartBOT'
  32.     print(f'Очень приятно, сегодня Вы играете с искуственным  {player2}')
  33.     return [player1, player2]
  34.  
  35. def sweets_game(players):
  36.     global max_number_move
  37.     total_sweets = int(input('Введите cколько всего у нас конфет:\n'))
  38.     max_number_move = int(input('Введите количество конфет, которое можно забрать за один ход:\n'))
  39.     first = int(input(f'{players[0]}, если хотите ходить первым, нажмите 1, если нет, любую другую клавишу\n'))
  40.     if first != 1:
  41.         first = 0
  42.     return [total_sweets, max_number_move, int(first)]
  43.  
  44. max_move = max_number_move
  45.  
  46. def game_player_vs_smart_bot(sweets, players, messages):
  47.     global max_number_move
  48.     count = sweets[2]
  49.  
  50.  
  51.     while sweets[0] > 0:
  52.         if sweets[0] == (max_number_move and sweets[0] < max_number_move and sweets[0] > 1):
  53.             move = sweets[0] -1
  54.             print(f'Я забираю {move}')
  55.  
  56.         elif not count % 2:
  57.             move = random.randint(1, sweets[1])
  58.             print(f'Я забираю {move}')
  59.         else:
  60.             print(f'{players[0]}, {choice(messages)}')
  61.             move = int(input())
  62.             if move > sweets[0] or move > sweets[1]:
  63.                 print(
  64.                     f'Можно взять не более {sweets[1]} конфет, у нас всего {sweets[0]} конфет')
  65.                 chance = 2
  66.                 while chance > 0:
  67.                     if sweets[0] >= move <= sweets[1]:
  68.                         break
  69.                     print(f'Попробуйте ещё раз, у Вас {chance} попытки')
  70.                     move = int(input())
  71.                     chance -= 1
  72.                 else:
  73.                     return print(f'Попыток не осталось. Game over!')
  74.         sweets[0] = sweets[0] - move
  75.         if sweets[0] > 0:
  76.             print(f'Осталось {sweets[0]} конфет')
  77.         else:
  78.             print('Все конфеты разобраны.')
  79.         count += 1
  80.     return players[not count % 2]
  81.  
  82.  
  83. players = introduce_players()
  84. sweets = sweets_game(players)
  85.  
  86. winer = game_player_vs_smart_bot(sweets, players, messages)
  87. if not winer:
  88.     print('У нас нет победителя.')
  89. else:
  90.     print(
  91.         f'Поздравляю! В этот раз победил {winer}! Ему достаются все конфеты!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement