Найти в Дзене
Bednyakov

Python с нуля. Создаем игру "Кости".

Продолжаю закреплять материал и писать элементарные игры. На этот раз решил исполнить простецкую, но интерактивную программку, которая будет имитировать бросок костей игроком и компьютером, и сравнивать результаты. Честные результаты! Чтобы было понятнее, листайте карусель:

Для начала открываем программное окружение (о том как это сделать написано тут) и начинаем писать. Начинаем, по классике, с комментариев:

# Игра кости
# У игрока и компьютера рандомно выпадают значения бросков и сравниваются

Для извлечения случайных чисел импортируем модуль random.

inport random

Приветствуем игрока и сообщаем, куда он попал:

print("\tДобро пожаловать в игру 'Кости'.")

Напоминаю, "\t" - это эскейп последовательность, которая создает отступ перед текстом.

Теперь создаем первую переменную, которой будет присвоен ввод пользователя. И в зависимости от этого ввода, либо начнется игра, либо программа попрощается с пользователем.

start = input("\tНажмите Enter чтобы сделать бросок. Для выхода введите любое значение.")

Дальше создаем цикл, который дословно будет переводиться: "Пока переменная start будет пустой, создаются переменные gamer1 и gamer2 с рандомными числами от 1 до 6, и третья переменная, которая будет содержать сумму первых двух - sumgamer":

while start == "":
gamer1 = random.randint(1,6)
gamer2 = random.randint(1,6)
sumgamer = gamer1 + gamer2

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

И следующая строчка показывает игроку его результат:

print("\n\tУ вас выпало", gamer1, "и", gamer2)

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

comp1 = random.randint(1,6)
comp2 = random.randint(1,6)
sumcomp = comp1 + comp2
print("\tУ меня выпало", comp1, "и", comp2)

И чтобы цикл не стал работать бесконечно, следующей строчкой переменная start присваивает себе значение 1, в связи с чем цикл останавливается.

start == 1

А теперь введем условия, при котором цикл повторится. Фактически условие будет одно- пользователь опять присвоит переменной start пустоту нажатием Enter. В противном случае цикл завершится. Но по ходу пьесы мы еще и выведем результаты раунда:

if sumcomp > sumgamer:
start = input("\n\tХахаха, я выиграл! Давайте еще бросим. Нажмите Enter.")
elif sumcomp == sumgamer:
start = input("\n\tНичья! Давайте еще бросим. Нажмите Enter.")
else:
start = input("\n\tХммм... Поздравляю! Давайте еще бросим. Нажмите Enter.")

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

Если же пользователь введет какой-либо символ или строчку, сработает else и цикл завершится последним запросом ввода, который значения ни в какие переменные не возвращает, а просто закрывает программу:

else:
input("\nПрощайте!")

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

Вид готового кода программы
Вид готового кода программы

На этом мои полномочия всё. Буду рад, если подкинете идеи, как эту программу можно еще больше упростить и усовершенствовать.