ズッ友体感シミュレータ
ズッ友さんの効果を体感してみよう!
HTML
<header>
<h2>ズッ友体感シミュレータ</h2>
<table id='explain'>
<tr><td><span style='font-weight:bold;color:#ff4500'>(+1)</span></td><td>スクリプト処理方法による実質的なボーナス値</td></tr>
<tr><td><span style='font-weight:bold;color:rgb(10, 229, 10)'>+2</span></td><td>ズッ友さんによるアップ効果</td></tr>
<tr><td><span class='effect'>+1</span></td><td>覚醒ズッ友さんによるさらなるアップ効果(未覚醒ズッ友さん比)</td></tr>
</table>
</header>
<div name='stage' data-charisma='0' data-stamina='3' data-effect='false'>
<h3>ファランクス2</h3>
<button name='try'>1回ずつ挑戦する</button>
<button name='effective'>ズッ友効果か覚醒ズッ友効果(合計+3%)が出るまで挑戦する</button>
<p> <span name='play'>0</span>回挑戦(消費カリスマ:<span name='charisma'>0</span> 消費スタミナ:<span name='stamina'>0</span>)</p>
<table>
<tr>
<th>アイテム</th>
<th>ドロップ率</th>
<th>期待値</th>
<th>実ドロップ</th>
<th>備考</th>
</tr>
<tr name='item' data-drop='70'>
<td>
<img src='http://i.gyazo.com/38688a6fcd90f3553e8aa856acab75d5.png' title='花束' />
</td>
<td><span name='drop'></span>%</td>
<td><span name='expect'>0</span>個</td>
<td><span name='count'>0</span>個</td>
<td></td>
</tr>
<tr name='item' data-drop='70'>
<td>
<img src='http://i.gyazo.com/15035d835d7a65e0f859fd2167d44298.png' title='水晶' />
</td>
<td><span name='drop'></span>%</td>
<td><span name='expect'>0</span>個</td>
<td><span name='count'>0</span>個</td>
<td></td>
</tr>
<tr name='item' data-drop='40' data-count='2'>
<td>
<img src='http://i.gyazo.com/a812a2300def073bb03712b4b3d6f81a.png' title='ルビー' />
</td>
<td><span name='drop'></span>%</td>
<td><span name='expect'>0</span>個</td>
<td><span name='count'>0</span>個</td>
<td>2回判定</td>
</tr>
<tr...
CSS
table {
border : 1px solid black;
border-collapse : collapse;
margin-bottom : 5px;
}
table td {
width : 80px;
text-align : right;
border : 1px solid black;
padding : 3px;
}
table td:first-child {
text-align : center;
}
#explain td {
width : 450px;
text-align : left;
}
#explain td:first-child {
width : 50px;
}
span.effect {
color : blue;
font-weight : bold;
}
div[name="stage"] {
border : 1px solid black;
padding : 10px;
margin : 5px 0px;
}
.up {
color : blue;
font-weight : bold;
}
.down {
color : red;
font-weight : bold;
}
img {
width : 40px;
height : 40px;
}
a {
text-decoration : none;
}
a:hover {
text-decoration : underline;
}
footer {
margin-top : 30px;
background-color : #333;
padding : 5px;
font-size : 12px;
text-align : right;
}
footer a {
color : white;
font-weight : bold;
}
JavaScript
$(function () {
var effect = false;
var Try = function (i, ref) {
var stage = ref.parent();
var result = stage.find("[name='result']");
var play = stage.find("[name='play']");
var challenge = parseInt(play.text(), 10) + 1;
play.text(challenge);
var charisma = stage.find("[name='charisma']");
charisma.text(parseInt(charisma.text(), 10) + stage.data('charisma'));
var stamina = stage.find("[name='stamina']");
stamina.text(parseInt(stamina.text(), 10) + stage.data('stamina'));
var nodrop = true;
var tmp = [];
var div = jQuery("<div></div>");
stage.find("[name='item'][data-drop]").each(function (j) {
var item = jQuery(this);
var count = item.data('count') || 1;
var drop = parseInt(item.data('drop'));
var zuttomo = item.data('zuttomo') ? 3 : 0;
var expect = Math.floor(drop * count * challenge / 100);
if (zuttomo) {
expect += "+" + Math.floor(zuttomo * count * challenge / 100);
}
item.find("[name='expect']").text(expect);
var $count = item.find("[name='count']");
var tmp = $count.text();
if (zuttomo) {
var jd = parseInt(tmp.split('+')[0]);
var jz = parseInt((tmp.split('+')[1]) || 0);
var jk = parseInt((tmp.split('+')[2]) || 0);
} else {
var jd = parseInt(tmp);
var jz = 0;
var jk = 0;
}
for (var c = 0; c < count; ++c) {
var r = Math.floor(Math.random() * 100);
if (r <= drop + zuttomo) {
nodrop = false;
div.append(item.find("img").clone());
if (r <= drop) {
jd++;
} else if (r <= drop + 2){
jz++;
...