Soyez le premier à donner votre avis sur cette source.
Vue 7 366 fois - Téléchargée 1 565 fois
var Laby=function(nc,nl) { // objet labyrinthe this.Nc=nc; // nombre de colonnes this.Nl=nl; // nombre de lignes this.Sud=new Uint8Array(nc*nl); // murs intérieurs horizontaux this.Est=new Uint8Array(nc*nl); // murs intérieurs verticaux }
Nc=9, Nl=7, Ne=Nc*Nl; (Nombre de Colonnes, Lignes, Eléments) c=0 1 2 3 4 5 6 7 8 +-------+ nord l=0 0 1 2 3 4 5 6 7 8 | Ele Est ouest ele est 1 9 10 11 12 13 14 15 16 17 +--Sud--+ sud 2 18 19 20 21 22 23 24 25 26 3 27 28 29 30 31 32 33 34 35 Murs intérieurs: 4 36 37 38 39 40 41 42 43 44 horizontaux: Nc*(Nl-1) = 9*6 = 54 5 45 46 47 48 49 50 51 52 53 verticaux: (Nc-1)*Nl = 8*7 = 56 6 54 55 56 57 58 59 60 61 62 total: Nm=2*Nc*Nl-Nc-Nl = 110 On ignore les murs Est de la dernière colonne et Sud de la dernière ligne.
Laby.prototype.Draw=function(ctx,dx,dy,w) { var e,m,x,y,nc=this.Nc,X=nc*dx,Y=this.Nl*dy,sud=this.Sud,est=this.Est; ctx.strokeRect(0,0,X,Y); for (y=dy,e=0; y<Y; y+=dy) { // horizontal walls optimized for (x=0,m=0; x<X; x+=dx,e++) if (m!=sud[e]) {if (m=1-m) ctx.moveTo(x-w,y); else ctx.lineTo(x+w,y);} if (m) ctx.lineTo(x,y); ctx.stroke(); } for (x=dx,l=0; x<X; x+=dx,l++) { // vertical walls optimized for (y=0,e=l,m=0; y<Y; y+=dy,e+=nc) if (m!=est[e]) {if (m=1-m) ctx.moveTo(x,y-w); else ctx.lineTo(x,y+w);} if (m) ctx.lineTo(x,y); ctx.stroke(); } } // by William VOIROL, Switzerland, Dec 2016
NE=20*15; Sud=new Uint8Array(NE); // murs horizontaux Est=new Uint8Array(NE); // murs verticaux Sud.set([0,1,1,1,0,1,0,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,1 ,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,1,1,0 ,0,0,0,0,0,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,0,1,1,1,0 ,1,0,1,0,0,0,0,1,1,0,0,1,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,0,0,0 ,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0 ,0,1,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,1 ,0,1,1,0,1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,1,0,1,1,0 ,1,0,1,0,1,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,1,1,0,1,0,0 ,1,0,0,0,1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0 ,0,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); Est.set([0,0,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0 ,1,1,0,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1 ,1,1,0,1,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,0,0 ,1,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1 ,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,0,1,1,0,1,0,1,0,1,1 ,1,1,1,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,1,0,0,1,1,0,0,1,1,0,1,1 ,1,0,0,0,1,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1 ,1,0,0,1,1,1,0,0,1,1,0,1,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1 ,1,1,1,1,0,1,0,1,1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,0,0,0,1,0 ,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1]);
Remarque:
Ne vous fiez qu’au versions téléchargées car sous <voir> on ne retrouve pas les deux premiers caractères.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.