| [script] Générateur de labyrinthe parfait. | |
|
+6xxzerga marty Mr_Twister Dan_lizhot glcraft -Coco- 10 participants |
Auteur | Message |
---|
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: [script] Générateur de labyrinthe parfait. Mar 12 Oct 2010 - 19:45 | |
| Salut à tous, au péril de ma patience j'ai créé un script qui génère automatiquement (et aléatoirement) un labyrinthe parfait! Voilà le scrpit : - Code:
-
//script genererlaby(casesx, casesy) //par -Coco-
depx = argument0 depy = argument1
for (a=0;a<depx+3;a+=1) { for (b=0; b<depy+3; b+=1) { cases[a,b]=4 } }
for (a=0;a<depx+3;a+=1) { cases[a,0]=3 cases[a,depy+1]=3 }
for (a=0;a<depy+3;a+=1) { cases[0,a]=3 cases[depx+1,a]=3 }
for (a=0;a<depx*2+3;a+=1) { for (b=0; b<depy*2+3; b+=1) { instance_create(a*16,b*16,mur) } }
for (a=0;a<depx;a+=1) { for (b=0; b<depy; b+=1) { position_destroy((a+1)*32,(b+1)*32) } }
i=1 j=1
cases[i,j]=3
while 1 { plas=true while plas {
plas = true
if cases[i-1,j]!=4 and cases[i+1,j]!=4 and cases[i,j+1]!=4 and cases[i,j-1]!=4 { plas=false }
if plas = true { o=i p=j
repet=true
while repet { i=o j=p r=floor(random(4))
i+=(r=0) i-=(r=2) j+=(r=1) j-=(r=3)
if cases[i,j]=4 repet=false } cases[i,j]=3 position_destroy(((i*32+o*32)/2),((j*32+p*32)/2)) } }
continuer = false
for (a=1;a<depx+1;a+=1) { for (b=1;b<depy+1;b+=1) { if cases[a,b] = 4 continuer = true } } if continuer = false exit
continuer = true
while continuer = true { b=floor(random(depx-1))+1 c=floor(random(depy-1))+1 if cases[b,c]=3 { if cases[b+1,c]=4 or cases[b-1,c]=4 or cases[b,c+1]=4 or cases[b,c-1]=4 { i=b j=c continuer = false } } }
}
NOTE : Ce script ne marche que si votre objet est nommé "mur" et qu'il mesure 16*16 pixels. Si vous savez coder, vous pouvez toujours changer ces paramètres dans le code. Il m'a pris un certain temps mais il marche très bien. On peut changer la taille de cases en x et en y du labyrinthe. Je me suis dit que ça pourrait quand même être utile à certains, qui seraient peut être trop flemmards pour dessiner un labyrinthe dans la room ou pour coder un générateur. L'avantage de ce script c'estqu'il peut être appelé n'importe quand (mais c'est mieux dans un create ou un code de room). Pour ceux qui voudraient savoir à quoi ça ressemble avant d'avoir testé, voici ce que ça donne pour genererlaby(10,10) - Spoiler:
Attention : il peut arriver que ce script bugge, je n'ai aucune idée pourquoi, mais bon ça arrive à peu près une fois sur 10 _________________ Oh, snap.
|
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 12 Oct 2010 - 21:32 | |
| ah ouais bien |
|
| |
Invité Invité
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 12 Oct 2010 - 21:43 | |
| il suffit d'ajouter un 3ème argument pour utiliser l'objet de ton choix |
|
| |
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 12 Oct 2010 - 21:55 | |
| Certes mais bon, c'est surtout au niveau des position-destroy et des instance_create que ça va poser problème. après la licence est libre vous pouvez faire ce que vous voulez avec ^^ _________________ Oh, snap.
|
|
| |
Dan_lizhot Modérateur
Messages : 3463 Projet Actuel : Crypt Of Darkness
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 26 Oct 2010 - 22:51 | |
| c'est pas mal |
|
| |
Mr_Twister Très bonne participation
Messages : 144 Localisation : (null) Projet Actuel : Aucun.
| Sujet: Re: [script] Générateur de labyrinthe parfait. Dim 31 Oct 2010 - 13:28 | |
| Hey mais sa pourrais vraiment servir pour faire un Pokémon Donjon Mystere _________________ Sup bro. |
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 8 Mai 2012 - 12:17 | |
| salut qui peut m'expliquer la logique de se script svp?
|
|
| |
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mar 8 Mai 2012 - 22:10 | |
| Même moi j'en serais incapable à l'heure actuelle. En gros j'ai pris un algorithme de génération de labyrinthe, j'ai utilisé la maîtrise du noob que j'étais à l'époque, c'est à dire présence d'objets avec place_meeting au lieu d'un tableau, j'ai fait 3 tests et j'ai vu que ça marchait. La logique, difficile à dire, en réalité l'algo procède comme ceci : -Une grille remplie -On trace un trait continu jusqu'à ce que ça se bloque -on reprend une case au hasard -on recommence jusqu'à ce que tout soit troué.
Après je ne sais plus comment j'ai fait ça et j'ai la flemme de relire mon script. _________________ Oh, snap.
|
|
| |
marty Utilisateur confirmé: Rang ***
Messages : 697 Projet Actuel : laby-ereinte !
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mer 9 Mai 2012 - 19:30 | |
| merci |
|
| |
xxzerga Débutant
Messages : 10
| Sujet: MERCI ! Mer 10 Oct 2012 - 14:48 | |
| J'ai essayé de programmer un générateur de labyrinthe pendant 3 mois, et à chaque fois ça buggait ( tout les murs ne se détruisaient pas) Là j'en ai un, je vais pouvoir continuer mon jeu ! MERCI BEAUCOUP !!!!!!! EDIT: Oh, dommage, il bugge ... quand je le lance, il me met : game.exe a cessé de fonctionner Si quelqu’un pouvait m'aider, je lui serait vraiment reconnaissant ! |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mer 10 Oct 2012 - 17:36 | |
| Il est dit dans le premier post qu'il bugue une fois sur 10, t'as essayé plusieurs fois ? |
|
| |
xxzerga Débutant
Messages : 10
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mer 10 Oct 2012 - 18:24 | |
| Oui, une dizaine de fois ... |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [script] Générateur de labyrinthe parfait. Mer 10 Oct 2012 - 18:39 | |
| Ah bon bah je sais pas alors, désolé |
|
| |
l0lmanPH Utilisateur confirmé: Rang *
Messages : 226 Localisation : cbna.forumactif.com Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM
| Sujet: Re: [script] Générateur de labyrinthe parfait. Sam 13 Oct 2012 - 21:38 | |
| J'ai commencé à annoter le code mais j'ai vite abandonné x'). Je poste pour ne pas sentir mon effort inutile. - Code:
-
//script genererlaby(casesx, casesy) //par -Coco-
depx = argument0 // taille horizontale de la surface des murs depy = argument1 // ... verticale ...
//initialisation for (a=0;a<depx+3;a+=1) { //pourquoi les + 3 ? for (b=0; b<depy+3; b+=1) { cases[a,b] = 4 // on remplit tout le tableau avec la valeur "4", qui signifie vide. } }
//fermeture horizontale for (a=0;a<depx+3;a+=1) { cases[a,0]=3 // ligne de murs en haut cases[a,depy+1]=3 // ligne de murs en bas }
//fermeture verticale for (a=0;a<depy+3;a+=1) { cases[0,a]=3// ligne de murs de gauche cases[depx+1,a]=3 // ligne de murs de droite }
// créer les objets à partir du tableau for (a=0;a<depx*2+3;a+=1) { // pourquoi * 2 ? 2 fois plus de murs ? for (b=0; b<depy*2+3; b+=1) { instance_create(a*16,b*16,mur) // 16 : taille du sprite. } }
for (a=0;a<depx;a+=1) { for (b=0; b<depy; b+=1) { position_destroy((a+1)*32,(b+1)*32) // détruire un mur sur deux ? + 1 pour ne pas détruire les murs qui ferment le labyrinthe ? } }
i=1 j=1
cases[i,j]=3 // Pourquoi cette case ?
// la boucle du jeu while 1 { plas=true // signification de plas ?
while plas { plas = true
if cases[i-1,j]!=4 and cases[i+1,j]!=4 and cases[i,j+1]!=4 and cases[i,j-1]!=4 { plas=false }
if plas = true { o=i p=j
repet=true
while repet { i=o j=p r=floor(random(4))
i+=(r=0) i-=(r=2) j+=(r=1) j-=(r=3)
if cases[i,j]=4 repet=false } cases[i,j]=3 position_destroy(((i*32+o*32)/2),((j*32+p*32)/2)) } }
continuer = false
for (a=1;a<depx+1;a+=1) { for (b=1;b<depy+1;b+=1) { if cases[a,b] = 4 continuer = true } } if continuer = false exit
continuer = true
while continuer = true { b=floor(random(depx-1))+1 c=floor(random(depy-1))+1 if cases[b,c]=3 { if cases[b+1,c]=4 or cases[b-1,c]=4 or cases[b,c+1]=4 or cases[b,c-1]=4 { i=b j=c continuer = false } } }
} _________________ « Un même visage, un même passé, deux destins différents ? » Metroid Prime : Némésis, fangame et suite du célèbre Metroid Prime 3 : Corruption. Rédaction d'un big-tuto pour le SdZ sur Game Maker... Avancement : 60% hors-ligne, 5% en ligne. |
|
| |
onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script] Générateur de labyrinthe parfait. Sam 13 Oct 2012 - 23:04 | |
| |
|
| |
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: [script] Générateur de labyrinthe parfait. Dim 14 Oct 2012 - 9:54 | |
| Désolé, j'ai fait ça dans ma jeunesse, y'a de l'optimisation niveau 0 et c'est plutôt buggé. Mais en tout cas chez moi ça marchait (GM 8.0). Faut que tu fasses gaffe aux conditions initiales : faut que l'objet soit avec une zone de collision carrée de 16*16 pixels (je crois). En gros c'est un sprite carré de 16*16. Sinon y'a des problèmes de boucle infinie (il arrivera jamais à trouver de la place alors qu'il sait qu'il lui reste des blocs à placer).
Malheureusement j'ai la flemme de faire un code stable, j'avais fait celui là à partir d'un programmes que j'avais fait sur calculatrice (c'est pour ça qu'il y a des +3, +2 et ce genre de conneries, j'avais fait en sorte de réussir à le faire marcher sur calto, puis je l'ai recopié, donc y'a certains trucs je sais même plus ce que ça fait).
D'ailleurs mon code est plutôt merdique, j'utilise à la fois des tableaux et des position_destroy... _________________ Oh, snap.
|
|
| |
el_loco67000 Nouveau
Messages : 9
| Sujet: Re: [script] Générateur de labyrinthe parfait. Sam 27 Aoû 2016 - 16:02 | |
| bonjour,
quelqu'un a t il trouvé le bug qui faisait planter ce sympathique script? j'ai bien besoin d'un générateur et celui ci me plait bien... mais plante hélas parfois... j'ai bien tenté de trouver pourquoi mais sans succes ^^ |
|
| |
Contenu sponsorisé
| Sujet: Re: [script] Générateur de labyrinthe parfait. | |
| |
|
| |
| [script] Générateur de labyrinthe parfait. | |
|