Вход  •  Регистрация

Сделка?! (Python)

Сообщение » 10.11.2022, 09:51

За три дня написал игру по "Сделке". Игра оформлена крайне аскетично, смотреть особо не на что.

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

Игра для Windows
Игра для Linux
Github
Аватара пользователя
Gamer
 
Репутация: +46/-3
Сообщения: 370

Сообщение » 11.11.2022, 00:19

Что бросается в глаза сразу-игра сообщает буквально о каждом шаге,учитывая что правила знакомы.Сидишь и прокликиваешь окошки с уведомлениями.За игру спасибо,её можно развить в отличный проект.
Аватара пользователя
Wesker999
 
Репутация: +7
Сообщения: 32

Сообщение » 11.11.2022, 19:58

Изображение
Гуд гейм.
На самом деле — да, мсгбоксы крайне сильно напрягают. Куда лучше было бы сделать сообщение на лейбле по таймеру, а ещё лучше просто сделать картинками-плашками колво ходов до банкира и его предложение. По формуле предложений банка вроде особо претензий нет, считается более-менее схоже с оригиналом.
Аватара пользователя
StereoMaster
O-|—<
 
Репутация: +564/-8
Сообщения: 7837

Сообщение » 11.11.2022, 22:43

StereoMaster пишет:По формуле предложений банка вроде особо претензий нет, считается более-менее схоже с оригиналом.


Пожалуй, в разработке этой программы самым сложным для меня была как раз эта формула :)
Я подозревал, что до меня многие писали или пытались написать игру по этому формату, следовательно, готовая формула имеется в Сети. Тем не менее, поиск по англоязычной части Всемирной паутины положительного результата не дал, так что формулу пришлось создавать самому. Идею создания этой самой формулы я вынашивал не один год, кстати. В этом мне помогла программа LibreOffice Calc (если кто не знает, это табличный процессор, аналог Microsoft Excel).

Если читающий эти строки не владеет языком программирования Python или просто не хочет читать мой исходный код, вкратце объясню формулу подсчёта.
Берём среднее арифметическое всех неоткрытых сумм (A), а также медиану этого ряда(B). Затем берём среднее арифметическое A и B. Если чемоданов осталось 4 или более, то полученное число умножаем на номер предложения банка и делим на 7.5, затем умножаем на случайный коэффициент от 0.9 до 1.1. В конце округляем сумму.
Если же осталось 3 или 2 чемодана, то банк предложит случайное число в диапазоне от 0.65*минимальная сумма+0.35*максимальная сумма до 0.4*минимальная сумма+0.6*максимальная сумма. В одном из выпусков оставались 1 копейка и 50 000, банк предложил только 17 500. А ещё было, что остались 10 копеек и 10 000, а банк предложил 7 000. Как-то так.

Offtopic :
Кстати, интересно было бы узнать, как считается предложение банка в игре, которую вы сделали, StM. Но это уже из области мечтаний. :wink:
Аватара пользователя
Gamer
 
Репутация: +46/-3
Сообщения: 370

Сообщение » 12.11.2022, 08:52

Gamer пишет:Кстати, интересно было бы узнать, как считается предложение банка в игре, которую вы сделали, StM. Но это уже из области мечтаний.

Явно, что там не просто среднее арифметическое. Связь с медианой я в своё время не устанавливал, но пытался просчитывать некий коэффициент для среднего.

Код: Выделить всё
Offer = Sum / N ^ (delta * 0.04 + rand(-0.2;0.2) + K)


delta = оставшиеся (малые - большие) суммы. Если больших больше, то delta будет отрицательной. Если в игре меньше 5000, то delta = 0.

K = коэффициент, зависящий от номера звонка банкира: {1.92; 1.79; 1.67; 1.55; 1.33; 1.21}. Его приводить в конкретную формулу я не стал, да и особо не зачем было.

В IRC-игре данная формула неприменима из-за меньшего разбоса сумм, потому там уже Банкир делает предложение иным путём.
Аватара пользователя
StereoMaster
O-|—<
 
Репутация: +564/-8
Сообщения: 7837


Вернуться в ПК-игры на основе телешоу