Forum d'entraide à la création de jeux d'aventure
 
PortailAccueilFAQRechercherS'enregistrerMembresConnexion

Partagez | 
 

 [résolu]deplacement d'un personnage

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
grod
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?


Nombre de messages : 5

Date d'inscription : 12/11/2011


MessageSujet: [résolu]deplacement d'un personnage   Mer 30 Nov 2011 - 22:19

bonjour,
voila j'ai écrit ce bout de code pour déplacer un personnage dans une room et arrivé a la fin des déplacements je souhaite recommencer le même cycle.
Code:

function room_AfterFadeIn()
{
encours = 0;
posi_x[0] = 150;
posi_y[0] = 447;
 et ensuite 3 autres positions différentes
}

et ensuite
Code:

function room_RepExec()
{
maxencours = 3;
if (methode_dep == 1) {
   if (!cSam.Moving){
      if((posi_x[encours] == cSam.x)&&(posi_y[encours] == cSam.y)){
         encours += 1;
         if ( encours > maxencours ){
                              encours = 0;
            }
         }
   else{
      if (encours > maxencours){
                      encours = 0;
            cSam.Walk(posi_x[encours], posi_y[encours], eNoBlock, eAnywhere);
                      }
              } // du else
        } // du if moving
  }// fin methode
}// fin proce
et a la fin du déplacement, il s’arrête a la fin du 4 eme trajets.

bien entendu, j'ai téléchargé le module CharacterControl et c'est pareil il s’arrête a la fin et je n'ai pas vu de boucle.
d’où la variable methode_dep pour tester les deux méthodes.
il fait bien entendu plus de choses que moi, mais j'essaye de comprendre.

voila a bientôt.

ps je suis désolé mais l'indentation est différente et sur ags elle est bonne( exemple avec if (encours > maxencours) le encours = 0; est plus a gauche


_________________
quelques tutorial dispo sur app inventor et prochainement sur advanced games studio


Dernière édition par grod le Sam 3 Déc 2011 - 9:59, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]deplacement d'un personnage   Jeu 1 Déc 2011 - 16:50

Salut grod,

Je n'ai jamais utilisé le module CharacterControl, mais en ce qui concerne ton code quelques petites choses me taraudent.
grod a écrit:
Code:

function room_RepExec()
{
maxencours = 3;
if (methode_dep == 1) {
   if (!cSam.Moving){
      if((posi_x[encours] == cSam.x)&&(posi_y[encours] == cSam.y)){
         encours += 1;
         if ( encours > maxencours ){
                              encours = 0;
            }
         }
   else{
      if (encours > maxencours){
                      encours = 0;
            cSam.Walk(posi_x[encours], posi_y[encours], eNoBlock, eAnywhere);
                      }
              } // du else
        } // du if moving
  }// fin methode
}// fin proce
Là, tel que c'est écrit (si on omet "methode_dep"), ton code signifie la chose suivante :
Code:
A chaque cycle de jeu :
  Si Sam ne bouge pas :
    S'il se trouve à la position finale actuellement pertinente :
      alors on passe à la destination suivante
      S'il n'y a pas de "suivante" :
        alors la destination redevient la première destination
    En revanche, si Sam ne se trouve pas à la position finale actuellement pertinente (et qu'il ne bouge toujours pas) :
      Si on cherche une destination qui n'existe pas (ce qui, si c'était le cas, aurait déclenché un 'out of array' dans le premier if : 'posi_x[encours]') :
        alors la destination redevient la première destination
        et Sam se déplace vers la destination pertinente (donc nécessairement la première : c'est ce qu'on vient de définir)
Avec uniquement ce bout de code, donc, Sam ne devrait même pas se déplacer car la seule commande de déplacement se trouve sous le if définissant une condition qui devrait faire planter le jeu (en estimant que la taille de tes tableaux posi_x et posi_y soit de maxencours + 1). De toute façon, puisque tu t'assures déjà à l'endroit où tu incrémentes encours que cette variable ne dépassera pas maxencours, ta commande Walk ne sera jamais exécutée (le if la contenant n'étant alors jamais validé).

Voici ce que je peux donc te proposer (très similaire à ce que tu as fait) :
Code:
int encours, maxencours = 3;
int posi_x[4], posi_y[4];
function room_AfterFadeIn()
{
  encours = 0;
  posi_x[0] = 100;
  posi_y[0] = 100;
  posi_x[1] = 200;
  posi_y[1] = 100;
  posi_x[2] = 200;
  posi_y[2] = 200;
  posi_x[3] = 100;
  posi_y[3] = 200;
}

function room_RepExec()
{
  // Si le personnage ne se déplace plus...
  if (!cSam.Moving) {
    // ... alors on passe à la destination suivante
    encours += 1;
    // S'il n'y a pas de "suivante", on retourne à la première
    if (encours > maxencours) encours = 0;
    // Enfin, on dit au personnage de se déplacer vers cette destination
    cSam.Walk(posi_x[encours], posi_y[encours], eNoBlock, eAnywhere);
  }
}
Chez moi, ce code fonctionne sans soucis.
Teste ça et tiens-moi au courant clin d\\\\'oeil

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !


Dernière édition par Kitai le Jeu 1 Déc 2011 - 20:41, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
grod
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?


Nombre de messages : 5

Date d'inscription : 12/11/2011


MessageSujet: Re: [résolu]deplacement d'un personnage   Jeu 1 Déc 2011 - 20:32

bonsoir kitai,
merci pour ta réponse rapide.
tout fonctionne maintenant avec ta méthode pour les autres membres du forum il faut juste bouger sam et pas ego (lol)
merci encore kitai
a bientot

_________________
quelques tutorial dispo sur app inventor et prochainement sur advanced games studio
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue


Nombre de messages : 2431

Date d'inscription : 01/08/2006


MessageSujet: Re: [résolu]deplacement d'un personnage   Jeu 1 Déc 2011 - 20:40

grod a écrit:
tout fonctionne maintenant avec ta méthode pour les autres membres du forum il faut juste bouger sam et pas ego (lol)
Oups ! Je vais corriger ça tout de suite ^^ (j'ai bien remplacé dans le if mais pas pour le walk)
N'oublie pas d'indiquer "Résolu" dans le titre du sujet clin d\\\\'oeil

_________________
Ga is Ga
Vous pouvez consulter l'aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé




MessageSujet: Re: [résolu]deplacement d'un personnage   Aujourd'hui à 8:02

Revenir en haut Aller en bas
 
[résolu]deplacement d'un personnage
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu]Deplacement d'objet
» [résolu]Suppression d'un personnage à partir du site web
» [résolu]probleme déplacement personnage
» [Résolu ] afficher un personnage et insérer de la musique
» [RESOLU]personnage qui ne bouge plus du tout il ne change même pas de sens

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Questions / Réponses-
Sauter vers: