From 5cb177383a28724824602dcb573dfde5885370b0 Mon Sep 17 00:00:00 2001 From: hellekin Date: Thu, 26 Apr 2018 05:12:31 +0200 Subject: QW4 simulates multiplayer. --- assets/js/pedometer4.js | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 assets/js/pedometer4.js (limited to 'assets/js/pedometer4.js') diff --git a/assets/js/pedometer4.js b/assets/js/pedometer4.js new file mode 100644 index 0000000..6b59963 --- /dev/null +++ b/assets/js/pedometer4.js @@ -0,0 +1,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(); + } + +}) -- cgit v1.2.3