Messagerie


Random de scènes décroissant

Caedes
lundi 18 juillet 2016 à 11:18
Bonjour !

J'aurai besoin d'un petit coup de main. J'ai besoin d'un random de scène "maîtrisé". C'est-à-dire...

Quand on clique sur le bouton "niveau 1", le joueur doit être mené dans une scène au hasard entre A et Y (disons pour l'exemple qu'il atterrit à la scène Z). Ca, je sais faire.
Quand le joueur re-clique sur le niveau 1, il doit aller à la même scène que précédemment, soit Z. Jusque-là, ça va.

Mais, là où ça se complique. Il faut qu'en cliquant sur le niveau 2, il arrive dans une scène au hasard entre A et Y mais en aucun cas Z. Le hasard doit exclure une valeur. Donc, voici ce que j'ai tenté jusqu'ici.
C'est-à-dire que j'ai lancé mon random comme d'habitude mais en soustrayant une valeur (ici c'est un fichier .ini car il faut que la valeur soit sauvegardée). Sauf que l'effet inattendu, c'est que maintenant, en cliquant sur le bouton "niveau 2", je suis renvoyé à la scène 1. En jouant sur la valeur qui soustraie (par défaut, elle est égale numéro courant de la scène soit 6), j'arrive toujours à la scène 1 MAIS, en jouant sur les deux valeurs du random, j'arrive à changer les scènes où le hasard se fait. Le mieux que je suis arrivé à faire, c'est d'envoyer le joueur sur les niveaux de jeux (par élimination du menu, du score, etc...) mais ça inclut la scène du "niveau 1". Le truc un peu compliqué c'est qu'il va y avoir 9 valeurs à exclure à terme.

Si j'ai été assez clair, est-ce que quelqu'un a une solution ? Suis-je sur la bonne voie ou y-a-t-il quelque chose de plus simple ou optimisé ?
Merci à vous !
Kloug
1497 messages
Fusion 2.5
lundi 18 juillet 2016 à 11:57
Salut!

A à Z = 26 lettres.

Level 1 = valeur 26.

Level 2 = valeur 26-1=25

Random(25)+1 soit (0 à 24)+1

A+

Edit:
il y a différentes façons de faire, on peut passer par l'objet liste, à mon humble avis plus "simple".
Il me semble que Patrice a fait un exemple, avec des noms d'élèves quelque part...
Caedes
lundi 18 juillet 2016 à 14:01
Alors. Ca veut dire qu'il faut que je déclare la valeur "26" (enfin, "10" dans mon cas mais bref) quelque part et que j'associe chaque valeur à un niveau ? Ceci dit, puisque le niveau 1 est un random, ça donnerait quoi si le niveau 1 est autre chose que 26 ? Il faudrait quand même rajouter +1 au prochain random ? Tu es allé un peu vite en besogne pour moi en fait là, sorry.

Sinon oui, je vais chercher avec l'objet "liste" en attendant Patrice et j'ai aussi commencé à bidouiller une solution avec l'objet "tableau" mais jusqu'ici, pas grand chose.
Caedes
lundi 18 juillet 2016 à 15:00
Je suis en bonne voie avec l'objet "tableau", juste un soucis étrange au niveau du fichier .ini. Je mettrai à jour le post.
Kloug
1497 messages
Fusion 2.5
lundi 18 juillet 2016 à 18:05
Dans l'absolu tu dois jongler avec 26 valeurs.
Chaque valeur représente un numéro de scène.
Le numéro de scène 0 n'existe pas.
Fais des tests avec random(25)+1, via un compteur tu comprendras.

Tu prends un objet liste, avec 26 lignes, les 26 lignes représentent, 26 niveaux à sauvegarder.
La ligne déjà utilisé est mise à zéro.

CTF "scanne" les lignes, si ligne=0, à nouveau faire un random...
Cyberclic
664 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
lundi 18 juillet 2016 à 18:16
En clair tu veux faire un tirage sans remise.
Comme le dit Kloug, une liste qui va de 1 à 26 et à chaque tirage, supprimer la ligne.
Pièces jointes
Kloug
1497 messages
Fusion 2.5
lundi 18 juillet 2016 à 18:52
La même chose accessible à un novice motivé.

Random 26 niveaux, avec choisir un objet au hasard, et la sauvegarde intégrée.

Edit: Merci pour ton exemple optimisé Cyberclic. Maintenant on a le choix. :D
Pièces jointes
volgot
lundi 18 juillet 2016 à 19:04
J'ai fait un autre système qu permet d'aller à une scène de manière aléatoire et une fois que le numéro de scène est défini on peut y retourner. Je suis pas sûr d'avoir compris mais c'est un truc qui m'avait bien embêté jadis  :)
J'ai fait que 6 scènes mais après tu en feras autant que tu en auras besoin en ajoutant les lignes nécessaires dans la liste en page 1...
Pièces jointes
Kloug
1497 messages
Fusion 2.5
lundi 18 juillet 2016 à 22:34
Merci de ton intervention Volgot, mais il me semble que le but du jeu, consiste à un moment donné, de ne pas retourner dans une même scène (niveau terminé).

Pièces jointes
Kloug
1497 messages
Fusion 2.5
lundi 18 juillet 2016 à 22:42
Oups, oublié de réactiver le groupe (save load).  :D



Pièces jointes
volgot
lundi 18 juillet 2016 à 23:20
Ah ok, dans ce cas c'est pas un pb, y'a moyen facilement de rendre le bouton (ou l'actif) inactif en fonction de la réussite du niveau.

Mais je suis pas sûr qu'il veuille condamner le niveau une fois réussi :


Quand le joueur re-clique sur le niveau 1, il doit aller à la même scène que précédemment


Caedes
mardi 19 juillet 2016 à 11:23
Non effectivement, l'utilisateur est censé pouvoir y retourner.

Je suis arrivé à mes afins avec l'objet tableau finalement.
Dans une scène placée AVANT le menu principal, en début de scène, fixer dans un tableau à une dimension les numéros de scènes (soit "6" en position 1, 7 en position 2, etc...)
Au début du menu principal, fixer l'index courant du tableau avec un random. Cette valeur actuelle est dans le même temps enregistré dans le fichier .ini comme "choix 1". Quand l’utilisateur clique sur un bouton de niveau, le saut de la scène se fait à la valeur de l'index actuelle du tableau.
Au début du niveau, fixer à 0 la colonne du niveau.
Ainsi, de retour au menu principal, une nouvelle valeur et donc un nouveau choix (et donc un nouveau parcours) est choisis par random. Si le random arrive sur une colonne ayant comme valeur 0, relancer le random (avec une limitation d'action au cas où un random infinis fasse buguer le jeu). Si le joueur clique sur un niveau déjà effectué, alors se rendre à la valeur stockée dans le fichier .ini. La différence entre un niveau déjà effectué ou pas est une comparaison de deux valeurs générales "si différent de 0", alors se rendre à la valeur du fichier .ini. "Si égal à 0", alors se rendre à la valeur actuelle de l'index courant du tableau.

Voilà ! Je crois que je me suis compliqué la vie mais au moins je peux me retrouver dans mon propre bricolage. J'ai la fierté d'y être arrivé tout seul en plus.

J'espère que j'ai été clair à ceux qui viendront après.
Kloug
1497 messages
Fusion 2.5
mardi 19 juillet 2016 à 14:45
Super, le meilleur moteur case à cocher, est celui que l'on comprend.

:bravos
890 messages

mardi 19 juillet 2016 à 17:16
si tu ne veux pas avoir de soucis avec tes randoms et tes pb de cases avec valeur 0 ou non, extrait de ton tableau toutes les cases n'ayant pas de valeur 0 dans une liste. et ensuite au lieu de faire un random sur les cases tu fais un random sur un élément de cette. Si tu dois faire plusieurs random d'affilée, retire la ligne qui vient d'être choisie de ta liste pour ne pas encore la selectionner au tour d'après.
Pense à te faire une soluce dans le cas où toutes tes cases sont à 0 (jeu fini je suppose ?)
Bonne continuation :)
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 43 visiteurs au total

Derniers messages