xxxxxxxxxx
123
const SYMBOL_3_STICKRATE = 0.6;
const SYMBOL_4_STICKRATE = 0.6;
const SYMBOL_GENERIC_STICKRATE = 0.75;
const SYMBOLSDICT = [
["0", 0.25],
["1", 0.5],
["2", 0.75],
["3", 0.9],
["4", 1],
];
const WINNINGLINES = [
[0, 0, 0],
[1, 1, 1],
[2, 2, 2],
[0, 1, 2],
[2, 1, 0],
];
let wheels;
let vollbilder = 0;
let goal = 1000;
let symboltocheck = "3";
let round = 0;
function setup() {
createCanvas(400, 400);
let w1 = [];
let w2 = [];
let w3 = [];
wheels = [w1, w2, w3];
while (vollbilder < goal) {
role();
round++;
}
print(round / goal);
}
function draw() {}
function role() {
setNewFields();
if (evaluate()) {
vollbilder++;
}
}
function setNewFields() {
for (let j = 0; j < 3; j++) {
for (let i = 0; i < 3; i++) {
if (i == 0) {
let r = Math.random();
for (let k = 0; k < SYMBOLSDICT.length; k++) {
if (r < SYMBOLSDICT[k][1]) {
wheels[j][i] = SYMBOLSDICT[k][0];
break;
}
}
} else {
let r2 = Math.random();
let symbolSet = true;
switch (wheels[j][i - 1]) {
case "3":
if (r2 < SYMBOL_3_STICKRATE) {
wheels[j][i] = (wheels[j][i - 1]);
} else {
symbolSet = false;
}
break;
case "4":
if (r2 < SYMBOL_4_STICKRATE) {
wheels[j][i] = (wheels[j][i - 1]);
} else {
symbolSet = false;
}
break;
default:
if (r2 < SYMBOL_GENERIC_STICKRATE) {
wheels[j][i] = (wheels[j][i - 1]);
} else {
symbolSet = false;
}
}
if (!symbolSet) {
let r3 = Math.random();
for (let k = 0; k < SYMBOLSDICT.length; k++) {
if (r3 < SYMBOLSDICT[k][1]) {
wheels[j][i] = (SYMBOLSDICT[k][0]);
break;
}
}
}
}
}
}
}
function evaluate() {
let linesWon = [];
let wheel0 = wheels[0];
let wheel1 = wheels[1];
let wheel2 = wheels[2];
for (const [index, line] of WINNINGLINES.entries()) {
if (
wheel0[line[0]] == wheel1[line[1]] &&
wheel1[line[1]] == wheel2[line[2]]
) {
linesWon.push([index + 1, wheel0[line[0]]]);
}
}
if (linesWon.length == 5 && linesWon[0][1] == symboltocheck) {
return 1;
} else {
return 0;
}
}