python

Питон и кубики

  • суббота, 3 августа 2019 г. в 00:23:18
https://habr.com/ru/post/462265/
  • Python


Задумка


Задумал я как-то что-то написать на «змеюке»… Что-нибудь интересное. Прошлый маленький проект был под названием «Блэкджек» и был передиркой позаимствован с одного сайта-обучалки по Питону.

Этот проект должен быть собственной придумкой, написанной на Питоне, к тому же игрой. Не хотелось издерживаться во времени и писать что-то, что сожрёт его гигантское количество. Поэтому я решил сосредоточиться на простом – на «кубиках».

image

Суть игры такова: есть вы и противник (дилер казино), вначале вы выбираете себе «кредит», ну то есть сумму, которая будет лежать у вас в виртуальном «кармане». Ставки вносятся в общий «банк». За этим следуют ставки и броски кубиков. Вы и ваш оппонент поочерёдно бросаете два кубика и «банк» достаётся тому, у кого выпадет набольшее число очков. Если выпадает одинаковое количество — вы и оппонент бросаете кубики снова. Суть проста.

Программная реализация


Ну, сначала запилим «хелп»:

b – ставка (bet);
c – кредит (credit);
t – бросок кубиков (throw);

Далее открываем Анаконду и начинаем писать код:

#
# Кубики
#

import random
import sys

def help():
    print("\nСписок команд")
    print("b - сделать ставку;")
    print("с - взять кредит;")
    print("t - бросок кубиков;")

credit = 0
bank = 0
bet = int(0)

print("Для вывода списка команд нажмите введите h")

while True:
    
    print("\nДенег: ", credit)
    print("Ставка: ", bet)
    command = input("Введите команду: ")
    
    if command == 'x':
        sys.exit()
    elif command == 'h':
        help()
    elif command == 'c':
        credit = input("Введите сумму кредита: ")
        credit = int(credit)
        print("Ваши текущие деньги: ", credit,"$")
    elif command == 'b':
        bet = input("Введите ставку: ")
        bet = int(bet)
        if bet > credit:
            print("У вас нет столько.")
            bet = 0
        else:
            credit = credit - bet
    elif command == 't':
        if bet == 0:
            print("Задайте ставку.")
        else:
            val1 = random.randrange(1,6)
            val2 = random.randrange(1,6)
            sum1 = val1 + val2
            print("\nВыпало у 1: ",sum1)
            val1 = random.randrange(1,6)
            val2 = random.randrange(1,6)
            sum2 = val1 + val2
            print("Выпало у 2: ",sum2)
            if sum1 == sum2:
                print("Делайте новый бросок.")
            elif sum1 > sum2:
                credit = credit + bet * 2
                bet = 0
                print("\nВы выиграли!")
            elif sum1 < sum2:
                bet = 0
                print("\nВы проиграли...")
    else:
        print("\nНеизвестная команда")

Да-да, он не идеален — есть кое-что, что можно «допилить напильником»… Но, как говорил Вовка из тридевятого царства:

image

А дальше я решил проверить, неужели «мона», играя по одной нехитрой тактике:

  1. Ставим 100;
  2. Если ставка выигрывает — снова ставим сто. Если проигрывает — ставим в два раза больше. Выйти в +?!

Начинал с тысячи:

image

И ставил по сотне:

image

И, как ни странно, с 1000 увеличил капитал до 2700! — Работает!

Система работает. Но работает она со случайным распределением (а не «допиленным» в пользу «известно кого»). Как-то так. Надеюсь, помидорами кидаться не будете!

P.S. Игры — это круто! Маленький кусочек детства, вырванный из времени.