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: Final Destiny / Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

143 connectés actuellement

30739561 visiteurs
depuis l'ouverture

3147 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Fusion

Planète Glutko

RPG Maker VX

Level Up!

Le Comptoir Du clickeur

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [VXAce] problème de définition d'une array


Memoria Vetusta - posté le 20/11/2016 à 11:27:04 (17 messages postés)

❤ 0

Domaine concerné: script
Logiciel utilisé: VXAce
Salut a tous ^^ , j'ai un petit problème

Quand j'essaye de faire une array , ce code marche

Portion de code : Tout sélectionner

1
2
$game_variables[99][0]=
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]



mais pas celui ci

Portion de code : Tout sélectionner

1
2
$game_variables[99][0]=
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]


La seule différence entre les 2 est que le 1er se fait sur une seule ligne dans la commande en event "script" et que l'autre se fait sur 2 ligne
Je pense que cela vient du retour à la ligne auto dans l'éditeur de script en event , et ça m'énerve , je n'arrive pas à le contourner efficacement (le message d'erreur est que le code est invalide , qu'on à "," et qu'on s'attend à avoir "]"

C'est surement pas grand chose comme soucis mais si quelqu'un à une technique efficace je suis preneur ^^


hassen - posté le 20/11/2016 à 12:15:05 (580 messages postés)

❤ 0

Alien

Désolé (nulos en scriptos) a part que qu'il ya un zero de plus en bas, je ne vois absolument pas le probléme, tu devrais essayer l'entraide des scripts :wouah

School Urban Legends


Memoria Vetusta - posté le 20/11/2016 à 13:42:25 (17 messages postés)

❤ 0

d'accord je vais essayer de voir mais en fait il y a un caractère en plus quand tu met ça dans l'editeur de script en event c'est le retour à la ligne et j'ai l'impression que c'est ce qui fait tout foirer car il se met automatiquement

EDIT : j'ai trouvé un correctif a coup d'espace bien placé (rpgm n'aime pas quand y'a une virgule en fin de ligne mais au début ça va) , mais comme la solution est pas très propre et que je comprend pas pourquoi ça fait sa , je ne vais pas mettre ce post comme solutioné


François Berhn - posté le 20/11/2016 à 15:40:07 (5402 messages postés)

❤ 0

Tonton Hellper

Hello,

Sais-tu que pour créer un array de n cases contenant uniquement l'élément x on peut faire :

Portion de code : Tout sélectionner

1
Array.new(n, x)



ou

Portion de code : Tout sélectionner

1
Array.new(n){x}



?

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Memoria Vetusta - posté le 20/11/2016 à 17:37:43 (17 messages postés)

❤ 0

Non je ne savais pas , merci beaucoup ^^ , ça pourrai m'etre utile (après là c'était juste une démo de mon problème en fait , l'array que j'utilise est pré remplie). Comment peut t on utiliser cette fonction à 2 dimension par exemple ?

j'avais une autre question sur les array si ça ne te dérange pas , imaginons 2 array en 2 dimension , j'aimerai les additionner ensemble mais de sorte que l'une des array soit " décalé" , par exemple inclure une petite array de 2*2 en bas à droite d'une grosse array de 5*5


François Berhn - posté le 20/11/2016 à 18:05:22 (5402 messages postés)

❤ 0

Tonton Hellper

Pour créer un array à deux dimensions de x lignes et y colonnes remplis uniquement de 0 tu peux faire ceci :

Portion de code : Tout sélectionner

1
Array.new(x){Array.new(y){0}}



Je vais réfléchir pour la seconde question :)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Memoria Vetusta - posté le 20/11/2016 à 18:14:15 (17 messages postés)

❤ 0

C'est fort gentil à toi ^^ , la seconde question pourrai tellement m'aider que tu aurai direct droit à une place dans les crédits de mon projet de démo technique si je le fini haha ^^

J'ai vu que quand j'essaye d'additionner 2 array voila ce que j'ai :

[[0,0,0],[0,0,0],[0,0,0]] + [[2,2],[2,2]] = [[0,0,0],[0,0,0],[0,0,0],[2,2],[2,2]]

humm , ça pose problème , elle ne semblent pas vouloir se combiner .


François Berhn - posté le 21/11/2016 à 11:57:22 (5402 messages postés)

❤ 0

Tonton Hellper

En fait l'opérateur + sur les array ne les fusionne pas mais les concatène ^^
(Et pour avoir jeté un oeil à la doc ruby je ne crois pas qu'il y a nativement de quoi faire ce que tu cherche)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Cantarelle - posté le 21/11/2016 à 19:58:16 (1530 messages postés)

❤ 0

Makeuse tarée et Agent du FBI...

Et pourquoi ne pas utiliser collect ?

Portion de code : Tout sélectionner

1
2
3
4
5
6
tab = ["a", "b", "c", "c"]
#tab = {a, b, c, d}
 
tab = tab.collect {x | x + "!"}
#tab = {a!, b!, c!, d!}
 



Je suis presque sûre que ça marche...

Portion de code : Tout sélectionner

1
2
3
4
5
6
tab = [1, 4, 2]
#tab = {1, 4, 2}
 
tab = tab.collect {x | x + 3}
#tab = {4, 7, 5}
 



http://ruby-doc.org/core-1.9.3/Array.html

Par contre, il faut faire gaffe aux tableaux à plusieurs dimensions. Perso, je m'en sers uniquement dans l'utilisation d'une matrice.
De plus...

[2,2] est complément différent de [0, 0, 0] (trois éléments au lieu de deux) et je ne suis pas sûre si Ruby va bien aimer (Matlab le gère à peu près (en même temps, c'est son taff de bosser sur les matrices). D'autres langages non).
Il vaudrait mieux, dans le cas où tu ne veux pas changer le dernier élément, faire [2, 2, 0]...

Makeuse à la crosse de street-hockey. Livestream.


François Berhn - posté le 22/11/2016 à 10:02:11 (5402 messages postés)

❤ 0

Tonton Hellper

Yep collect (ou map) ne fait pas tout mais me semble indispensable pour le faire, comme le fait de s'assurer que les deux tableaux aient la même forme ^^

Du coup je viens de coder deux fonctions pour la fusion de deux tableaux à deux dimensions que voici :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def makeGrid(x, y, value=nil)
        if block_given?
                Array.new(x){Array.new(y){yield}}
        else
                Array.new(x){Array.new(y){value}}
        end
end
def fitGrid(first, second, x=0, y=0, default=0)
        len = first[0].length - second[0].length - x
        hei = first.length - second.length - y
        decalG = makeGrid(y, first[0].length, default)
        decalD = makeGrid(hei, first[0].length, default)
        milieu = second.map{|i| Array.new(x){default} + i + Array.new(len){default}}
        third =  decalG + milieu + decalD
        if block_given?
                first.each_with_index.map do |columns, indexY| 
                        columns.each_with_index.map do |cell, indexX|
                                yield(cell, third[indexY][indexX])
                        end
                end
        else
                first.each_with_index.map do |columns, indexY| 
                        columns.each_with_index.map do |cell, indexX|
                                cell + third[indexY][indexX]
                        end
                end
        end
end



La première fonction c'est juste un raccourci pour crée un tableau à deux dimensions
Pour la seconde voici quelques infos :

first et second sont les deux tableaux à fusionner (first ne doit pas être plus petit que second)
x et y servent de décalage, au cas où on ne voudrait pas faire correspondre les coins haut gauche de first et second. Il faut mettre des valeurs positives ou neutres
default est une valeur utilisée pour mettre second au format de first pour remplir les cases rajoutées
Enfin il est possible de rajouter un bloc pour choisir le mode de fusion qu'on souhaite faire (union, intersection différence...)

Par exemple avec ces deux valeurs :

Portion de code : Tout sélectionner

1
2
a = makeGrid(5, 5, 3)
b = makeGrid(3, 3, 2)



L'appel de la fonction comme ceci :

Portion de code : Tout sélectionner

1
fitGrid(a, b)



Affichera :

Portion de code : Tout sélectionner

1
2
3
4
5
[5, 5, 5, 3, 3]
[5, 5, 5, 3, 3]
[5, 5, 5, 3, 3]
[3, 3, 3, 3, 3]
[3, 3, 3, 3, 3]



C'est à dire qu'on a ajouté aux valeurs du premier tableau les valeurs correspondantes du second.

Et l'appel de la fonction comme ceci :

Portion de code : Tout sélectionner

1
fitGrid(a, b, 1, 1, nil){|x, y| y == nil ? x : y}



Affichera :

Portion de code : Tout sélectionner

1
2
3
4
5
[3, 3, 3, 3, 3]
[3, 2, 2, 2, 3]
[3, 2, 2, 2, 3]
[3, 2, 2, 2, 3]
[3, 3, 3, 3, 3]



C'est à dire qu'on a écrasé les valeurs du premier tableau par les valeurs correspondantes du second.

Après comme dit plus haut il faut en effet faire attention avec les arrays multidimensionnels, qui s'il manque une case quelque part pourraient rapidement être source de bugs pas forcément facile à repérer.

Et puis comme mon code est un peu crade il a encore des bugs non gérés mais j'ai un peu la flemme de fix ça pour le moment ===>[]

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Memoria Vetusta - posté le 22/11/2016 à 20:10:13 (17 messages postés)

❤ 0

merci beaucoup ^^

Index du forum > Entraide > [RESOLU] [VXAce] problème de définition d'une array

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