Задумка
Задумал я как-то что-то написать на «змеюке»… Что-нибудь интересное. Прошлый маленький проект был под названием «Блэкджек» и был
Этот проект должен быть собственной придумкой, написанной на Питоне, к тому же игрой. Не хотелось издерживаться во времени и писать что-то, что сожрёт его гигантское количество. Поэтому я решил сосредоточиться на простом – на «кубиках».
Суть игры такова: есть вы и противник (дилер казино), вначале вы выбираете себе «кредит», ну то есть сумму, которая будет лежать у вас в виртуальном «кармане». Ставки вносятся в общий «банк». За этим следуют ставки и броски кубиков. Вы и ваш оппонент поочерёдно бросаете два кубика и «банк» достаётся тому, у кого выпадет набольшее число очков. Если выпадает одинаковое количество — вы и оппонент бросаете кубики снова. Суть проста.
Программная реализация
Ну, сначала запилим «хелп»:
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Неизвестная команда")
Да-да, он не идеален — есть кое-что, что можно «допилить напильником»… Но, как говорил Вовка из тридевятого царства:
А дальше я решил проверить, неужели «мона», играя по одной нехитрой тактике:
- Ставим 100;
- Если ставка выигрывает — снова ставим сто. Если проигрывает — ставим в два раза больше. Выйти в +?!
Начинал с тысячи:
И ставил по сотне:
И, как ни странно, с 1000 увеличил капитал до 2700! — Работает!
Система работает. Но работает она со случайным распределением (а не «допиленным» в пользу «известно кого»). Как-то так. Надеюсь, помидорами кидаться не будете!
P.S. Игры — это круто! Маленький кусочек детства, вырванный из времени.
Комментарии (11)
painjkee
02.08.2019 11:33+2И зачем я это прочитал?
Zoolander
03.08.2019 09:54чтобы зайти в комменты и узнать, что математически доказано, что выигрышная стратегия удвоения капитала — миф и психологическая иллюзия, вызванная тем, что игрок проигрывает редко (но много), а выигрывает часто (но очень мало, по итогам серии)
CrazyElf
02.08.2019 23:13Мартингейл штука прикольная, проблема только в том, что выигрыш невелик, а проиграть в случае неудачного расклада можно сразу всё. В итоге выходит то же на то же на длинной перспективе и без лимита денег. В казино то с этим вообще элементарно борятся (хоть и рандом, но лучше поберечься), ограничивая размер ставки снизу и сверху. Доступных шагов удвоения получается очень мало и стратегия кончается быстро и печально.
Coderanger Автор
06.08.2019 09:16Стратегия Мартингейла, может быть, с точки зрения «скупого рыцаря» — штука «надёжная» (имеет свой алгоритм). Но, с точки зрения игры — нудная и скучная вещь, к тому же морально выматывающая. Но никто не запрещает игрокам придумывать свои стратегии — здесь полная свобода творчества и полёта мысли.
P.S. Просто как некоторые, может быть, раньше думали: «А можно ли сделать игру способом заработка?!» — Нет, не можно. Игра как была, так и останется развлечением.
Zoolander
03.08.2019 09:58У Акунина есть роман, в котором какой-то крутой горец «всегда выигрывает» с такой стратегией.
Помню, еще лет 20 назад (или 15 не помню), думал — если это работает, что же никто этим не пользуется? Тупо по житейски можно было догадаться. Ну а про математические доказательства уже сказали и без меня.
Меня больше волнует то, что тот роман был достаточно популярным, а минуса ему за проколы в алгоритмах никто не ставил и не обсуждал — так что массовый читатель так и будет жить с таким мифом )
Coderanger Автор
05.08.2019 07:35Спасибо за положительные отзывы. Подумываю о том, чтобы сделать «расширенную версию» этой игры — с записью в лог-файл процесса игры, чтобы можно было оценить выигрышные серии.
Zoolander
05.08.2019 11:25азартные игры, скорее всего, будут восприниматься негативно
попробуйте другие направления )Coderanger Автор
06.08.2019 10:19Сейчас в разработке новая игра. Пока она в стадии сбора информации и проектирования. Как только будет то, что можно будет явить миру, поделюсь.
gecube
Цель была проверить именно этот бинарный алгоритм? Тогда у меня для Вас новости — это сделали неоднократно до Вас. И результаты… кхм… печальные. Добраться до (+) в таком алгоритме для обычного человека нереально, т.к. необходимо обладать неограниченным капиталом. А если он есть, то ты играть в игры не будешь ))) Ну, и верно обратное — что во всех реальных кейсах — ты априори будешь проигрывать "казино" (или что там будет вторым участником)
Coderanger Автор
Да нет, цель была написать небольшую «развлекушку». Ну а идея с проверкой тактики «удвоения ставки» пришла позже.
Я тут, короче, запилил экзешную версию — в первый раз «быстренько» слил, а второй раз сначала «спустился» — ну, думаю, прогорю… Ан нет — начал «подыматься»… ))))
P.S. Кому интересно как делается exe — смотреть в мой ЖЖ.
johnkimoo
Почитайте про стратегию Мартингейла. И никогда ею не увлекайтесь. Мой кошелёк был благополучно спасён от опустошения, когда все казино вывели в игровую зону.