Files
2025-10-04 10:31:43 +03:00

63 lines
2.8 KiB
PHP

<?php
use yii\bootstrap5\ActiveForm;
use yii\helpers\Html;
$this->title = 'Карточный ужас Аркхэма. Калькулятор вероятностей.';
?>
<div class="site-index">
<div class="body-content">
<div class="row">
<div class="col-md-12">
<h1>Калькулятор получения оружия</h1>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Параметры колоды</h3>
<?php $form = ActiveForm::begin([
'layout' => 'horizontal' ,
'class' => 'form-horizontal' ,
]); ?>
<?= $form->field($deck_form, 'size')->textInput(); ?>
<?= $form->field($deck_form, 'weapons_items')->textInput(); ?>
<?= $form->field($deck_form, 'weapons_spells')->textInput(); ?>
<?= $form->field($deck_form, 'card_prepared_to_worst')->textInput(); ?>
<?= $form->field($deck_form, 'card_backpack_0')->textInput(); ?>
<?= $form->field($deck_form, 'card_backpack_2')->textInput(); ?>
<?= $form->field($deck_form, 'card_initiate')->textInput(); ?>
<?= Html::submitButton(); ?>
<?php $form->end(); ?>
</div>
<div class="col-md-6">
<h3>Как это работает:</h3>
<p>Генерируется некоторое количество случайных перемешиваний колоды. На каждом перемешивании
выбирается стартовая рука (оставляем любое оружие и любую карту, помогающую его искать,
всё остальное сбрасывается).</p>
<p>Далее эмулируем ходы. В каждый ход в следующем приоритете:
<ul>
<li>Используем "Посвящённую", если она сыграна в первое же доступное окно игрока</li>
<li>Если на руке оказалось оружие - играем его</li>
<li>Если есть помогающие искать оружие карты - играем их</li>
<li>Берём карты из колоды</li>
</ul>
</p>
<p>Вероятность получить оружие на N-том ходу вычисляется как количество раскладов,
при котором оружие было сыграно не позже N-го хода, делённое на общее количество
проэмулированных раскладов.
</p>
</div>
</div>
<div class="row">
<h3>Результаты симуляции:</h3>
<div class="col-md-6">
<ul>
<?php for ($i = 0; $i < count($result->probabilities); $i++): ?>
<li>Ход <?= ($i + 1); ?>: <?= sprintf("%.3f", $result->probabilities[$i] * 100); ?>%</li>
<?php endfor; ?>
</ul>
</div>
</div>
</div>
</div>