venerdì 20 febbraio 2015

Iniziamo ad affrontare il problema di più ostacoli...

Adesso il problema è con più di un ostacolo.
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