| probleme d'objets qui se poussent, style Sokoban | |
|
|
Auteur | Message |
---|
el_loco67 Débutant
Messages : 10
| Sujet: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 13:53 | |
| Bonjour,
j'ai besoin, un peu comme dans un sokoban, que mon petit bonhomme pousse des caisses. pour une caisse, ca marche impecc, elle s'arrette, comme le bonhomme, des qu'elle est alignée sur une grille...
mais le hic c'est que je veux que si il y a une caisse derrière la première, celle ci soit aussi poussée et ainsi de suite, quelque soit le nombre de caisses...
je fais donc en D&D un événement dans mon objet "caisse" : si collision avec une caisse, celle ci se déplace (jusqu'à être alignée sur la grille ou elle s'arrêtte)...
mais parfois, une caisse passe sur une autre et là je ne comprends plus rien, elle semble disparaitre, sans que je sache si elle est dessous ou non...
quelqu'un peut il m'aider???
Je précise que ce n'est que du Drag & Drop et de la gestion de collision entre le bohomme et la caisse puis inter caisse... En outre, la caisse (et le bonhomme) avancent d'un diviseur de 32, taille de mes sprites, histoire qu'elles se calent bien sur la grille... (je n'y avais pas pensé de suite, mais ça m'a parru nécessaire à l'usage...)
merci d'avance |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 15:40 | |
| Avec GM et en plus seulement en Drag and Drop ça va être chaud. Mais pas impossible heureusement pour toi. (mais en GML par contre) ça me rappelle un jeu que j'avais programmer il n'y a que quelques mois: http://panigame.fr/?section=presentation&jeu=kasteetOù le jeu reposait entièrement sur cette question. Bon je vais essayer de te pondre un truc: Chacun des tes bloc sont des enfants de l'objet bloc. Tu créer aussi l'objet personnage Tout ce beau monde en solid. Premier script: init - Code:
-
with bloc { x_save=x; y_save=y; verrouiller=false; } with personnage { x_save=x; y_save=y; }
Deuxième script: charger_position - Code:
-
with bloc { x=x_save; y=y_save; } with personnage { x=x_save; y=y_save; }
troisième script: deplacement - Code:
-
x+=global.x_deplacement y+=global.y_deplacement verrouiller=true;
quatrième script : move_perso - Code:
-
if (dir=="gauche") { global.x_deplacement=-1; global.y_deplacement=0; } else if (dir=="droite") { global.x_deplacement=+1; global.y_deplacement=0; } else if (dir=="haut") { global.x_deplacement=0; global.y_deplacement=-1; } else if (dir=="bas") { global.x_deplacement=1; global.y_deplacement=0; } init(); for(i=0;i<vitesse;i+=1) { x+=global.x_deplacement; y+=global.y_deplacement;
nb_bouger=0; nb_prisonnier=0; with bloc { if (not place_free(x,y)) { if (verrouiller==false) { deplacement() other.nb_bouger+=1 } else { other.nb_prisonnier+=1 } } } if (nb_bouger==0 and nb_prisonnier!=0) // on annule tout { charger_position(); break; } }
[Exemple d'utilisation] Dans ton objet personnage dans l'event d'une touche pressé ( par exemple à gauche) - Code:
-
dir="gauche" vitesse=4; move_perso()
pour aller à droite , il faudra changer pour dir="droite" , etc ... Attention, je n'ai jamais essayer ce code, il est probable qu'il y est 2-3 erreurs, ce n'est pas grave, tu m'enverra le problème est je le solverais tant qu'il restera une erreur. Mais n'abandonne pas.
Dernière édition par arthuro le Dim 9 Sep 2012 - 20:21, édité 2 fois |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 16:22 | |
| globalement, j'aurais dit (en pseudo-code, j'me souviens moyens de la syntaxe de GM) Si y'a une collision entre deux boites, alors leurs vitesse s'ajoute. En gros, ça pourrait donner : - Code:
-
var other_box = instance_place(x,y,la_boite);
if (other_box) { x+= other_box.hspeed; }
_________________ Because these are not the words of God, the same God that burnt the knowing.
|
|
| |
el_loco67 Débutant
Messages : 10
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 20:30 | |
| je vais essayer tout cela...
mais pourquoi y a t il ce soucis de boite qui "mange" une autre en passant par dessus?
est ce un prb de game maker?
est ce la collision qui est gérée dès qu'il y a supperposition et non contact? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 23:02 | |
| Bah c'est surement une erreur du genre : if place_free(x+1,y,all) x+=5 En gros tu vérifie si la place est libre en x+1 mais pas en x+5 donc si en x+5 c'est occupé, ton objet est bloqué. Il faut faire une boucle : for (i=1;i<5;i+=1) { if place_free(x+1,y,all) x+=1 } |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Sam 8 Sep 2012 - 23:36 | |
| Euh, la boucle n'a pas d'intérêt, là tu vérifie 5fois si y'a rien à l'endroit x+1,y, en plus tu vérifie chaque type d'instance, bref c'est pas bon _________________ Because these are not the words of God, the same God that burnt the knowing.
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 7:52 | |
| Ben si, x+1 est différent a chaque itération puisqu'il avance de 1 à chaque fois... Et j'ai mis all parce que je savais pas quoi mettre, normalement tu met un objet wall parent à tous les obstacles. Donc normalement c'est bon |
|
| |
el_loco67 Débutant
Messages : 10
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 11:58 | |
| donc, en résumé, il faut éviter d'utiliser l'événement "collision"? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 14:27 | |
| Ben ca dépend, si ton objet est un bonus ou un truc du genre tu utilise les event collision mais si ce sont des murs, tu fais en sorte qu'il n'y ai pas de collisions |
|
| |
el_loco67 Débutant
Messages : 10
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 15:46 | |
| donc on ne peut pas vraiement utiliser le D&D pour ce genre de truc... passer par le code est inévitable... ou existe t il des ruses de sioux? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 16:23 | |
| Tu peux utiliser les losanges bleu pour les if et les carrés gris pour les variables ; mais c'est bien plus lisible en gml. Mais tu peux le faire en D&D, et au moins ca t'aidera a comprendre les variables ; donc fait comme tu préfère. |
|
| |
el_loco67 Débutant
Messages : 10
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 19:49 | |
| ça j'avais bien compris (je débute mais quand meme ; ) je me demandais juste si mon probleme de caisse est solvable en D&D (sans passer par le code) J'avoue que je suis programmeur débutant mais que je ne connais pas du tout le GML et j'avais pensé que le logiciel était l'idéal pour initier qq'un à la prog. Ce que je voulais faire avec mon neveu, mais il bloquait sur ce soucis de caisses qui se poussent, et moi aussi de fait... d'ou la question : est ce solvable uniquement en D&D ou non? en fait, pour pousser une caisse (style Sokoban), c'était aisé, ça fonctionne pile... le hic c'est la caisse qui pousse la caisse... il semblerait que ce soit fonction des id de chaque caisse... c'est étrange... j'avoue ne faire aucun test de "case vide" puisque je pousse la caisse dans laquelle je rentre en collision qui pousse (theoriquement) elle meme une autre caisse (ou pas)... des lors, je n'avais que deux événements (outre le déplacement du "heros") : si collision heros / caisse et si collision caisse / caisse... je dois m'y prendre comme un manche en fait... snif... |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 20:23 | |
| el_loco67, t'inquiète pas tu va passer peu à peu du D&D au GML. Mais seulement, tu en demande trop pour l'instant, ce qui te force à utiliser le GML.
Sinon, tu as testé? C'est juste 3 script à copier-coller. (+1 code à placé) |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 21:07 | |
| Oups désolé j'avais mal compris... Mais le problème, c'est que tu veux apprendre à ton neveu un truc que tu sais pas faire toi ; donc ca va être hard... Si il veut apprendre, il vaut mieux qu'il le fasse tout seul : il retiendra mieux et sera bien plus motivé : il saura que c'est pas facile de programmer et il abandonnera pas sous prétexte que "avant tout marchait et maintenant que j'ai tout touché ca bug de partout ; je suis une *****" ; il aura plus confiance en lui. Moi et la plupart des utilisateurs régulier de GM avont appris tout seul et sans aucun tuto ; donc ton neveu devrait aussi y arriver |
|
| |
el_loco67 Débutant
Messages : 10
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 22:00 | |
| suite aux différents posts (surtout celui d'arthuro en fait), j'ai utilisé une ruse de sioux pour éviter le bug :
j'ai crée deux objets, une caisse immobile, une en mouvement.
ce qui fait qu'on n'a pas de multiples collisions entre caisses mais une entre casse en mouvement et entre caisse immobile... ça a l'air de fonctionner...
Un immense merci à tous et au vu des différents scripts proposés, le GML n'a pas nécessairement trop compliqué, faudra vraiment que je m'y penche!!!!
En fait, l'idée d'offrir GM à mon neuveu, c'est aussi un pretexte pour m'amuser avec... c'est vraiment amusant de faire de petits jeux plus ou moins facilement... c'est le genre de logiciel qui m'aurait rendu fou il y a quinze ans, et qui m'éclate pas mal aujourd'hui!
Merci à tous en tous cas!
Ah, tant que j'y suis : j'ai essayé un peu le GML pour récupérer des variables locales style heros.vitesse dans un autre objet... et ça générait une erreur... à quoi peut elle etre due? |
|
| |
Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban Dim 9 Sep 2012 - 22:23 | |
| montre comment tu as récupéré la variable dans quel objet a quel moment _________________ |
|
| |
Contenu sponsorisé
| Sujet: Re: probleme d'objets qui se poussent, style Sokoban | |
| |
|
| |
| probleme d'objets qui se poussent, style Sokoban | |
|