Задумка


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

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

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. Игры — это круто! Маленький кусочек детства, вырванный из времени.

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


  1. gecube
    02.08.2019 11:31

    Цель была проверить именно этот бинарный алгоритм? Тогда у меня для Вас новости — это сделали неоднократно до Вас. И результаты… кхм… печальные. Добраться до (+) в таком алгоритме для обычного человека нереально, т.к. необходимо обладать неограниченным капиталом. А если он есть, то ты играть в игры не будешь ))) Ну, и верно обратное — что во всех реальных кейсах — ты априори будешь проигрывать "казино" (или что там будет вторым участником)


    1. Coderanger Автор
      02.08.2019 11:37

      Да нет, цель была написать небольшую «развлекушку». Ну а идея с проверкой тактики «удвоения ставки» пришла позже.
      Я тут, короче, запилил экзешную версию — в первый раз «быстренько» слил, а второй раз сначала «спустился» — ну, думаю, прогорю… Ан нет — начал «подыматься»… ))))
      image
      P.S. Кому интересно как делается exe — смотреть в мой ЖЖ.


      1. johnkimoo
        02.08.2019 13:34
        +2

        Почитайте про стратегию Мартингейла. И никогда ею не увлекайтесь. Мой кошелёк был благополучно спасён от опустошения, когда все казино вывели в игровую зону.


  1. painjkee
    02.08.2019 11:33
    +2

    И зачем я это прочитал?


    1. Zoolander
      03.08.2019 09:54

      чтобы зайти в комменты и узнать, что математически доказано, что выигрышная стратегия удвоения капитала — миф и психологическая иллюзия, вызванная тем, что игрок проигрывает редко (но много), а выигрывает часто (но очень мало, по итогам серии)


  1. CrazyElf
    02.08.2019 23:13

    Мартингейл штука прикольная, проблема только в том, что выигрыш невелик, а проиграть в случае неудачного расклада можно сразу всё. В итоге выходит то же на то же на длинной перспективе и без лимита денег. В казино то с этим вообще элементарно борятся (хоть и рандом, но лучше поберечься), ограничивая размер ставки снизу и сверху. Доступных шагов удвоения получается очень мало и стратегия кончается быстро и печально.


    1. Coderanger Автор
      06.08.2019 09:16

      Стратегия Мартингейла, может быть, с точки зрения «скупого рыцаря» — штука «надёжная» (имеет свой алгоритм). Но, с точки зрения игры — нудная и скучная вещь, к тому же морально выматывающая. Но никто не запрещает игрокам придумывать свои стратегии — здесь полная свобода творчества и полёта мысли.
      P.S. Просто как некоторые, может быть, раньше думали: «А можно ли сделать игру способом заработка?!» — Нет, не можно. Игра как была, так и останется развлечением.


  1. Zoolander
    03.08.2019 09:58

    У Акунина есть роман, в котором какой-то крутой горец «всегда выигрывает» с такой стратегией.

    Помню, еще лет 20 назад (или 15 не помню), думал — если это работает, что же никто этим не пользуется? Тупо по житейски можно было догадаться. Ну а про математические доказательства уже сказали и без меня.

    Меня больше волнует то, что тот роман был достаточно популярным, а минуса ему за проколы в алгоритмах никто не ставил и не обсуждал — так что массовый читатель так и будет жить с таким мифом )


  1. Coderanger Автор
    05.08.2019 07:35

    Спасибо за положительные отзывы. Подумываю о том, чтобы сделать «расширенную версию» этой игры — с записью в лог-файл процесса игры, чтобы можно было оценить выигрышные серии.


    1. Zoolander
      05.08.2019 11:25

      азартные игры, скорее всего, будут восприниматься негативно
      попробуйте другие направления )


      1. Coderanger Автор
        06.08.2019 10:19

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