-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdoor.js
98 lines (82 loc) · 2.06 KB
/
door.js
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
var doors = [];
var doorDiv = document.getElementById("door-div");
var scoreDiv = document.getElementById("score");
var openDoorFile = "media/open.png";
var closedDoorFile = "media/closed.png";
var gertrudeFile = "media/gertrude.mp3";
var ticker;
var dt = 100; // in milliseconds
var n = 0; // number of game ticks so far
var freq = 0.05;
var playing = false;
var score = 0;
function togglePlay() {
if (playing == false) {
playing = true;
beginPlay();
} else {
playing = false;
endPlay();
}
}
function beginPlay() {
document.getElementById("togglePlay").innerHTML = "Stop this madness!!";
makeNewDoor();
scoreDiv.style.display = "block";
scoreDiv.innerHTML = "Score: 0";
ticker = setInterval(tick, dt);
}
function endPlay() {
doors = [];
document.getElementById("togglePlay").innerHTML = "Click to Play!";
while (doorDiv.firstChild) {
doorDiv.removeChild(doorDiv.firstChild);
}
clearInterval(ticker);
score = 0;
scoreDiv.style.display = "none";
}
function makeNewDoor() {
var door = document.createElement("img");
door.src = closedDoorFile;
door.onclick = function() {
close(door);
}
var audio = new Audio(gertrudeFile);
audio.loop = true;
doors.push(door);
door.appendChild(audio);
doorDiv.appendChild(door);
}
function close(door) {
door.src = closedDoorFile;
door.style.cursor = "default";
// door.onclick = function() {
// return;
// }
var audio = door.children[0];
audio.pause();
audio.currentTime = 0;
score += 1;
scoreDiv.innerHTML = "Score: " + score;
if (doors.length < 21) {
makeNewDoor();
}
}
function open(door) {
door.src = openDoorFile;
door.style.cursor = "pointer";
door.onclick = function() {
close(door);
}
}
function tick() {
n += 1;
if (Math.random() < freq) {
var i = Math.floor(Math.random() * doors.length);
var door = doors[i];
var audio = doors[i].children[0];
open(door);
audio.play();
}
}