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
|
// Interval milliseconds between accelerometer readings
const poll_interval = 200
$(document).ready(function(){
// We may not have an accelerometer
var has_accel = false
// Make the SVG occupy all the screen
$('body').css({ width: '100vw', height: '100vh', margin: 0, padding: 0, overflow: 'hidden' })
$('#left-bits').css({ width: '100%', height: '100%', background: '#931', margin: 0 })
.removeAttr('viewBox')
.each(function() { $(this)[0].setAttribute('viewBox', '0 0 ' + parseInt($('body').css('width')) + ' ' + parseInt($('body').css('height'))) })
console.log("-- ready --");
// on déclare l'ensemble des variables ax et ay sont les données
// d'acceleration, n c'est la norme, maxn et minn les valeurs max
// et min de la norme, et pas le nombre de pas
var n=0, maxn = 0, minn = 0, pas = 0,
ax = 0, ay = 0, az = 0, pass=0;
function odmHandler(e) {
// we do have an accelerometer
has_accel = true
// read from it
ax = event.accelerationIncludingGravity.x ;
ay = event.accelerationIncludingGravity.y ;
az = event.accelerationIncludingGravity.z ;
}
// fake an accelerometer
// min/max at -12/12 mean reasonably fast pace
// grow to accelerate
// < 10 might not bring any result
function fakeAccel() {
var min = -12, max = 12
return Math.random() * (max - min) + min;
}
function mockAccelerometer() {
// we're on a desktop, yep
has_accel = false
// make up values
ax = fakeAccel()
ay = fakeAccel()
az = fakeAccel()
}
//programme d'alberto desarullo qui va chercher les données de l'accelerometre
// Why do you have the interface if you don't have the device?
if (window.DeviceMotionEvent != undefined) {
window.ondevicemotion = odmHandler
var ev = new Event("requestMove");
function pollAccelerometer() {
setInterval(makeStep, poll_interval)
}
function makeStep() {
if (!has_accel) {
// no accelerometer: fake values
mockAccelerometer()
}
// on calcule la norme c'est à dire la taille du
// vecteur qui est défini par les points
// d'accélération ax ay et az
n0 = n;
n = Math.sqrt (ax*ax + ay*ay + az*az);
// on calcule un min et max pour la norme
if (n < n0) {
minn = n ;
} else if (n > n0) {
maxn = n ;
}
// on définit un seuil qui correspond à un pas
if ((maxn - minn) > 10) {
// on simule multi-joueur en assignant une team au pas
//pas = pas+1;
var this_team = teams[rInt(0, teams.length - 1)]
updateScore(this_team, 1)
document.dispatchEvent(ev);
}
}
pollAccelerometer();
}
})
|