Advertisement
NozdrachevNN

sweets_all

Jul 29th, 2022
726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.06 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. sweets = 0
  28. max_number_move = 0
  29. player1 = ''
  30. player2 = ''
  31. first = random.randint(0, 1)
  32. def introduce_players():
  33.     global player1
  34.     global player2
  35.     player1 = input('Первый игрок, представьтесь:\n')
  36.     player2 = input('Второй игрок, представьтесь:\n')
  37.     print(f'Очень приятно!\n'
  38.           f'Битва между {player1} и {player2} началась!')
  39.     return [player1, player2]
  40.  
  41. def introduce_players_Bot():
  42.     global player1
  43.     global player2
  44.     player1 = input('Первый игрок, представьтесь:\n')
  45.     player2 = 'BOT'
  46.     print(f'Очень приятно!\nCегодня Вы играете с {player2}!')
  47.     return [player1, player2]
  48.  
  49. def introduce_players_smartBot():
  50.     global player1
  51.     global player2
  52.     player1 = input('Первый игрок, представьтесь:\n')
  53.     player2 = 'SmartBOT'
  54.     print(f'Очень приятно!\nCегодня Вы играете со {player2}!')
  55.     return [player1, player2]
  56.  
  57. def sweets_game(players):
  58.     global sweets
  59.     global max_number_move
  60.     global player1
  61.     global player2
  62.     sweets = int(input('Введите cколько всего у нас конфет:\n'))
  63.     max_number_move = int(input('Введите количество конфет, которое можно забрать за один ход:\n'))
  64.     first = int(random.randint(0, 1))
  65.     if first == 1:
  66.         print(f'\nПервый ход определён жеребьёвкой, начинает {player1}!')
  67.     else:
  68.         print(f'\nПервый ход определён жеребьёвкой, начинает {player2}!')
  69.  
  70.     players[0] = players[first-1]
  71.     return [sweets, max_number_move, int(first)]
  72.  
  73. #max_move = max_number_move
  74.  
  75. ###friends_vs_friends
  76. def game_friends_vs_friends(sweets, players, messages):
  77.     global first
  78.     count = 0
  79.     while sweets[0] > 0:
  80.         move = int(input(f'{players[first%2]}, {random.choice(messages)}:'))
  81.         if move > sweets[0] or move > max_number_move:
  82.             print(f'Можно взять не более {max_number_move} конфет, у нас всего {sweets[0]} конфет')
  83.             chance = 2
  84.             while chance > 0:
  85.                 if sweets[0] >= move <= max_number_move:
  86.                     break
  87.                 print(f'Попробуйте ещё раз, у Вас {chance} попытки')
  88.                 move = int(input())
  89.                 chance -= 1
  90.             else:
  91.                 return print(f'Попыток не осталось. Game over!')
  92.         sweets[0] = sweets[0] - move
  93.         if sweets[0] > 0:
  94.             print(f'Осталось {sweets[0]} конфет')
  95.         else:
  96.             print('Все конфеты разобраны.')
  97.         first += 1
  98.         count += 1
  99.     return players[first % 2]
  100. ###friends_vs_friends
  101.  
  102. ### Bot
  103. def game_player_vs_bot(sweets, players, messages):
  104.     global max_number_move
  105.     count = sweets[2]
  106.  
  107.     while sweets[0] > 0:
  108.         if not count % 2:
  109.             move = random.randint(1, sweets[1])
  110.             print(f'BOT: Я забираю {move} шт.')
  111.         else:
  112.             print(f'{players[0]}, {choice(messages)}')
  113.             move = int(input())
  114.             if move > sweets[0] or move > sweets[1]:
  115.                 print(
  116.                     f'Можно взять не более {sweets[1]} конфет, у нас всего {sweets[0]} конфет')
  117.                 chance = 2
  118.                 while chance > 0:
  119.                     if sweets[0] >= move <= sweets[1]:
  120.                         break
  121.                     print(f'Попробуйте ещё раз, у Вас {chance} попытки')
  122.                     move = int(input())
  123.                     chance -= 1
  124.                 else:
  125.                     return print(f'Попыток не осталось. Game over!')
  126.         sweets[0] = sweets[0] - move
  127.         if sweets[0] > 0:
  128.             print(f'Осталось {sweets[0]} конфет')
  129.         else:
  130.             print('Все конфеты разобраны.')
  131.         count += 1
  132.     return players[not count % 2]
  133. ### Bot
  134.  
  135. ### SmartBot
  136. def game_player_vs_smart_bot(sweets, players, messages):
  137.     global max_number_move
  138.     count = sweets[2]
  139.  
  140.     while sweets[0] > 0:
  141.         if sweets[0] == max_number_move:
  142.             move = sweets[0] -1
  143.             print(f'SmartBOT: Я забираю {move} шт.')
  144.         elif (sweets[0] < max_number_move and sweets[0] > 1):
  145.             move = sweets[0] - 1
  146.             print(f'SmartBOT: Я забираю {move} шт.')
  147.  
  148.         elif not count % 2:
  149.             move = random.randint(1, sweets[1])
  150.             print(f'SmartBOT: Я забираю {move} шт.')
  151.         else:
  152.             print(f'{players[0]}, {choice(messages)}')
  153.             move = int(input())
  154.             if move > sweets[0] or move > sweets[1]:
  155.                 print(
  156.                     f'Можно взять не более {sweets[1]} конфет, у нас всего {sweets[0]} конфет')
  157.                 chance = 2
  158.                 while chance > 0:
  159.                     if sweets[0] >= move <= sweets[1]:
  160.                         break
  161.                     print(f'Попробуйте ещё раз, у Вас {chance} попытки')
  162.                     move = int(input())
  163.                     chance -= 1
  164.                 else:
  165.                     return print(f'Попыток не осталось. Game over!')
  166.         sweets[0] = sweets[0] - move
  167.         if sweets[0] > 0:
  168.             print(f'Осталось {sweets[0]} конфет')
  169.         else:
  170.             print('Все конфеты разобраны.')
  171.         count += 1
  172.     return players[not count % 2]
  173. ### SmartBot
  174.  
  175. mode_game = input('Выберите режим игры:\n'
  176.                   '1 - игра с другом\n'
  177.                   '2 - игра против бота\n'
  178.                   '3 - игра с "умным" ботом\n')
  179.  
  180. if not mode_game.isdigit():
  181.     print("Неверный ввод, введите число от 1 до 3 ")
  182. elif mode_game == '1':
  183.     print('Вы выбрали игру с другом')
  184.     players = introduce_players()
  185.     sweets = sweets_game(players)
  186.     winer = game_friends_vs_friends(sweets, players, messages)
  187.     if not winer:
  188.         print('Доигрались! У нас нет победителя.')
  189.     else:
  190.         print(
  191.             f'Поздравляю! В этот раз победил {winer}! Ему достаются все конфеты!')
  192. elif mode_game == '2':
  193.     print('Вы выбрали игру с ботом ')
  194.     players = introduce_players_Bot()
  195.     sweets = sweets_game(players)
  196.     winer = game_player_vs_bot(sweets, players, messages)
  197.     if not winer:
  198.         print('Доигрались! У нас нет победителя.')
  199.     else:
  200.         print(
  201.             f'Поздравляю! В этот раз победил {winer}! Ему достаются все конфеты!')
  202. elif mode_game == '3':
  203.     print('Вы выбрали игру с ботом ')
  204.     players = introduce_players_smartBot()
  205.     sweets = sweets_game(players)
  206.     winer = game_player_vs_smart_bot(sweets, players, messages)
  207.     if not winer:
  208.         print('Доигрались! У нас нет победителя.')
  209.     else:
  210.         print(
  211.             f'Поздравляю! В этот раз победил {winer}! Ему достаются все конфеты!')
  212.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement