AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 Distribution de cartes en GML

Aller en bas 
4 participants
AuteurMessage
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 18:46

Bonjour à tous,

Je suis actuellement sur la réalisation d'un jeu de carte mais j'ai un gros soucis dés le début ! gnii

Je voudrais que lorsque je clique sur un bouton, les cartes soient distribuées.

Il faut donc qu'elles soient créé (en 0,0) et qu'elles se déplacent jusqu'à la position que je leur ai attribué. A la position des cartes, des "blocs" sont présents pour stopper les cartes dans leur mouvement.

J'ai essayer de faire un code à partir des mes (faibles) connaissances, ce qui m'a donné ça :

Code:

/// distribution des cartes
// Variables des cartes

var a=0;
thm[1] = obj_thm;
thm[2] = obj_thm1;

// Variables des bloks
var b=0;
bloc[1] = obj_1;
bloc[2] = obj_2;

// Création des cartes

do
    {
        instance_create (0,0, thm[a]);
        a +=1;
    }
until (a>2)

//distribution carte

with (thm[a])
    {
        move_towards_point(bloc[b].x,bloc[b].y, 10);
        if distance_to_point(bloc[b].x,bloc[b].x) = 0
            {
                speed = 0;
            }
        b +=1;
    }

Je suppose que ceux qui maitrisent un minimum ont déjà du crier en voyant ce code, mais au moins, si vous avez pas compris mon explication en écrit, vous avez du comprendre l'idée en code beh

En gros, la question est : comment incrémenter "thm" (qui est le nom des cartes) pour qu'elles soient "distribués" une par une ? Le but de le faire comme ça et que je puisse rajouter des cartes au fur et à mesure du développement du jeu et de les ajouter directement dans "variables des cartes" (ce qui ne veut rien dire, mais moi, je comprends gnii )

Merci d'avance,

Loloid'
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 19:30

J'ai rien compris effectivement gnii
Mais bon si tu veux distribuer des cartes avec un effet visuel de glissement, c'est pas compliqué. Tu stocke tes cartes dans un tableau ou une structure, ca dépend si tu veux un array dynamique ou pas. Donc pour les cartes, soit tu stocke l'id d'un objet carte, soit un simple numéro (puis 11 pour valet, etc...), ca dépend comme tu gère ca (avec les couleurs et tout). Et donc ensuite, t'as la position de ta carte dans le tableau, tu multiplie ca par la largeur d'une carte, plus un espacement éventuel (pour pas qu'elles soient collées), et t'as la position finale de la carte. Bien sûr si tu veux qu'elles soient sur plusieurs lignes faut jouer avec des modulos, mais c'est pas tellement compliqué non plus. Et donc si tu veux faire ta petite anim, bah tu la place au début à une position relative à la position finale (genre 50px plus bas), puis pas besoin d'utiliser des trucs à la move_towards, tu travaille directement sur la position x et y des cartes (d'où l'intérêt quand même d'utiliser des objets) en faisant des tests.
Typiquement, à chaque step :
if(card.y<card.finalY) y++;
Et si tu veux faire un truc plus smooth, tu fais des calculs un peu plus complexes, par exemple :
card.y+=(card.finalY-card.y)*0.1;

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 22:52

Et bien je pense que le problème vient de la, je n'arrive pas à mettre des objets dans un tableau ou même une liste et à les ré-utiliser après.

En fait c'est le but de ce code, placer les cartes dans un tableau et qu'après, je puisse en faire ce que je veux.

Et juste pour info, ce ne sont pas des cartes à jouer classique, elles sont chacune un texte écrit dessus, mais je ne pense pas que ça soit utile de tout détailler dans le contexte ^^
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 23:18

Ouais donc effectivement utilise des objets pour les cartes :p
Le mieux est d'utiliser une liste : http://gamemaker.info/fr/manual/411_03_lists
Comme je suppose que ia plusieurs joueurs, tu fais un objet player. Dans son create tu fais :
cards=ds_list_create();
Ensuite pour ajouter une carte c'est simple :
newCard=instance_create(card);
ds_list_add(cards,newCard.id);
C'est assez simple, je pense que t'arrivera à récupérer tout seul les cartes en lisant la doc Smile

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 23:38

Je dois avouer que nan je pige vraiment rien à la liste :/
La première partie : "cards=ds_list_create();" ça créé la liste "cards", c'est bien ça ?

Pour ajouter un objet "obj_thm" par exemple dans la liste je fais
"newCard=instance_create(obj_thm);
ds_list_add(cards,newCard.id);"

Ce qui me rajoutera l'objet "obj_thm" sous le nom de "newCard" dans la liste ?

Donc si après je veux rajouter l'objet "obj_thm1" sous le nom "newCard2" ça me donnera comme code final :

Code:

cards=ds_list_create();
newCard=instance_create(obj_thm);
newCard2=instance_create(obj_thm1);
ds_list_add(cards, newCard.id, newCard2.id);

ou alors

Code:
cards=ds_list_create();
newCard=instance_create(obj_thm);
ds_list_add(cards, newCard.id);
newCard2=instance_create(obj_thm1);
ds_list_add(cards, newCard2.id);

ou pas du tout ??? (je comprends pas le ".id" après le nom de la nouvelle valeur)

Si c'est bien ça, le gros soucis c'est comment je fais pour récupérer ces objets 1 par 1 (je risque d'avoir 20 cartes au total) sans avoir 150 lignes de codes ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 23:49

C'est ton deuxième morceau de code qui est bon. Juste petite précision, je sais plus quels argument prend la fonction instance_create, mais je crois que faut aussi spécifier les coordonnés, regarde dans la doc pour etre sur.
Pour éviter d'avoir 150 lignes justement, faut utiliser des boucles :p Dans la section GM ia un tuto dessus, une fois que t'as saisi le concept t'aura plus de problème!
Par exemple, si tu veux ajouter 10 cartes, tu fais :
for(i=0;i<10;i++){
newCard=instance_create(card);
ds_list_add(cards,newCard.id);
}
En gml, le point derrière une instance permet d'accéder à une de ses variables. Donc ici newCard.id permet de récupérer son id, c'est un numéro unique qui sert à l'identifier.
Donc comme ca c'est facile de récupérer toutes tes cartes :
for(i=0;i<ds_list_size(cards);i++){
myCard=ds_list_find_value(cards,i);
// ce que tu veux
}
Donc au niveau des commentaires (les //), tu peux faire ce que tu veux avec myCard. Par exemple, si tu veux la faire monter (pourquoi je sais pas, mais imaginons), t'as juste à mettre myCard.y-- dans ta boucle.
Et donc il va faire ca pour chacune des cartes.
Comme dit, lis donc les tutos d'oni sur le gml et les boucles en particulier, tu comprendra tout ce que je t'ai expliqué!

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMer 6 Mai 2015 - 23:57

Oui, il faut rajouter les coordonnés en effet c'est "instance_create(x,y,obj);"

Par contre, avec cette boucle, il va créer une seule et même carte, non ? Genre 10 fois la carte "card"

Le but c'est qu'il "create" la carte 1, la carte 2, la carte 3, la carte 4,...

Si ça créé bien plusieurs cartes, je retourne me coucher et je reviens réfléchir demain, mais la pour moi ça créé plusieurs fois la même carte.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 0:00

Nop, ca crée bien 10 instances différentes. De base, si tu change rien à leurs variables et que tu leurs mets les mêmes coordonnées, elles sembleront identiques, mais auront bien 10 id différents. Si tu veux essayer, dans la boucle de création,,mets un truc style instance_create(i*100,30,card). T'en aura 10 cote a cote Smile

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 0:14

Oui 10 instances différentes mais du même objet, je voudrais 10 instances, chacune étant un objet différent. Je pense que je suis pas assez clair ^^
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 0:27

Le plus simple c'est de créer un truc à la main, avec un switch par exemple.
Citation :
for (i = 0; i < 10; i+= 1)
{
switch (i)
{
case 0: instance_create(x, y, carte1); break;
case 1: instance_create(x, y, carte2); break;
[...]
}
}

Tu peux aussi, pour te faciliter la vie, créer un objet "carte" avec le code de tout ce qui fait une carte, puis des objets carte1, carte2, etc ayant carte comme parent.

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 9:18

Euh je suis pas convaincu de l'utilité d'un switch pareil ^^'
Par contre effectivement l'héritage ca peut etre bien, mais à mon avis un seul objet devrait te suffire. Suffirait ensuite de changer des variables, ca pourrait être la valeur et la couleur dans un jeu classique par exemple.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 19:36

Désolé Térence mais je rejoins l'idée de Mass, le switch ça me va, ça fait beaucoup de ligne mais c'est facile de rajouter des "case" ^^

Merci à vous deux en tout cas, ça m'a bien aidé (même pour le reste de mon programme Smile ) !
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 19:39

Bah c'est toi qui vois, mais je capte pas l'intérêt de faire
Code:
for (i = 0; i < 10; i+= 1)
{
switch (i)
{
case 0: instance_create(x, y, carte1); break;
case 1: instance_create(x, y, carte2); break;
[...]
}
}
Quand
Code:
 instance_create(x, y, carte1);
 instance_create(x, y, carte2);
[...]
fait exactement la même chose...
Si tu veux changer des propriétés en fonction de i, ouais pourquoi pas, mais en l'état ca sert à rien...

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:14

Ah oui effectivement c'est pas très intéressant j'avais même pas capté sweat .

Du coup je reformule ma question initial, j'ai ré-essayer pas mal de chose sans que ça fasse ce que je veux.

Alors je voudrais que plusieurs objets (c'est important que ça soit plusieurs objets pour la suite) soient créé à un seul et même endroit et que chaque objet soit amené à un endroit en fonction de ce qu'ils sont.

L'objet 1 sera amené à l'endroit 1, l'objet 2 sera amené à l'endroit 2, etc... Et je veux voir l'animation de déplacement ^^

Déjà ça devrait être plus clair gnii

Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:20

Bon bah tu fais un instnace_create par objet, et dans le step de l'objet tu mets un truc genre move_towards

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:37

Donc pas de possibilité de faire ça sur une boucle ?
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:38

Bah si tu veux des objets, et pas des instances différentes, nan.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:41

for (i = 0; i < 10; i += 1)
{
execute_string("instance_create(argument0, argument1, carte" + string(i) + ")", x, y);
}

?

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:43

Effectivement, mais c'est très lent je crois. Mais bon,,je comprend toujours pas pourquoi on peut pas utiliser un seul objet...

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyJeu 7 Mai 2015 - 21:53

Pour une seule instruction une dizaine de fois, la vitesse ne compte pas beh

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
loloid
Débutant



Messages : 11

Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML EmptyMar 12 Mai 2015 - 14:50

Bon j'ai finalement fait le tout avec une liste et une carte parent, j'ai un peu tout mélangé !

Merci à vous en tout cas, toute cette conversation m'a bien aidé !

Loloid'
Revenir en haut Aller en bas
Contenu sponsorisé





Distribution de cartes en GML Empty
MessageSujet: Re: Distribution de cartes en GML   Distribution de cartes en GML Empty

Revenir en haut Aller en bas
 
Distribution de cartes en GML
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» La distribution Linux la plus légère
» Quelle distribution linux vous convient le mieux ?
» [Résolu] Génération de particules avec distribution gaussienne
» Jeu de cartes !
» jeu de cartes

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: