javascript でスロットマシンを作ってみた。
???
???
???
var box = [];
box[11] = document.getElementById("11");
box[12] = document.getElementById("12");
box[13] = document.getElementById("13");
box[21] = document.getElementById("21");
box[22] = document.getElementById("22");
box[23] = document.getElementById("23");
box[31] = document.getElementById("31");
box[32] = document.getElementById("32");
box[33] = document.getElementById("33");
var state = [0, 0, 0];
var gosign = 1;
var active = 0;
var timerId;
function check() {
var hitCount = 0;
for (var i = 1; i <= 3; i++) {
if (box[i + 10].innerHTML == box[i + 20].innerHTML &&
box[i + 10].innerHTML === box[i + 30].innerHTML) {
hitCount++;
}
}
if (box[11].innerHTML == box[33].innerHTML &&
box[11].innerHTML == box[22].innerHTML) {
hitCount++;
}
if (box[13].innerHTML == box[31].innerHTML &&
box[13].innerHTML == box[22].innerHTML) {
hitCount++;
}
if (hitCount > 0) {
alert(hitCount.toString() + "ラインそろった!");
} else {
alert("残念!");
}
}
function start() {
if (active === 0) {
document.getElementById("st").disabled = true;
active = 1;
}
gosign = 0;
for (var i = 0; i < 3; i++) {
if (state[i] == 0) {
roll(i + 1);
gosign = 1;
}
}
if (gosign == 1) {
timerId = setTimeout(start, 50);
} else {
gosign = 0;
state = [0, 0, 0];
clearTimeout(timerId);
check();
document.getElementById("st").disabled = false;
active = 0;
}
}
function roll(index) {
box[index * 10 + 3].innerHTML = box[index * 10 + 2].innerHTML;
box[index * 10 + 2].innerHTML = box[index * 10 + 1].innerHTML;
box[index * 10 + 1].innerHTML = Math.floor(Math.random() * 10);
}
function stop(index) {
if (active === 1) {
state[index - 1] = 1;
}
}
ただしこのスロットは超あたりにくい。なぜかというと、出てくる数字が乱数でできているから。普通なら、出てくる数字は決まった配列になっていて、それが何回も繰り返し出てくることになる。だけどこれは、毎回乱数で数字を出すから、しばらくの間 特定の数字が出てこないことも(可能性としては)ある。
これでラインが1つでもそろったら強運だよ。