Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

289 connectés actuellement

30738262 visiteurs
depuis l'ouverture

1847 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker - La Communauté

Lumen

Leo-Games

Lunae - le bazar d'Emz0

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [VX ace] Génération "aléatoire" d'él


Timtrack - posté le 12/01/2015 à 13:19:00 (660 messages postés)

❤ 0

Plop

Domaine concerné: événements
Logiciel utilisé: VX ace
Bonjour, je suis actuellement entrain de faire un mini jeu où on se retrouve dans une sorte de labyrinthe constitué de 49 maps (7x7), mais j'aimerais placer sur ces 49 cases des éléments particuliers (des pièges, des monstres), mais avec pour seule condition : on ne peut pas trouver deux éléments sur la même map.
Par exemple j'ai 8 éléments A et 3 éléments B à répartir, pas plus ni moins.
J'ai donc pensé à créer 11 variables (8 pour les éléments A et 3 pour les éléments B) qui prennent une valeur aléatoire entre 1 et 49 (une valeur associée à chaque map). Le soucis c'est que j'aimerais avoir des valeurs différentes pour chacune des variables.
Ma question : est-il possible d'associer (avec ou sans l'event extender) une valeur interdite dans mon tirage aléatoire à partir d'une ou plusieurs variables (ex : V[1]=4 donc V[2] prend une valeur aléatoire dans [1;49] privé de 4) ou dois-je effectuer des conditions et des boucles pour que chaque variables soient différentes les unes des autres ?

Projet actuel


7163D - posté le 12/01/2015 à 15:49:46 (946 messages postés)

❤ 0

Votez Minimaliste

Avec event_extender et un appel de script

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 
list = (1..49).to_a
49.times do |i| 
  alea = 1 + rand(list.length)
  list.delete(alea)
  V[i+1] = alea
end


Sans EE, tu remplace V par $game_variables je croit

Minimaliste, le "." comme signe de ralliement.


Nukidoudi - posté le 12/01/2015 à 15:56:21 (736 messages postés) -

❤ 0

yo

Portion de code : Tout sélectionner

1
2
3
49.times do |i| 
  liste << i+1
end



lol :D ( (1..49).to_a)

https://xvw.lol


7163D - posté le 12/01/2015 à 15:58:36 (946 messages postés)

❤ 0

Votez Minimaliste

@Nukidoudi j'ai édité mon message...En fait, j'ai jamais vraiment appris le ruby, mais ce que je bricole marche ;)

Minimaliste, le "." comme signe de ralliement.


Timtrack - posté le 12/01/2015 à 18:24:43 (660 messages postés)

❤ 0

Plop

Je ne suis pas tout à fait sur de comprendre ce que vous avez fait, d'ailleurs j'ai testé avec plusieurs tirages et ça n'a pas l'air de fonctionner (j'obtient des valeurs similaires pour certaines variables).

Projet actuel


Mack - posté le 12/01/2015 à 18:55:27 (2310 messages postés) - staff -

❤ 0

Pour Nuki, aucune idée de ce que ça fait.

Par contre, pour 7163D, ça va juste te tirer un nombre entre 1 et X, au début X vaut 49, et à chaque boucle, X est décrémenté.
Donc pas sur que ça te soit utile.



Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
list = (1..49).to_a
x = 0
for i in 1..11
  alea = 1 + rand(list.length)
  n = list[alea]
  list.delete(alea)
  $game_variables[i+x] = n
end



Un truc comme ça devrait te sortir sortir 11 nombres, sans te sortir deux fois le même, et tout te stocker dans les variables 1 + x à 11 + x, t'as juste à choisir le x ^^.

( Je prend note de tout les commentaires, même si je n'y répond pas )


Timtrack - posté le 12/01/2015 à 19:01:20 (660 messages postés)

❤ 0

Plop

Portion de code : Tout sélectionner

1
2
3
4
5
6
list = Array(1..49)
11.times do |i|
  alea = rand(list.length)
  V[i+1] = list[alea]
  list.delete(list[alea])
end



Après plusieurs tests j'ai fait ça et ça a l'air de marcher.
(Je vais voir pour le tiens Mack, histoire de voir si c'est pas mieux)

Edit : quand je fais un test avec la boucle correspondant à 49, ma version marche mais pas les autres. :-/
J'ai envie de dire tant mieux d'un autre côté. X)

Projet actuel


Mack - posté le 12/01/2015 à 19:04:31 (2310 messages postés) - staff -

❤ 0

Entre ton code et le miens, y a très peu de différence, seul la boucle ( m'enfin, pas sur que ça est vraiment une importance, tant que tu comprends comment marche ta boucle ), d'ailleurs, si quelqu'un pouvait m'expliquer pourquoi vous utilisez tous celle là ça serait cool.
( Non, parce que si ça a vraiment un intérêt okay, mais sinon ... )


Après, V[i+1], ça va être forcement les 11 premières variables, d'où mon i+x, et tu définis ton x.
Mais globalement, c'est le même code ^^.

( Je prend note de tout les commentaires, même si je n'y répond pas )


Timtrack - posté le 12/01/2015 à 19:17:00 (660 messages postés)

❤ 0

Plop

Le tiens est plus personnalisable (pour la boucle j'ai repris ce qu'on m'a donné vu que je savais pas comment l'exprimer en ruby X) )
Mais le soucis (je crois) c'est :

Portion de code : Tout sélectionner

1
  list.delete(alea)


Car ça supprime la valeur alea, alors que

Portion de code : Tout sélectionner

1
  alea = 1 + rand(list.length)


Donc si par exemple j'ai déjà enlevé la valeur "3" de ma liste, alors alea prendra une valeur entre 1 et 48 (la longueur de la liste ayant été réduite de 1) donc alea peux prendre la valeur 3.

Ah au fait, ici la formule aléatoire est basée sur la longueur de la liste, on peut pas simplement choisir directement une valeur aléatoire de la liste ?

Projet actuel


Nukidoudi - posté le 12/01/2015 à 19:21:05 (736 messages postés) -

❤ 0

yo

Ou alors ...

Portion de code : Tout sélectionner

1
2
3
 
$game_variables[0 .. 11] = (0..49).to_a.shuffle[0..11]
 



https://xvw.lol


7163D - posté le 12/01/2015 à 19:40:58 (946 messages postés)

❤ 0

Votez Minimaliste

@mack Toutes mes excuses, tu as raison

Minimaliste, le "." comme signe de ralliement.


Mack - posté le 12/01/2015 à 19:52:11 (2310 messages postés) - staff -

❤ 0

Si si, d'où l’intérêt du list[alea].
En gros, tu dis, "coucou je veux un index X qui appartienne à cette liste ( donc un nombre entre 0 et la longueur de la liste ), après, je veux qu'une variable prenne la valeur de la liste à l'index X".

Et comme, à chaque fois, tu retires la cases qui contient un chiffre déjà utilisé, bah à la la fin, tu auras une liste de nombre compris entre 1 et 49, moins tout les index sortit ^^.


Pour le delete, je sais jamais comment ça marche en ruby, si il faut spécifier l'index de la case qu'on veut enlever, ou son contenu, donc jette un oeil à la Doc pour être sur ^^.

( Je prend note de tout les commentaires, même si je n'y répond pas )


Timtrack - posté le 12/01/2015 à 20:01:30 (660 messages postés)

❤ 0

Plop

Justement en fait je voulais dire que c'était le delete qui posais problème, il va delete en fonction du contenu indiqué, pas de la case donc en mettant list.delete(alea) il va supprimer le nombre "alea" si il est dans la liste, pas la valeur d'ID alea. :p
Bref merci pour vos indications, je repasserai sans doute poser des questions sur ce thème d'ici peu.

Projet actuel

Index du forum > Entraide > [VX ace] Génération "aléatoire" d'él

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers