Mentre finora ero riuscito a superare i problemi, adesso invece il problema è completamente nuovo e mi ci sto scervellando teoricamente da tempo.
Meglio mettere tutto in pratica e sperimentare, anziché fasciarsi la testa con le obiezioni a livello teorico.
L'idea di base è mettere la variabile direzione come proprietà di ogni oggetto ostacolo.
Proviamo, nella dichiarazione del costruttore di rect:
function rect(x,y,w,h,colore){
this.direzione="";
this.x=x;
this.y=y;
this.w=w;
this.h=h;
this.colore=colore
this.disegna=function(){
ctx.fillStyle=this.colore;
ctx.beginPath();
ctx.rect(this.x,this.y,this.w,this.h);
ctx.closePath();
ctx.fill();
}
}
E a questo punto il programma dovrà leggere la direzione da ogni singolo oggetto... Vediamo di costruire un codice plausibile...function OnMouseMove(evt){ puntoX=evt.pageX-canvas.offsetLeft; puntoY=evt.pageY-canvas.offsetTop; ostacolo.direzione=""; if(scavalcaDestra(puntoX,rettangolo,ostacolo)) ostacolo.direzione="destra"; if(scavalcaSinistra(puntoX,rettangolo,ostacolo)) ostacolo.direzione="sinistra"; if(scavalcaAlto(puntoY,rettangolo,ostacolo))ostacolo.direzione="alto"; if(scavalcaBasso(puntoY,rettangolo,ostacolo))ostacolo.direzione="basso"; scrivi(ostacolo.direzione); rettangolo.x=puntoX; rettangolo.y=puntoY; if(ostacolo.direzione=="basso")rettangolo.y=alto(ostacolo)-rettangolo.h; if(ostacolo.direzione=="alto")rettangolo.y=basso(ostacolo); if(ostacolo.direzione=="destra")rettangolo.x=sinistra(ostacolo)-rettangolo.w; if(ostacolo.direzione=="sinistra")rettangolo.x=destra(ostacolo); }Funziona esattamente come prima.
Adesso il problema è attribuire a ogni ostacolo un valore diverso...
Nessun commento:
Posta un commento