Рубрики
Без рубрики

Строительство Камень Ножницы Бумага Игра на Python!

О, еще раз привет, игровой кодер! Сегодня я расскажу вам, как самостоятельно построить простую игру “Камень-ножницы-бумага”.

Автор оригинала: Pankaj Kumar.

О, еще раз привет, игровой кодер! Сегодня я расскажу вам, как самостоятельно построить простую игру “Камень-ножницы-бумага”.

Вы готовы? Давайте начнем!

Введение в игру Камень Ножницы бумага

Прежде чем создавать какую-либо новую игру, нужно понять все об игре, включая ее правила, входы и выходы, а также все необходимые вещи.

Как играть в эту игру?

Камень-ножницы-бумага-одна из классических ручных игр, в которые мы играли с тех пор, как все были маленькими детьми. Обычно в нее играют два игрока (можно играть и с более чем двумя игроками), каждый из которых образует одну из трех фигур (камень, бумага и ножницы) одновременно, с вытянутой рукой.

Как сформировать жесты рук для опций?

Камень представлен сжатым кулаком; бумага представлена плоской рукой, а ножницы представлены образованием буквы V (популярный сигнал мира). Иллюстрация жестов показана на рисунке ниже.

Камень Ножницы для бумаги Форма

Рекомендуемое чтение: Графическая игра Hi-lo на Python

Правила игры

Хотя кодирующая часть игры может быть немного сложной, правила игры просты, которые заключаются в следующем:

  1. Камень побеждает ножницы.
  2. Ножницы побеждают бумагу.
  3. Бумага побеждает камень.

Строительство Камень Ножницы бумага в Python

Мы разделим все игровое здание на части, чтобы сделать его простым для вас! Все шаги, которые мы предпримем для создания игры, описаны ниже:

  1. Импорт всех необходимых модулей
  2. Распечатайте поздравительные сообщения и спросите игрока о том, как он хочет играть в игру.
  3. Создание отдельных функций для следующих целей:
    • Нарисуйте диаграммы рук
    • Играйте с компьютером!
    • Поиграй с другом!

Шаг 1 – Импорт необходимых модулей.

При создании игры мы используем несколько модулей. Позвольте мне познакомить вас с ними по очереди.

  1. Случайный модуль : Это встроенный модуль, используемый для генерации случайных объектов, будь то целые числа, числа с плавающей запятой или другие объекты.
  2. Модуль Getpass : Модуль Getpass обычно используется для получения паролей от пользователей, но в игре то же самое используется для скрытия ввода игрока 1 от игрока 2 для честной игры.

Для импорта модулей мы используем следующий код:

import random
import getpass

Шаг 2 – Печать поздравительных сообщений и запрос игрока о том, как он хочет играть в игру.

Желательно, чтобы разработчик игр приветствовал игрока до начала игры. Лучшие поздравительные сообщения делают вашу игру лучше, чем у других разработчиков той же игры. После приветствия игрока спрашивают, хочет ли он играть с компьютером или другом или хочет просто выйти из игры.

В нашем случае мы определим функцию, хранящую всю информацию о приветствии. Код для того же самого показан ниже:

def Info ():
    print ("\tHELLO THERE! WELCOME TO ROCK PAPER SCISSORS GAME!")
    print ("INSTRUCTIONS:\nBoth the players have three choices namely rock, paper and scissors.")
    print ("\nGAME RULES:")
    print ("\tSCISSORS beats PAPER")
    print ("\tPAPER beats ROCK")
    print ("\tROCK beats SCISSORS")
    print ("--------------------------------------------------------------------------")
    print ("Choose between the two options: ")
    print ("\t 1. Play with the computer")
    print ("\t 2. Play with a friend")
    print ("\t 3. Exit Game")

Когда вызывается функция “Информация”, она печатает информацию в шаблоне, показанном ниже:

Информация Камень Ножницы для бумаги

После выбора способа игры игроку задается вопрос о том, в каких раундах он хочет играть либо с компьютером, либо с другом. Некоторые вещи, которые необходимо учитывать, – это то, что количество раундов должно быть целым числом, и выбор игроком метода игры также должен быть действительным.

Код для того же самого процесса запуска игры показан ниже.

Info ()
choices = ["rock","paper","scissors"]
wrong = True
while wrong:
    try:
        n= int (input ("Enter your choice of Gameplay: "))
        if(n==1):
            wrong = False
            x = int (input ("Enter number of rounds you want to play: "))
            begin_game_computer(x)
        elif(n==2):
            wrong = False
            x = int (input ("Enter number of rounds you want to play: "))
            begin_game_friend(x)
        elif(n==3):
            wrong=False
            print ("\nThank you for playing! \nBye!")
        else:
            print ("Choose Again!")
    except (ValueError):
        print ("INVALID INPUT! Choose Again!")
        wrong=True

Давайте разберемся, что именно здесь происходит. Сначала мы вызвали функцию Info, чтобы поприветствовать игрока, а затем мы используем исключения Python для обработки необходимых вещей.

Если игрок выбирает игру с компьютером, то вызывается функция “begin_game_computer”, и точно так же, если игрок выбирает игру с другом, то вызывается функция “begin_game_friend”.

Шаг 3 – Создание отдельных функций для различных целей.

Теперь важным шагом в создании игры является определение необходимых функций для правильной работы игры. Давайте построим все проекты с нуля.

1. Определение функции для рисования диаграмм рук.

Чтобы сделать игру более интерактивной для игрока, мы будем использовать функцию, которая печатает диаграмму руки записи, сопоставленную с выбранным правильным вариантом.

Код для того же самого выглядит следующим образом:

def draw_diagrams(ch):
    if(ch=="rock"):
        print("""
                _______
            ---'   ____)
                  (_____)
                  (_____)
                  (____)
            ---.__(___)
            """)
    elif(ch=="paper"):
        print("""
                 _______
            ---'    ____)____
                       ______)
                      _______)
                     _______)
            ---.__________)
            """)
    elif(ch=="scissors"):
        print("""
                _______
            ---'   ____)____
                      ______)
                   __________)
                  (____)
            ---.__(___)
            """)
    else:
        print("WRONG INPUT! CHOOSE AGAIN PLEASE!\n")

2. Определение функции для игры с компьютером.

Прежде чем что-либо объяснять, позвольте мне сначала показать код и объяснить его должным образом.

def begin_game_computer(n):
    score1=0
    score2=0
    for i in range(n):
        print("---------------------------------------------------------------------------")
        print("ROUND NUMBER: ",i+1)
        check = True
        while check:
            p_ch = input("Choose your option: ")
            if(p_ch.lower() in choices):
                check=False
            else:
                print("Wrong Input! Enter Again!")
        c_ch = choices[random.randint(0,2)]
        
        print("\nYOUR CHOICE: ")
        draw_diagrams(p_ch.lower())
        print("\nCOMPUTER's CHOICE: ")
        draw_diagrams(c_ch.lower())
        
        winner = check_win(p_ch,c_ch)
        if(winner==1):
            print("YOU WIN THE ROUND HURRAY!\n")
            score1+=1
        elif(winner==2):
            print("Oh no! Computer wins the round!\n")
            score2+=1
        else:
            print("DRAW ROUND!\n")
    print("---------------------------------------------------------------------------")
    print("FINAL SCORES ARE AS FOLLOWS: ")
    print("YOUR SCORE: ",score1)
    print("COMPUTER's SCORE: ",score2)
    if(score1>score2):
        print("---------------------------------------------------------------------------")
        print("HURRAY YOU WIN! Congratulations!")
        print("---------------------------------------------------------------------------")
    elif(score1

Теперь давайте внимательно разберемся со всей информацией. Эта функция играет важную роль в игре, поэтому постарайтесь правильно понять эту функцию.

Мы делаем две переменные score1 и score2 для хранения результатов двух игроков ( в данном случае игрок 2-компьютер). Теперь цикл выполняется для общего количества раундов, и для каждого раунда мы обязательно включаем три вещи:

  1. Ввод обоих игроков: Для компьютера мы определяем список, содержащий все три варианта, и с помощью случайной библиотеки компьютер выбирает случайный вариант из трех.
  2. Проверка того, кто выиграл раунд: Чтобы проверить, кто выиграл раунд, мы используем отдельную функцию, которая принимает оба входа в качестве аргументов и возвращает, какой игрок выиграл ( 1 или 2). Код для функции проверки победителя показан ниже:
def check_win(c1,c2):
    if(c1=='rock' and c2=='paper'):
        return 2
    elif(c1=='paper' and c2=='rock'):
        return 1
    elif(c1=='paper' and c2=='scissors'):
        return 2
    elif(c1=='scissors' and c2=='paper'):
        return 1
    elif(c1=='rock' and c2=='scissors'):
        return 1
    elif(c1=='scissors' and c2=='rock'):
        return 2
    elif(c1==c2):
        return 0  
  1. Обновление значений очков: Следующий шаг-увеличить счет первого и второго игрока, если один из них выиграет, и ничего не произойдет, если будет ничья.

Эта же процедура повторяется для количества раундов, указанных игроком. А затем мы показываем окончательные результаты как компьютера, так и игрока и сравниваем результаты, чтобы игрок знал, кто выиграл игру!

3. Определение функции, чтобы играть вместе с другом.

Играть в эту игру с другом точно так же, как и с компьютером. Разница лишь в том, что в этом случае вместо того, чтобы брать второй вход случайным образом, мы будем брать два входа.

Еще одно небольшое изменение, которое мы здесь вносим, заключается в том, что до того, как второй игрок сделает свой выбор, мы скрываем ответ первого игрока. Для того же мы используем метод getpass .

Позвольте мне показать вам, как выглядит код для игры вместе с другом:

def begin_game_friend(n):
    score1=0
    score2=0
    for i in range(n):
        print("---------------------------------------------------------------------------")
        print("ROUND NUMBER: ",i+1)
        
        check = True
        while check:
            p1_ch = getpass.getpass(prompt="Choose your option player 1: ",stream=None)
            if(p1_ch.lower() in choices):
                check=False
            else:
                print("Wrong Input! Enter Again!")
        
        check = True
        while check:
            p2_ch = input("Choose your option player 2: ")
            if(p2_ch.lower() in choices):
                check=False
            else:
                print("Wrong Input! Enter Again!")
        
        print("\nPLAYER 1 CHOICE: ")
        draw_diagrams(p1_ch.lower())
        print("PLAYER 2 CHOICE: ")
        draw_diagrams(p2_ch.lower())
        
        winner = check_win(p1_ch,p2_ch)
        if(winner==1):
            print("Player 1 wins the round!\n")
            score1+=1
        elif(winner==2):
            print("Player 2 wins the round!\n")
            score2+=1
        else:
            print("DRAW ROUND!\n")
    
    print("---------------------------------------------------------------------------")
    print("FINAL SCORES ARE AS FOLLOWS: ")
    print("PLAYER 1 SCORE: ",score1)
    print("PLAYER 2 SCORE: ",score2)
    if(score1>score2):
        print("---------------------------------------------------------------------------")
        print("PLAYER 1 WINS! Congratulations!")
        print("---------------------------------------------------------------------------")
    elif(score1

Конечные результаты

Поздравляю! Мы все готовы запустить игру прямо сейчас! Позвольте мне показать вам примерный результат 2 раундов как с компьютером, так и вместе с другом.

Проверьте RPS С Помощью Компьютера
Тестовый Раунд RPS С Другом

Вывод

Я надеюсь, что вы смогли успешно построить и понять все игровое здание! Поздравляю! Теперь вы знаете о том, как создать логику для игры в камень ножницы для бумаги, вы можете сами создать некоторые другие игры!

Спасибо, что прочитали! Счастливого кодирования!