AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal

Partagez
 

 [RESOLU]Calcul d'un itinéraire

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeMar 15 Sep 2009 - 17:02

Bonjour bonjour ^^

J'ai une petite demande s'il vous plait ...

en fait je voudrais savoir si c'est possible de calculer l'itinéraire pour déplacer un event

exemple :

faire déplacer un event jusqu'au coordonnés X:26 Y:27 ( par exemple )

et quel que soit l'endroit où est l'event, son but sera d'aller en coordonnés X:26 Y:27

merci d'avance

Ciao

Sylfurion ( ou Rasen' ou Rheese ^^ )


Dernière édition par Sylfurion le Jeu 17 Sep 2009 - 18:08, édité 2 fois
Revenir en haut Aller en bas
jebbou
Doyen
Doyen
jebbou


Masculin Age : 45
Inscrit le : 20/08/2008
Messages : 2485

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeMar 15 Sep 2009 - 17:04

Et cet événement doit "contourner" les obstacles?
Revenir en haut Aller en bas
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeMar 15 Sep 2009 - 17:16

bah si c'est possible oui, ou sinon saute par dessus ( mais sa le fera moins ^^ )
Revenir en haut Aller en bas
TiteiKo
Poulet carnivore Lv.2
Poulet carnivore Lv.2
TiteiKo


Féminin Age : 34
Inscrit le : 06/09/2009
Messages : 24

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeMar 15 Sep 2009 - 18:21

Bon courage à celui ou celle qui va se lancer là-dedans..

Deux exemples de pistes explorables : Dijkstra, A*

Mais l'une comme l'autre sont assez lourdes, donc voir si c'est vraiment utile pour ton jeu

Sinon en sautant par dessus, pas compliqué (par contre sauter au dessus d'une maison ça va peut être paraître bizare non ? XD) :

Disons que le truc qui doit se déplacer est e et a les propriété x et y
La cible sera c, avec les meme propriétés

Tant Que e.x != c.x and e.y != c.y Faire
Si e.x < c.x Alors e.déplacement(droite)
Si e.x > c.x Alors e.déplacement(gauge)
Si e.y < c.y Alors e.déplacement(bas)
Si e.y > c.y Alors e.déplacement(haut)
Fin

Avec le saut dans la méthode de déplacement
Revenir en haut Aller en bas
Blockade
Ex-Admin Cruelle
Ex-Admin Cruelle
Blockade


Féminin Age : 32
Inscrit le : 03/07/2008
Messages : 2441

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeMar 15 Sep 2009 - 19:41

Euh sinon... y'a un option dans rmvx c'est "Un pas vers le héros". Donc suffit de faire la même méthode mais à la place du héros la position définie.

Ajoute ca quelque part au dessus de main :

Code:

#===============================================================
# ● [VX] Rejoindre un point sur la map
#--------------------------------------------------------------
#  ● Par Blockade
#  ● http://rpg-maker-vx.bbactif.com/forum.htm
#  ● Crée le 15/09/2009
#  ● Version 1.0
#--------------------------------------------------------------
#===============================================================
def rejoindre(event_id,x,y)
  chara = $game_map.events[event_id]
  chara.move_toward_place(x,y)
end

class Game_Character
  #--------------------------------------------------------------------------
  # * Move toward Player
  #--------------------------------------------------------------------------
  def move_toward_place(x,y)
    sx = distance_x_from_place(x)
    sy = distance_y_from_place(y)
    if sx != 0 or sy != 0
      if sx.abs > sy.abs                  # Horizontal distance is longer
        sx > 0 ? move_left : move_right  # Prioritize left-right
        if @move_failed and sy != 0
          sy > 0 ? move_up : move_down
        end
      else                                # Vertical distance is longer
        sy > 0 ? move_up : move_down      # Prioritize up-down
        if @move_failed and sx != 0
          sx > 0 ? move_left : move_right
        end
      end
    end
  end
 
    #--------------------------------------------------------------------------
  # * Calculate X Distance From Player
  #--------------------------------------------------------------------------
  def distance_x_from_place(x)
    sx = @x - x
    if $game_map.loop_horizontal?        # When looping horizontally
      if sx.abs > $game_map.width / 2    # Larger than half the map width?
        sx -= $game_map.width            # Subtract map width
      end
    end
    return sx
  end
  #--------------------------------------------------------------------------
  # * Calculate Y Distance From Player
  #--------------------------------------------------------------------------
  def distance_y_from_place(y)
    sy = @y - y
    if $game_map.loop_vertical?          # When looping vertically
      if sy.abs > $game_map.height / 2    # Larger than half the map height?
        sy -= $game_map.height            # Subtract map height
      end
    end
    return sy
  end
end
On doit faire 2 évent :

Tu fait un évent en processus parallèle. Puis "Déplacer un événement", "Appeler un script" et tu marque [code]rejoindre(Id_event,pos_x,pos_y)|/code]
Ou id_event c'est l'ID de ton évent.
Pos_x : Position X d'arrivée
Pos_y : Position Y d'arrivée
Tu coches répéter déplacement et ignorer si impossible. Dans le même évent, tu fait une deuxième page vide qui s'active si l'interrupteur x est activé (remplace x par n'importe quel interrupteur)

Et pour finir un autre évent en processus parallèle avec dedans :
Condition > 4 éme page > script > $game_player.x == pos_x
Et dans cette condition :
Condition > 4 éme page > script > $game_player.y == pos_y
Et dans cette condition : Activer l'interrupteur x.
(pos_x est la position d'arrivée X, et pos_y position d'arrivée Y)

Et voila ca marche !
Revenir en haut Aller en bas
Sylfurion
Mage Lv.11
Mage Lv.11
Sylfurion


Masculin Age : 27
Inscrit le : 02/03/2009
Messages : 513

[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitimeJeu 17 Sep 2009 - 18:06

O.K. merci sa doit être bon !
Revenir en haut Aller en bas
Contenu sponsorisé




[RESOLU]Calcul d'un itinéraire Empty
MessageSujet: Re: [RESOLU]Calcul d'un itinéraire   [RESOLU]Calcul d'un itinéraire Icon_minitime

Revenir en haut Aller en bas
 

[RESOLU]Calcul d'un itinéraire

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Modifier calcul dégats
» [VX] Formules de calcul personnalisées
» système de calcul des dommages de base de vx
» Calcul du prix d'un objet en masse.
»  [VX] Modification du calcul des résistances élémentaires

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Requêtes :: Archives-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit