Repository navigation
Expand file tree
/
Copy pathsimulator.js
More file actions
113 lines (108 loc) · 3.26 KB
/
Copy pathsimulator.js
File metadata and controls
113 lines (108 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* Battle Flow */
async function simulate(
count = 1,
playerA = new Attacker(),
playerB = new Attacker(),
element = undefined
) {
let aWin = 0,
bWin = 0;
// console.log(playerA, playerB);
for (let i = 0; i < count; i++) {
playerA.initStatus(true);
playerB.initStatus(true);
let round = 0;
await appendAndScrollElem(element, `<br />=== Battle ${i + 1} Start ===`);
do {
round++;
let battle = Player.attackEachOther(playerA, playerB);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(element, `<br />~ Round ${round} ~`);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(
element,
`<br />${playerA} ${battle.statusA.dice20s
.map(Plurk.getDiceImageSrc)
.map(Util.imageTagBuilder)
.join("")} ${battle.statusA.bzzs
.map(Plurk.getBzzImageSrc)
.map(Util.imageTagBuilder)
.join("")}`
);
await appendAndScrollElem(
element,
`<br />${playerB} ${battle.statusB.dice20s
.map(Plurk.getDiceImageSrc)
.map(Util.imageTagBuilder)
.join("")} ${battle.statusB.bzzs
.map(Plurk.getBzzImageSrc)
.map(Util.imageTagBuilder)
.join("")}`
);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(
element,
`<br />${playerA} do ${battle.statusA.message}`
);
await appendAndScrollElem(
element,
`<br />${playerB} do ${battle.statusB.message}`
);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(
element,
`<br />${playerA} attack ${battle.attacks[0]} damage!`
);
await appendAndScrollElem(
element,
`<br />${playerB} attack ${battle.attacks[1]} damage!`
);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(
element,
`<br />${playerA} get ${battle.damages[0]} damage!`
);
await appendAndScrollElem(
element,
`<br />${playerB} get ${battle.damages[1]} damage!`
);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(element, `<br />~ Round ${round} Summary ~`);
appendAndScrollElem(element, "<br />");
await appendAndScrollElem(
element,
`<br />${playerA}: HP = ${playerA.getHp()}`
);
await appendAndScrollElem(
element,
`<br />${playerB}: HP = ${playerB.getHp()}`
);
appendAndScrollElem(element, "<br />");
} while (
(playerA.getHp() > 0 && playerB.getHp() > 0) ||
playerA.getHp() == playerB.getHp()
);
await appendAndScrollElem(element, `<br />=== Battle ${i + 1} End ===`);
if (playerA.getHp() > playerB.getHp()) {
aWin += 1;
} else {
bWin += 1;
}
// console.log(`A: ${playerA.getHp()} B: ${playerB.getHp()}`);
}
return `A Win: ${aWin}, B Win: ${bWin}`;
}
async function appendAndScrollElem(element, html) {
if (element === undefined) {
return;
}
element.innerHTML += html;
element.lastElementChild.scrollIntoView();
await Util.sleep(1000);
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function imageTagBuilder(src) {
return `<img src="${src}" />`;
}