Игра "Камень, ножницы, бумага" на Python

Задача написать игру "Камень, ножницы, бумага" в Python. Вот мой код -

import random


start = input('Вы запустили игру "Камень, ножницы, бумага". Хотите поиграть? (Вводите + или -): ')

if start == '+':
    print('Загрузка...')
    print("Загрузка завершена! Начинаем!")
    print("3...2...1...")
    print('Если захотите закончить вводите "-".')
    print('Если захотите узнать счёт вводите "с".')
    user_ball = 0
    rand_ball = 0
    while True:
        user = input("Камень, ножницы или бумага? (Вводите к, н или б): ")
        list_play = ['к', 'н', 'б']
        if user in list_play:
            rand = random.choice(list_play)
            print(rand)

            if rand == 'к' and user == 'н':
                rand_ball += 1
            if rand == 'к' and user == 'б':
                user_ball += 1
            if rand == 'н' and user == 'к':
                user_ball += 1
            if rand == 'н' and user == 'б':
                rand_ball += 1
            if rand == 'б' and user == 'н':
                user_ball += 1
            if rand == 'б' and user == 'к':
                rand_ball += 1
        elif user == 'с':
            print('Ваши баллы - ', user_ball, '. Баллы вашего соперника - ', rand_ball, ".")
        elif user == '-':
            print('Ваши баллы - ', user_ball, '. Баллы вашего соперника - ', rand_ball, ".")
            print('Конец игры! Заходите ещё!')
            break
        else:
            print('Вводите к, н или б')


if start == '-':
    print('Жаль... :(')
else:
    print('Простите, я вас не понял, если хотите играть перезапустите программу и введите "+". Спасибо!')

Прошу скажите есть ли в нём ошибки и как их можно исправить? И ещё можно ли как-то оптимизировать?

Заранее спасибо!!!


Ответы (2 шт):

Автор решения: Tehnorobot

Дам вам несколько советов:

  1. Вы написали if start == '-':, но нужно elif start == '-':, так как после окончания игры срабатывает else.

(используйте конструкцию if-elif.. -.. elif-else, не надо перечислять if, elif — это способ Python сказать, что если предыдущие условные были неверными, тогда попробуйте это условное и т. д.)

  1. Реализация игры достаточно простая, но рабочая. Если вы хотите сделать ещё интереснее и удобнее, то посоветую сделать графический интерфейс игры, например, используя pygame или PyQt5
→ Ссылка
Автор решения: Edward Grachev

Если интересно то вот пример как можно убрать множественные конструкции if

a = {
    "камень": "ножницы",
    "ножницы": "бумага",
    "бумага": "камень"
}
while True:
    b = input("Игрок 1: ")
    c = input("Игрок 2: ")

    if b == c:
        print("ничья")
        continue
    for i, j in a.items():
        if b == i and c == j:
            print("Победил Игрок 1")
            break
        elif c == i and b == j:
            print("Победил Игрок 2")
            break

Так же можно увеличить варианты

a = [
    "ножницы:бумага",
    "бумага:камень",
    "камень:ящерица",
    "ящерица:Спок",
    "Спок:ножницы",
    "ножницы:ящерица",
    "ящерица:бумага",
    "бумага:спок",
    "Спок:камень",
    "камень:ножницы"
]
→ Ссылка