27
Май
2016

Покритикуйте код игры Камень-Ножницы-Бумага

Помогите начинающему в Python - пример кода игры Камень-ножницы-Бумага. Хотел бы избавиться от global аргументов и вообще какие могут быть советы по оптимизации. С ООП еще толком не знаком. Еще не нравится присваивание начальных значений.

Вот пример:

import random
CountD = 0 # Счетчики - Ничья, Победа, Проигрыш (Draw, Loose, Win)
CountL = 0
CountW = 0
l = ['k','n','b'] # Значения для рандомной выборки - Камень, Ножницы, Бумага

def inp(): # ввод числа раундов
    global n
    while True:
        try:
            n = int(input('Введите количество игр n '))
            return n
        except ValueError:
            print('Это не число!')


def logic(x, y): # логика игры
    global CountD, CountW, CountL
        if x == y:
            print('Ничья')
            CountD += 1
        elif (x == 'k' and y == 'n') or (x == 'n' and y == 'b') or (x == 'b' and y == 'k'):
            print('Выигрыш')
            CountW += 1
        else:
            print('Проигрыш')
            CountL += 1      
        return CountD, CountL, CountW

# Поехали!
inp()
while n != 0:
    while True:
        x = input('Камень (k), Ножницы (n), Бумага (b)')
        if x not in l:
            print('Введите k, n, b')
        else: break

    y = random.choice(l)
    logic(x, y)
    n -= 1
else:
    print('Победы - {0}\nПроигрыши - {1}\nНичьи- {2}'.format(CountW, CountL, CountD))

В дальнейшем думаю припилить простенький AI, чтобы "ловить" повторения хода игрока.

Источник: https://ru.stackoverflow.com/questions/528070/%D0%9F%D0%BE%D0%BA%D1%80%D0%B8%D1%82%D0%B8%D0%BA%D1%83%D0%B9%D1%82%D0%B5-%D0%BA%D0%BE%D0%B4-%D0%B8%D0%B3%D1%80%D1%8B-%D0%9A%D0%B0%D0%BC%D0%B5%D0%BD%D1%8C-%D0%9D%D0%BE%D0%B6%D0%BD%D0%B8%D1%86%D1%8B-%D0%91%D1%83%D0%BC%D0%B0%D0%B3%D0%B0

Тебе может это понравится...

Добавить комментарий