-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsketch.js
112 lines (97 loc) · 2.49 KB
/
sketch.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const infectionRadius = 10;
const sickcounttext = document.querySelector("#sickcount");
const immunecounttext = document.querySelector("#immunecount");
const peaktext = document.querySelector("#peak");
const commoncounttext = document.querySelector("#commoncount");
const deadtext = document.querySelector("#dead")
const dataRecordDelay = 180; // frames
let savedata = true;
let people = [];
let peak = 0;
let skdata = 0;
let imdata = 0;
let cpdata = 0;
let pedata = 0;
let dedata = 0;
let drdp = dataRecordDelay;
let skcp, imcp, cpcp, peap, dpcp;
let paused = false;
function setup() {
createCanvas(800, 600);
for(let i = 0; i < 200; i++) {
people.push(new Person(floor(random(10)) == 1 ? true : false));
}
frameRate(60);
}
function draw() {
background(0);
let skc = 0;
let imc = 0;
let cpc = 0;
let dpc = 0;
for(let i = 0; i < people.length; i++) {
people[i].update();
people[i].edge();
people[i].emitInfection(people);
if(people[i].isSick)
skc++;
else if(people[i].immune)
imc++;
else if(people[i].isDead)
dpc++;
else
cpc++;
people[i].show();
}
peak = max(peak, skc);
sickcounttext.textContent = `Sick: ${skc} / ${people.length}`;
commoncounttext.textContent = `Uninfected: ${cpc} / ${people.length}`;
immunecounttext.textContent = `Immune: ${imc} / ${people.length}`;
peaktext.textContent = `Peak: ${peak}`;
deadtext.textContent = `Dead: ${dpc}`;
skcp = skc;
imcp = imc;
cpcp = cpc;
peap = peak;
dpcp = dpc;
if(drdp <= 0) {
if(savedata)
saveData();
drdp = dataRecordDelay;
}
drdp -= 1;
}
function mousePressed() {
savedata = !savedata;
}
function keyPressed() {
if(keyCode == ENTER) {
pause();
}
}
function pause() {
paused = !paused;
if(!paused)
loop();
else
noLoop();
}
function saveData() {
let dataToSave = {
sick: skcp,
immune: imcp,
uninfected: cpcp,
peak: peap,
dead: dpcp
};
skdata++;
imdata++;
cpdata++;
pedata++;
dedata++;
addLabel(mychart, floor(frameCount / 60));
addData(mychart, 0, dataToSave.sick);
addData(mychart, 1, dataToSave.immune);
addData(mychart, 2, dataToSave.uninfected);
addData(mychart, 3, dataToSave.dead);
}