Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graph 35 à 100 >> Réflexion >> Maze Generator
Maze Generator
Version : 1.1 Taille : 2672 octets Ajouté le : 2016-11-16 20:25 Modifié le : 2016-11-28 10:22
Auteur et posteur :
ForabbyHors ligneMembrePoints: 28 Défis: 2 Message
Planète Casio - Jeu Casio de reflexion - Maze Generator - ForAbby - Calculatrices
Nombre de visites sur cette page : 5832
Score au progrank : 34
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
974 téléchargements | Soumettre un test

Ce programme est dans le domaine public.


Description :

Aujourd'hui je vous présente mon premier programme que je poste sur Planète Casio. 8)

Et pour cette occasion j'ai fait un générateur de labyrinthe avec taille customisable, utilisant l'algorithme du "recursive backtracking".

Une fois le labyrinthe généré vous pouvez y jouer pour essayer de trouver la sortie.

J'aimerais beaucoup avoir des retour sur ce que vous pensez du code pour pouvoir m'améliorer.

Ce programme remplace votre pict1 et la liste 1 mais si vous les supprimer cela na aucun effet sur le programme, les variables utiliser sont entre A et L mais aussi les variables r et θ et la Matrice A

Merci

Patch 1.1:
-nouveau logo de démarrage
(plus styler) 8)
-code légèrement plus optimiser (VRAIMENT légèrement)


Commentaires :

Pages: Précédente | 1, 2

LephenixnoirEn ligneAdministrateurPoints: 24145 Défis: 170 Message
Posté le 02-11-2018 à 09:57 | #
C'est... une marche aléatoire avec backtracking ("retour sur ses pas").

Tant que E est plus petit que longeur * largeur /2

Ça c'est le nombre d'étapes de marche aléatoire que l'algorithme va faire. Forabby se déplace au hasard dans le labyrinthe jusqu'à ce qu'il ait découvert longueur * largeur / 2 cases en tout.

Si cellule vide
a droite mettre 1 dans liste 1
en bas mettre 2 dans liste 1
a gauche mettre 3 dans liste 1
en haut mettre 4 dans liste 1

Ici, il regarde dans quelles directions il peut aller. Dans sa marche aléatoire, il ne peut pas aller n'importe où car il veut uniquement aller sur des cases sur lesquelles il n'est pas encore passé. Il cherche donc les cases inexplorées autour de lui. Il peut y en avoir entre 0 et 4 en tout, il note lesquelles dans la liste 1.

La partie suivante est exécutée s'il y a au moins une case libre à côté :

choisir nombre aleatoire entre 1 est dim liste 1
Si nombre au coordonnées dans liste 1 est égale
a 1 alors aller a droite
a 2 alors aller en bas
a 3 alors aller a gauche
a 4 alors aller en haut

Ici donc, il choisit au hasard une des cases libre autour de lui, et il y va.

puis mettre contenue liste au coordonnées aleatoire dans matrice
puis incrementer E

Ensuite il note son chemin en mettant la direction qu'il a choisi dans une matrice. Comme ça, il pourra revenir sur ses pas plus tard (jusqu'au tout début du labyrinthe si besoin).

Et puis, comme il a découvert une nouvelle case, il augmente E.

La partie suivante est exécutée s'il n'y a pas de case libre autour du programme :

Sinon
Si contenue matrice egale a 1
aller a gauche
Sinon
Si contenue matrice egale a 2
aller en haut
Sinon
Si contenue matrice egale a  3
aller a droite
Sinon
Si contenue matrice egale a 4
aller en bas

Dans cette partie, le programme revient sur ses pas : tu peux voir que la valeur 1 qui voulait dire "aller à droite" plus haut signifie maintenant "aller à gauche". Pareil pour les autres.

Donc, pour résumer un peu... ce programme génère un labyrinthe en explorant au hasard toutes les cases de l'écran. Tant qu'il y a des cases encore non explorées autour de lui, le programme avance au hasard ; et quand il se retrouve bloqué il revient en arrière pour trouver les cases qu'il a ratées.

Des questions ?
ManoloHors ligneMembrePoints: 910 Défis: 13 Message
Posté le 02-11-2018 à 12:37 | #
j'ai un peu mieux compris, mais la fin est à un emplacement aléatoire?
LephenixnoirEn ligneAdministrateurPoints: 24145 Défis: 170 Message
Posté le 02-11-2018 à 13:33 | #
Non car, comme il explore toutes les cases... en particulier à un moment il finit par arriver en bas à droite.

Après le programme s'arrange peut-être pour terminer par là, je n'ai pas lu le détail du code.
LepianoteurHors ligneMembrePoints: 217 Défis: 0 Message
Posté le 02-11-2018 à 13:40 | #
intéressant, je dirais même inspirant
ManoloHors ligneMembrePoints: 910 Défis: 13 Message
Posté le 02-11-2018 à 13:43 | #
ah ouais...
LephenixnoirEn ligneAdministrateurPoints: 24145 Défis: 170 Message
Posté le 02-11-2018 à 13:55 | #
Si vous voulez, il existe une variante plus efficace à base d'union-find, mais ça demande un peu plus de background en algorithmique.

Maze generation algorithm (Wikipédia)

Là vous avez plusieurs exemples, notamment :
* Recursive backtracker qui est la méthode utilisée dans ce programme
* Randomized Kruskal qui est celle dont je parle
Erakhen
Statut : Invité
Posté le 25-12-2018 à 21:25 | #
Bonjour jai teste le jeu et il est super mais j'ai un problème
Comment fait on pour changer la taille et la longueur du labyrinthe ?
Parce que quand je suis dans le menu en essayant dentrée des valeurs de longueur rien ne se passe :/

Pages: Précédente | 1, 2

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 94 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd