xxxxxxxxxx
215
let reset;
let randoms=[0,1,2,3]
let points = 0;
let punkter = [];
let numb = [0, 1, 2];
let func = numb;
let tempn2 = [0, 1, 2];
let inputs = [];
let s = 1;
let O = [0, 0];
let a=[0,0,0,0,0]
let b=0
let r=[]
let rm=0
let tt=0
let rt=0
let rv=0
function setup() {
createCanvas(1200, 750);
s = height / 20;
O = [width / 2, height / 2];
reset = createButton("Gæt");
reset.mousePressed(resets);
r=random(randoms)
punkter.push(new vector([round(30*(random()-0.5)),round(18*(random()-0.5))]))
punkter.push(new vector([round(30*(random()-0.5)),round(18*(random()-0.5))]))
let tv=punkter[1].add(punkter[0].mult(-1)).co().mult(random())
let tv2=punkter[0].add(tv)
while(tv2.outside()&&tt<100){
tv2=punkter[0].add(tv.mult(-0.5))
tt++
}
punkter.push(tv2)
inputs.push(createInput(""));
inputs.push(createInput(""));
inputs.push(createInput(""));
inputs.push(createInput(""));
inputs.push(createInput(""));
a[0]=round(dis(punkter[0],punkter[1]),2)
a[1]=round(dis(punkter[0],punkter[2]),2)
a[2]=round(dis(punkter[2],punkter[1]),2)
a[3]=round(atan(a[0]/a[1])*180/PI,2)
a[4]=round(atan(a[1]/a[0])*180/PI,2)
rt=random([0,1])
rv=random([3,4])
for(let i=0;i<5;i++){inputs[i].value('')}
if(r==0){
inputs[0].value(a[0]);
inputs[1].value(a[1])}
else if(r==1){
inputs[rt].value(a[rt]);
inputs[2].value(a[2])
}else if(r==2){
inputs[rt].value(a[rt])
inputs[rv].value(a[rv])
}else{
inputs[2].value(a[2])
inputs[rv].value(a[rv])
}
inputs[0].style("background-color", "red");
inputs[3].style("background-color", "red");
inputs[1].style("background-color", "green");
inputs[4].style("background-color", "green");
inputs[2].style("background-color", "blue");
for (let i = 0; i < 5; i++) {
inputs[i].size(100);
}
}
function draw() {
background(220);
stroke("grey");
for (let i = 1; i < width / s; i++) {
line(i * s, 0, i * s, height);
}
for (let i = 1; i < height / s; i++) {
line(0, i * s, width, i * s);
}
strokeWeight(2);
stroke(0);
line(width / 2, 0, width / 2, height);
line(0, height / 2, width, height / 2);
text("Point:" + points, 10, 20);
strokeWeight(3);
noFill()
//print(atan(abs(punkter[rt].x[0] - punkter[0].x[0]) / abs(punkter[rt].x[1] - punkter[0].x[1])))
print(r)
if(r==0){
stroke("red");
linje(punkter[0], punkter[1]);
stroke("green");
linje(punkter[0], punkter[2]);
}else if(r==1){
stroke((rt==0)?"red":"green");
linje(punkter[0], punkter[1+rt]);
stroke("blue");
linje(punkter[1], punkter[2]);
}else if(r==2){
stroke((rt==0)?"red":"green");
linje(punkter[0], punkter[1+rt]);
stroke((rv==3)?"red":"green")
arc(
coord(punkter[2-rt])[0],
coord(punkter[2-rt])[1],
50,
50,
ang(punkter[rv-2],punkter[0]),
ang(punkter[rv-2],punkter[0])+a[rv]
);
}else{
stroke('blue')
linje(punkter[1], punkter[2]);
stroke((rv==3)?"red":"green")
arc(
coord(punkter[2-rt])[0],
coord(punkter[2-rt])[1],
50,
50,
ang(punkter[1+rt],punkter[0]+PI),
ang(punkter[1+rt],punkter[0])+a[rv]+PI);
}
stroke(0)
strokeWeight(1)
linje(punkter[0],punkter[1])
linje(punkter[0],punkter[2])
linje(punkter[1],punkter[2])
strokeWeight(1);
}
function resets() {
for(let i=0;i<a.length;i++){
print(a[i])
}
if (
inputs[0].value() == str(a[0]) &&
inputs[3].value() == str(a[3]) &&
inputs[1].value() == str(a[1]) &&
inputs[4].value() == str(a[4]) &&
inputs[2].value() == str(a[2])
) {
points++;
} else {
points--;
}
r=random(randoms)
punkter[0].x=[round(30*(random()-0.5)),round(18*(random()-0.5))]
punkter[0].x=[round(30*(random()-0.5)),round(18*(random()-0.5))]
let tv=punkter[1].add(punkter[0].mult(-1)).co().mult(random())
let tv2=punkter[0].add(tv)
while(tv2.outside()&&tt<100){
tv2=punkter[0].add(tv.mult(-0.5))
tt++
}
punkter[2]=tv2
a[0]=round(dis(punkter[0],punkter[1]),2)
a[1]=round(dis(punkter[0],punkter[2]),2)
a[2]=round(dis(punkter[2],punkter[1]),2)
a[3]=round(atan(a[0]/a[1])*180/PI,2)
a[4]=round(atan(a[1]/a[0])*180/PI,2)
rt=random([0,1])
rv=random([3,4])
for(let i=0;i<5;i++){inputs[i].value('')}
if(r==0){
inputs[0].value(a[0]);
inputs[1].value(a[1])}
else if(r==1){
inputs[rt].value(a[rt]);
inputs[2].value(a[2])
}else if(r==2){
inputs[rt].value(a[rt])
inputs[rv].value(a[rv])
}else{
inputs[2].value(a[2])
inputs[rv].value(a[rv])
}
}
function coord(x) {
return [x.x[0] * s + O[0], O[1] - x.x[1] * s];
}
class vector{
constructor(x) {
this.x = x;
this.a = 0;
}
add(y) {
return new vector([this.x[0] + y.x[0], this.x[1] + y.x[1]]);
}
mult(k) {
return new vector([this.x[0] * k, this.x[1] * k]);
}
co() {
return new vector([-this.x[1], this.x[0]]);
}
mag() {
return sqrt(sq(this.x[0]) + sq(this.x[1]));
}
outside(){
return this.x[0]<0||this.x[0]>width||this.x[1]<0||this.x[1]>height
}
}
function ang(v, w) {
let temp=abs(v.x[1] - w.x[1])
if(temp==0){
return PI/2
}else{
return atan(abs(v.x[0] - w.x[0]) / temp);
}
}
function linje(v, w) {
line(coord(v)[0], coord(v)[1], coord(w)[0], coord(w)[1]);
}
function dis(v,w){
return sqrt(sq(v.x[0]-w.x[0])+sq(v.x[1]-w.x[1]))
}