xxxxxxxxxx
116
let xp, y1, y2;
let h, l;
let x, y, vx, vy;
let r;
let mag = 2;
let classifier;
let modelURL = 'https://teachablemachine.withgoogle.com/models/g-c-eOlRY/';
let result;
function preload() {
classifier = ml5.soundClassifier(modelURL + 'model.json');
}
function setup() {
createCanvas(400, 400);
xp = 30;
y1 = 200;
y2 = 200;
h = 100;
l = 5;
r = 5;
x = width / 2;
y = height / 2;
v = createVector(random([-1, 1]), random([-1, 1]));
v.setMag(mag);
classifyAudio();
}
function classifyAudio() {
classifier.classify(gotResults);
}
function draw() {
background(220);
rectMode(CENTER);
angleMode(RADIANS);
if (result == 'Haut 1' && y1 > h / 2) {
y1 -= 5;
}
if (result == 'Bas 1' && y1 < 400 - h / 2) {
y1 += 5;
}
if (result == 'Haut 2' && y2 > h / 2) {
y2 -= 5;
}
if (result == 'Bas 2' && y2 < 400 - h / 2) {
y2 += 5;
}
if (y - r < 0 || y + r > height) {
v.y = -v.y;
}
//joueur 1
if (x < r || x > width - r) {
x = width / 2;
y = height / 2;
v = createVector(random([-1, 1]), random([-1, 1]));
v.setMag(mag);
}
if (x - r < xp - l / 2 && x - r < xp + l / 2 && abs(y1 - y) <= h / 2) {
let angle = map((y1 - y), -h / 2, h / 2, -2 * PI / 3, 2 * PI / 3) + PI;
v = p5.Vector.fromAngle(angle, mag);
v.x = -v.x;
}
//joueur 2
if (x + r > width - xp + l / 2 && x + r > width - xp - l / 2 && abs(y2 - y) <= h / 2) {
v.x = -v.x;
}
x += v.x;
y += v.y;
fill(0);
rect(xp - l, y1, l, h);
rect(width - xp + l, y2, l, h);
circle(x, y, r * 2);
}
function gotResults(error, results) {
if (error) {
console.error(error);
return;
}
if (results[0].confidence > 0.90) {
result = results[0].label;
} else {
result = ''
}
}