Couloirs, portes, murs, créatures et mondes cachés

cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009 - 13 juin 2006 à 12:18
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016 - 18 juin 2006 à 13:35
Bonjour,
j'ai un input-image avec au centre le personnage qui se déplace sur une grande carte dont on ne voit que la partie proche du personnage(200*200px). Dans une table "objet", j'ai l'id de la carte, les coordonnées des objets (des rectangles) , et leur valeur. Si valeur ='interdit', on ne peut pas se déplacer sur cette zone. C'est pratique pour les mondes cachés mais pour les murs, c'est ineficace, on peut de fait passer a travers les murs, puisque seules les coordonnées du mur sont 'interdites' et non pas celles de la piéce derriere le mur.
Comment faire pour obliger le joueur a passer par la porte et non pas a travers le mur?
Je n'y connais pratiquement rien en poo mais peut-être est-ce la manière la plus élégante de programmer ce machin-là.
Je vous remercie par avance pour vos recommandations et pour vos réponses.

14 réponses

cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
13 juin 2006 à 19:33
rebonjour,
je me rends compte que ma question hier n'était pas clair:
comment rendre les murs infranchissable? ou plus clairement :
comment faire que si un mur est entre le point de départ et le point de chute, le mouvement est impossible, et ce en connaissant les coordonnées des 3 elements,
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 juin 2006 à 21:37
Hello,

c'est pas le problème, ce n'est pas pour ça que tu n'as pas eu de réponse : pas parce que tu n'es pas clair. Mais simplement parce que le sujet est bien trop vaste, et la problématique bien trop grosse pour t'être expliquée comme cela. On ne sait même pas comment fonctionne ton code de "déplacement".
Moi, en, gros, je mettraais les lieux "interdits" dans un tableau. Leurs coordonnées. Si on tombe dessus, hop, on ne bouge pas, simplement.
0
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
13 juin 2006 à 21:41
c'est ce que j'ai fait, mais une piéce comme la cuisine n'est pas interdite, mais le mur entre le personnage et la cuisine si, et donc si tu es hors de la cuisine, tu peux passe dans la cuisine à travers le mur, voila le problême: il suffit qu'un garde surveille la porte de la salle du trésor, tu passes à travers les murs et le combat avec le garde passe à la trappe, pr cette méthode.
C'est bien ça le problême!
Si quelqu'un voit comment faire, je veux bien comprendre.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 juin 2006 à 23:41
Lieux interdits chez Malalam = coordonées x,y des murs !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
14 juin 2006 à 08:57
le probleme vient en partie du déplacement: on ne se deplace pas de case en case mais de proche en proche: en cliquant sur une partie de l'image, le personnage vient se placer sur l'endroit cliqué. Ce qui fait que si le mur n'est pas trop épais (car s'il est assez épais pour ne pas pouvoir cliqué de l'autre coté du mur, il n'y a plus ce problême, mais l'image n'est vraiment pas super), le joueur passe de l'autre coté s'il veux.
Je veux juste un franchissement des murs impossible.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 juin 2006 à 09:16
C'est pareil. Crées des zones de coordonnées. Dans un tableau. TU gères bien les coordonnées de toutes manières, même si le déplacement se fait de proche en proche ?
0
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
14 juin 2006 à 09:20
oui a part que si une piece est 'autorisé' comme la cuisine, par exemle, qui est séparée du salon par un mur - interdit lui, on peut toujours aller dans la cuisine, mais on peut y aller sans forcement passer par la porte, puisque le point de chute, la cuisine est autorisé : le trajet n'est pas pris en compte. Voila d'ou vient le problême.
0
cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 juin 2006
14 juin 2006 à 09:55
Et bien tes zones "interdites" sont les murs (ou portes ou pnj)et pas les pièces, ensuite tu peu faire des tests quand le gars clique à un endroit pour savoir si il y a une zone interdite entre la position du perso et la position du clic
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
14 juin 2006 à 09:57
Ahhhh.

Je ne vois pas comment tu peux faire, dans ce cas, sans monter un pathfinder. A savoir que ton bonhomme ne doit pas se déplacer d'un point A à un point B en passant par une ligne droite, mais en tenant compte du chemin autorisé le plus efficace pour effectuer ce trajet.
Et ça, dans un langage de script...bon courage.
0
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
14 juin 2006 à 10:00
non malam, ce n'est pas un generateur de trajet que je suhaite avoir, mais comme l'a dit PofMan, je veux juste connaitre s'il existe un mur entre le point de chute et le point de départ.
Quelle est la forme la plus simple de cette fonction "détection de murs" ?
Merci d'avance pour se que vous faites
0
cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 juin 2006
14 juin 2006 à 10:03
t'as pas forcement besoin de faire du pathfinding (c vrai qu'en php ca doit être lourd enfin g jamais essayé non plus) mais simplement si en ligne droite tu doit passer pour aller de A a B par une zone interdite et ben tu fait pas de déplacement.

Comme ca en gros ben c le joueur qui fait le pathfinding (c vrai que ca peut être lourd à force mais sans pathfinding ni passer par les murs je vois pas trop)

Il y a aussi la possibilité de faire des tests avant chaque "pas" du perso s'il se déplace progressivement de A à B, mais je suis pas sur que ça soit mieu
0
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
14 juin 2006 à 10:11
je crois que vous surestimer mes competences en php, le pathfinding n'est pas au programme avant un bon moment.
Je veux juste trouver les quelques ligns de codes qui disent:
s'il y a un mur entre le point de départ et le point d'arrivée, tu n'avance pas.
Et je crois que sous cette forme, c'est plus comprehensible:
Tant qu'il n'y a pas de mur entre le point d depart et un point A(x,y), on test la valeur de A'(x+1; f(x+1)).
Je me trompe?
0
cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 juin 2006
14 juin 2006 à 10:17
Ben pour chaque mur tu peu stocker le point de début et le point de fin (en fait un mur=un segment) quand le gars clique qq part tu a un autre segment (position du perso->point de destination).

Après tu calcule s'il y a instersection entre le segment qui correspond au déplacement demandé et les segments de murs. Ca je me souvien plus comment faut faire mais y a une source qui le fait ici:
http://www.phpcs.com/code.aspx?ID=28401
0
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
18 juin 2006 à 13:35
Bon t'as p1(x1,y1), t'as p2(x2,y2), et t'as l'équation de ton mur y=px+q (ex y= 4x-3) avec L1<y<L2 et  L3<x<L4  (c'est un segment).

La droite y = ax + b est ta trajectoire(p1p2). 
il te faut donc trouver a et b donc:

y1=ax1 + b
y2 = ax2+b
tu résouds ces 2 equations à 2 inconnues(aetb): tu trouves l'équation de ta trajectoire(ex y=2x+3).
Ensuite tu cherche ton point d'intersection (systeme 2 equation 2 inconnues)
tq:
y=4x-3
y=2x+3
cas 1 :il ya intersection(1solution unique à ton eq)  :tu vérifies de quel coté du mur le point d'arrivée p2 se situe.dans ce cas 2 solutions  :
               1- il est du même coté par rapport au point p1: le déplacement est possible
               2-il est de l'autre coté par rapport au point p1: le déplacement est impossible
cas 2 : aucune solution à ton equation le déplacement est possible.
cas 3 : infinité de solution : déplacement impossible.
voilà c'est des maths de troisième ou de seconde.
0
Rejoignez-nous