Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal

 

 [résolu]deplacement d'un personnage

Aller en bas 
2 participants
AuteurMessage
grod
C'est quoi la Tasse Bleue ?
C'est quoi la Tasse Bleue ?
avatar


Nombre de messages : 5

Date d'inscription : 12/11/2011


[résolu]deplacement d'un personnage Empty
MessageSujet: [résolu]deplacement d'un personnage   [résolu]deplacement d'un personnage EmptyMer 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



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


Nombre de messages : 2907

Date d'inscription : 01/08/2006


[résolu]deplacement d'un personnage Empty
MessageSujet: Re: [résolu]deplacement d'un personnage   [résolu]deplacement d'un personnage EmptyJeu 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


Dernière édition par Kitai le Jeu 1 Déc 2011 - 20:41, édité 1 fois
Revenir en haut Aller en bas
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 ?
avatar


Nombre de messages : 5

Date d'inscription : 12/11/2011


[résolu]deplacement d'un personnage Empty
MessageSujet: Re: [résolu]deplacement d'un personnage   [résolu]deplacement d'un personnage EmptyJeu 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
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


[résolu]deplacement d'un personnage Empty
MessageSujet: Re: [résolu]deplacement d'un personnage   [résolu]deplacement d'un personnage EmptyJeu 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
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Contenu sponsorisé





[résolu]deplacement d'un personnage Empty
MessageSujet: Re: [résolu]deplacement d'un personnage   [résolu]deplacement d'un personnage Empty

Revenir en haut Aller en bas
 
[résolu]deplacement d'un personnage
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu] bug déplacement player avec room de +640 de large.
» [résolu] Déplacement perso + clic souris sur axe x (Maniac Mansion)
» [résolu]Personnage
» Dialogue different d'un personnage.
» [RESOLU] MovePlayer fonctionne mal sur un personnage

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: