Игра камень ножницы бумага на python c процедурами

26 августа 2019 - Администратор

Игра камень ножницы бумага на Python написанная с использованием процедур

В статье Игра камень ножницы бумага на Python с анализом вариантов, мы написали программу для реализации игры комаень ножницы бумага человека с компьютером. Легко заметить, что в программе этой игры встречаются участки кода, которые повторяются несколько раз. Чтобы программа на python была наглядной и лаконичной, используются процедуры. В процедуру включают смысловой блок кода, который повторяется много раз в программе. Написав один раз процедуру в python, можно вызывать ее любое количество раз в программе. Общая схема процедуры в Python
def имя процедуры(параметры):
               команды процедуры

Подробно о процедурах в python

В нашей программе повторяется ход игрока, поэтому логично сделать процедуру, отвечающую за ввод хода игрока.
def hodchel ():
       global player
       ver = 0
       while (ver==0):
         player = int(input("1 - камень, 2 - ножницы, 3 - бумага. "))
         if (player == 1 or player == 2 or player == 3):
             ver = 1

Часто в программах python пишут специальную процедуру для вывода информации. Мы создадим в нашей программе процедуру для вывода на экран информации о ходах игрока и компьютера. Чтобы процедура корректно могла вывести информацию о вариантах игрока и компьютера, в нее необходимо передать параметры, отвечающие за варианты
def hods (player,comp):
        if player == 1:
            print("Вы выбрали камень.")
        if player == 2:
            print("Вы выбрали ножницы.")
        if player == 3:
            print("Вы выбрали бумагу.")
        if comp == 1:
            print("Компьютер выбрал камень.")
        if comp == 2:
            print("Компьютер выбрал ножницы.")
        if comp == 3:
            print("Компьютер выбрал бумагу.")


В нашей программе, чтобы определить победителя используются условия на сравнения вариантов. как видно проверка производится дважды в программе, в цикле и после цикла, поэтому логично написать процедуру для проверки исхода игры. В качестве параметров процедуры будут использоваться вариант хода игрока и компьютера.
def proverka (player,comp) :
    if player == comp:
        win = 0
    if player == 1 and comp == 2:
        win = 1 
    if player == 1 and comp == 3:
        win = 2
    if player == 2 and comp == 1:
        win = 2
    if player == 2 and comp == 3:
        win = 1
    if player == 3 and comp == 1:
        win = 1
    if player == 3 and comp == 2:
        win = 2
    if win == 0:
        print("Ничья!")
    if win == 1:
        print("Победил игрок!")
    if win == 2:
        print("Победил компьютер!")

Наиболее общая структура программы игры с использованием процедур на python будет следующая
процедура хода игрока
процедура хода компьютера
процедура проверки игры
процедура вывода информации игры

цикл повторений игры
    вызов процедуры хода игрока
    вызов процедуры хода компьютера
    вызов процедуры вывода информации игры
    вызов процедуры проверки игры

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

Полная версия программы камень ножницы бумага на python с процедурами

a = [0]*4 
import random
' процедура хода игрока
def hodchel ():
       global player
       ver = 0
       while (ver==0):
         player = int(input("1 - камень, 2 - ножницы, 3 - бумага. "))
         if (player == 1 or player == 2 or player == 3):
             ver = 1
' процедура вывода информации о ходах
def hods (player,comp):
        if player == 1:
            print("Вы выбрали камень.")
        if player == 2:
            print("Вы выбрали ножницы.")
        if player == 3:
            print("Вы выбрали бумагу.")
        if comp == 1:
            print("Компьютер выбрал камень.")
        if comp == 2:
            print("Компьютер выбрал ножницы.")
        if comp == 3:
            print("Компьютер выбрал бумагу.")
' процедура проверки того, кто выиграл
def proverka (player,comp) :
    if player == comp:
        win = 0
    if player == 1 and comp == 2:
        win = 1 
    if player == 1 and comp == 3:
        win = 2
    if player == 2 and comp == 1:
        win = 2
    if player == 2 and comp == 3:
        win = 1
    if player == 3 and comp == 1:
        win = 1
    if player == 3 and comp == 2:
        win = 2
    if win == 0:
        print("Ничья!")
    if win == 1:
        print("Победил игрок!")
    if win == 2:
        print("Победил компьютер!")
' основная программа         
for i in range (4):
    ' ход игрока
    hodchel()
    a[i] = player    
    ' ход компьютера
    comp = random.randint(1,3)
    ' вывод информации о ходах
    hods(player, comp)
    ' определяем победителя
    proverka (player,comp)
' обрабатываем статистику ходов игрока
k = 0
n = 0
b = 0
for i in range (4):
    if a[i] == 1:
        k = k+1
    if a[i] == 2:
        n = n+1
    if a[i] == 3:
        b = b+1
comp = 1
' определяем ход компьютера исходя из статистики ходов человека
if k>2:
    comp=3
if n>2:
    comp = 1
if b>2:
    comp = 2
 ' последний раунд игры. ход игрока    
hodchel()
 ' вывод информации о ходах
hods(player, comp)
' определяем победителя
proverka (player,comp)

Перейти к содержанию курса python
Полезно почитать по теме условия и процедуры в python
Пример анкета, опрос на python
Процедуры в python

Поделиться:

 
Комментарии (0)

Нет комментариев. Ваш будет первым!