Автор оригинала: Pankaj Kumar.
О, еще раз привет, игровой кодер! Сегодня я расскажу вам, как самостоятельно построить простую игру “Камень-ножницы-бумага”.
Вы готовы? Давайте начнем!
Введение в игру Камень Ножницы бумага
Прежде чем создавать какую-либо новую игру, нужно понять все об игре, включая ее правила, входы и выходы, а также все необходимые вещи.
Как играть в эту игру?
Камень-ножницы-бумага-одна из классических ручных игр, в которые мы играли с тех пор, как все были маленькими детьми. Обычно в нее играют два игрока (можно играть и с более чем двумя игроками), каждый из которых образует одну из трех фигур (камень, бумага и ножницы) одновременно, с вытянутой рукой.
Как сформировать жесты рук для опций?
Камень представлен сжатым кулаком; бумага представлена плоской рукой, а ножницы представлены образованием буквы V (популярный сигнал мира). Иллюстрация жестов показана на рисунке ниже.
Рекомендуемое чтение: Графическая игра Hi-lo на Python
Правила игры
Хотя кодирующая часть игры может быть немного сложной, правила игры просты, которые заключаются в следующем:
- Камень побеждает ножницы.
- Ножницы побеждают бумагу.
- Бумага побеждает камень.
Строительство Камень Ножницы бумага в Python
Мы разделим все игровое здание на части, чтобы сделать его простым для вас! Все шаги, которые мы предпримем для создания игры, описаны ниже:
- Импорт всех необходимых модулей
- Распечатайте поздравительные сообщения и спросите игрока о том, как он хочет играть в игру.
- Создание отдельных функций для следующих целей:
- Нарисуйте диаграммы рук
- Играйте с компьютером!
- Поиграй с другом!
Шаг 1 – Импорт необходимых модулей.
При создании игры мы используем несколько модулей. Позвольте мне познакомить вас с ними по очереди.
- Случайный модуль : Это встроенный модуль, используемый для генерации случайных объектов, будь то целые числа, числа с плавающей запятой или другие объекты.
- Модуль 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). Код для функции проверки победителя показан ниже:
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
- Обновление значений очков: Следующий шаг-увеличить счет первого и второго игрока, если один из них выиграет, и ничего не произойдет, если будет ничья.
Эта же процедура повторяется для количества раундов, указанных игроком. А затем мы показываем окончательные результаты как компьютера, так и игрока и сравниваем результаты, чтобы игрок знал, кто выиграл игру!
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 раундов как с компьютером, так и вместе с другом.
Вывод
Я надеюсь, что вы смогли успешно построить и понять все игровое здание! Поздравляю! Теперь вы знаете о том, как создать логику для игры в камень ножницы для бумаги, вы можете сами создать некоторые другие игры!
Спасибо, что прочитали! Счастливого кодирования!