xxxxxxxxxx
let p=[0,0],v=[0,0],
rects=[
[0,1000,10000,50],
[0,150,600,20],
[60,150,20,60],
[190,70,160,20],
[60,10,20,20]
]
setup=_=>{
createCanvas(400,400)
for(let i=1;i<100;i++){
rects.push([260+i,70-i,20,20])
}
for(let i=1;i<35;i++){
rects.push([60-i,10-i,20,20])
}
}
draw=_=>{
v[1]+=0.2
if(keyIsDown(65))v[0]-=0.3
if(keyIsDown(68))v[0]+=0.3
v[0]*=0.9
background(0)
stroke(100)
line(0,0,0,400)
line(400,0,400,400)
line(0,0,400,0)
line(0,400,400,400)
for(let i=0;i<11;i++){
line(0,40*i-(p[1]%40),400,40*i-(p[1]%40))
line(40*i-(p[0]%40),0,40*i-(p[0]%40),400)
}
fill(255);noStroke()
for(let i=0;i<rects.length;i++){
if(Math.abs(p[1]-rects[i][1])<(rects[i][3]/2+10)){
if(Math.abs(p[0]-rects[i][0])<(rects[i][2]/2+5)){
v[1]=0
if(p[1]>rects[i][1]){
p[1]=rects[i][1]+rects[i][3]/2+10
}else{
if(keyIsDown(87))v[1]=-5
p[1]=rects[i][1]-rects[i][3]/2-10
}
}
}
if(Math.abs(p[0]-rects[i][0])<(rects[i][2]/2+10)){
if(Math.abs(p[1]-rects[i][1])<(rects[i][3]/2+5)){
v[0]=0
v[1]*=0.9
if(p[0]>rects[i][0]){
p[0]=rects[i][0]+rects[i][2]/2+10
}else{
p[0]=rects[i][0]-rects[i][2]/2-10
}
}
}
}
for(let i=0;i<rects.length;i++){
rect(200-p[0]+rects[i][0]-rects[i][2]/2,200-p[1]+rects[i][1]-rects[i][3]/2,rects[i][2],rects[i][3])
}
fill(255,0,0)
rect(195,190,10,20)
rect(190,195,20,10)
triangle(195,190,190,195,195,195)
triangle(205,210,210,205,205,205)
triangle(195,210,190,205,195,205)
triangle(205,190,210,195,205,195)
p[0]+=v[0]
p[1]+=v[1]
}