Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


-Mettez un titre clair et explicite, pas un titre vague.
-Fournissez le plus d'informations possible, soyez clair et concis.
-Pensez à éditer votre sujet afin d'ajouter [Résolu] dans le titre, lorsque votre demande est résolue.



Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 
Auteur Message
 Sujet du message: [résolu]Script de regard divisé en 8
MessagePublié: 05 Sep 2010, 18:45 
Membre royal très actif
Avatar de l’utilisateur

Inscrit le: 21 Déc 2006, 01:00
Messages: 1201
Niveau RPG Maker: Plutot bon!
Logiciel(s) préféré(s): Euh...devinez ;) (et XP j'aime pas VX)
Point(s) Fort(s): Event,et jme debrouille pour le reste^^
Sexe: Masculin
Points d'aide: 14/60

Créations :

- [add-on mode7] deplacement avec pivot


Voir ses créations

Voici un shema:
Image


j'aimerais un script de ce style:
Code: Tout sélectionner
class Interpreter 
   def regard(id)
    d = ($game_map.events[id].x - $game_player.x).abs
    h = ($game_map.events[id].y - $game_player.y).abs
    $game_player.turn_left if d >= h and $game_map.events[id].x < $game_player.x   
    $game_player.turn_right if d >= h and $game_map.events[id].x > $game_player.x
    $game_player.turn_up if d < h and $game_map.events[id].y < $game_player.y
    $game_player.turn_down if d < h and $game_map.events[id].y > $game_player.y
   end
end


mais qui a la place de diviser l'ecran en 4 (ligne grises sur le shema) le divise en 8 zones (en rouge et marron sur le schema)
de plus, a la place de faire se tourner le héros, il devrait changer une variable locale (genre un chiffre de 1 à 8) de l'event concerné!

enfin, j'aimerais un script qui permeterais parmis une series d'events trouver lequel est le plus prés du héros, en utilisant le script de regard vue plus haut!

en faite, je veux faire une sorte de jeu de tir en 2d, et j'aimerais grace a ce système que le joueur puisse incliner le joystick dans l'une des 8 directions et que le jeu tire automatiquement sur la cible la plus dangereuse (la plus proche)

merci d'avance^^

_________________
Adoptez votre Arshes! :D


Dernière édition par slyp05 le 07 Sep 2010, 07:54, édité 1 fois au total.

Haut
 Profil  
 
 Sujet du message: Re: Script de regard divisé en 8
MessagePublié: 05 Sep 2010, 22:17 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 14 Avr 2007, 00:00
Messages: 1729
Localisation: ENS Rennes
Niveau RPG Maker: +∞
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 60/60

Créations :

Voir ses créations

Code: Tout sélectionner
class Interpreter
  def regard id
    event, player = $game_map.events[id], $game_player
    dx, dy = event.x-player.x, event.y-player.x
    t = [2*dx>dy, dx>2*dy, -dx>2*dy, -2dx>dy]
    !t[0] ? t[1] ? 1 : t[2] ? 2 : t[3] ? 3 : 4 : !t[1] ? 5 : !t[2] ? 6 : !t[3] ? 7 : 8
  end
  def dist id
    event, player = $game_map.events[id], $game_player
    dx, dy = event.x-player.x, event.y-player.x
    Math.sqrt(dx**2+dy**2)
  end
  def closer k
    $game_map.events.select{|e|regard(e.id)==k}.min_by{|ev|dist(ev.id)}.id
  end
end
J'ai pas testé, mais avec de la chance, ça fonctionne.

_________________
Image
Projets
> ORAGE (Alternative 2D library) (#=> voir sur Github)
> &Co (#=> http://darkleo.alwaysdata.net/)


Haut
 Profil  
 
 Sujet du message: Re: Script de regard divisé en 8
MessagePublié: 06 Sep 2010, 19:26 
Membre royal très actif
Avatar de l’utilisateur

Inscrit le: 21 Déc 2006, 01:00
Messages: 1201
Niveau RPG Maker: Plutot bon!
Logiciel(s) préféré(s): Euh...devinez ;) (et XP j'aime pas VX)
Point(s) Fort(s): Event,et jme debrouille pour le reste^^
Sexe: Masculin
Points d'aide: 14/60

Créations :

- [add-on mode7] deplacement avec pivot


Voir ses créations

><

je comprend pas x)
que modifie le "regard"?

et à quoi sert "closer"?

merci d'avance^^

_________________
Adoptez votre Arshes! :D


Haut
 Profil  
 
 Sujet du message: Re: Script de regard divisé en 8
MessagePublié: 06 Sep 2010, 22:36 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 14 Avr 2007, 00:00
Messages: 1729
Localisation: ENS Rennes
Niveau RPG Maker: +∞
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 60/60

Créations :

Voir ses créations

ahhh! saleté j'ai perdu mon message ! Bon, je recommence :(

Je commence par remettre le code (pas grande modification, mais quand même)
Code: Tout sélectionner
class Interpreter
  # renvoie le cadrant dans lequel se trouve l'event dont l'id est spécifié
  def regard id
    event, player = $game_map.events[id], $game_player
    dx, dy = event.x-player.x, event.y-player.x
    t = [2*dx>dy, dx>2*dy, -dx>2*dy, -2dx>dy]
    !t[0] ? t[1] ? 1 : t[2] ? 2 : t[3] ? 3 : 4 : !t[1] ? 5 : !t[2] ? 6 : !t[3] ? 7 : 8
  end
  # renvoie la distance entre deux events
  # 0 est l'id du héros, et est spécifié par défaut en second paramètre
  def dist id, id2=0
    ev1 =  id == 0  ? $game_player : $game_map.events[id]
    ev2 = id2 == 0 ? $game_player : $game_map.events[id2]
    dx, dy = event.x-player.x, event.y-player.x
    Math.sqrt(dx**2+dy**2)
  end
  # renvoie l'id de l'event du cadrant k le plus proche du joueur
  def closer k # avec k de 1..8
    $game_map.events.select{|e|regard(e.id)==k}.min_by{|ev|dist(ev.id)}.id rescue nil
  end
end
J'ai amélioré dist si tu veux t'en servir, et ajouté des commentaires.
regard ne modifie rien, mais renvoie une valeur.
Code: Tout sélectionner
i = regard 12
print i

closer renvoie l'id d'un event, dans un cadrant précis.
SI le cadrant est vide, devrait renvoyer nil.
Code: Tout sélectionner
id = closer 5
print i

_________________
Image
Projets
> ORAGE (Alternative 2D library) (#=> voir sur Github)
> &Co (#=> http://darkleo.alwaysdata.net/)


Haut
 Profil  
 
 Sujet du message: Re: Script de regard divisé en 8
MessagePublié: 07 Sep 2010, 07:52 
Membre royal très actif
Avatar de l’utilisateur

Inscrit le: 21 Déc 2006, 01:00
Messages: 1201
Niveau RPG Maker: Plutot bon!
Logiciel(s) préféré(s): Euh...devinez ;) (et XP j'aime pas VX)
Point(s) Fort(s): Event,et jme debrouille pour le reste^^
Sexe: Masculin
Points d'aide: 14/60

Créations :

- [add-on mode7] deplacement avec pivot


Voir ses créations

cool!

merci beaucoup!^^

_________________
Adoptez votre Arshes! :D


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 0 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728