Maths et Prog Java

Postez ici tout ce qui ne concerne ni RO ni Prontera.fr. Expression libre ^_^ (dans la limite du raisonnable ;p)

Re: Maths et Prog Java

Messagepar patos » 20 Août 2008 11:28

Hmm en gros

C=case vide M=mur P=perso Le deuxième est la case.

C1 C2 C3 C4
C5 C6 M7 M8
C9 CA CB CC
PD CE CF CG

PD Regarde C9 par le haut: il la voit.
C9 Regarde C5 par le haut: il la voit.
PD Regarde CA par le coin Haut droit: il la voit.
CA Regarde M7 par le coin HAUT droit: il la voit.
M7 Ne voit rien par le haut, haut droit, droit.
C9 regarde C6 par le coin haut droit: il la voit.
C6 regarde C3 par le coin haut droit: il la voit.

Donc C3 est visible par C6, C2, et pas par M7. 2/3, elle est considérable comme visible.
Et C4 est visible par C3 mais pas par M7 et 8M. 1/3, elle est considérable comme invisible.

Je pensais à ce genre de chose... avec une limite de récursivité dans la limite dans de la ligne de vue.
\o/ [o] [o_ |o| !!

Avatar de l’utilisateur
patos
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 8818
Inscrit le: 13 Déc 2004 22:23
Localisation: Ben je roule alors je bouge

Re: Maths et Prog Java

Messagepar myrtill » 20 Août 2008 12:58

Tu mettrais un poid a chaque fois qu'une case peut etre vue, une fois une certaine limite de poid dépassé, on considère qu'elle est visible. Pourquoi pas, ca me semble pas mal, même si je me demande si c'est pas gourmand en calcul ?

Par contre, ote moi un doute, quand tu dis : M7 Ne voit rien par le haut, haut droit, droit.
Tu considère donc que M7 étant un mur, il ne voit nul part en fait ? Car autant je comprends que M7 ne voit pas a droite car il y a un autre mur, autant en haut et en haut a droite, c'est vide, donc visible.

Par contre en effet, avec cette methode, on ne va pas calculer plus loin le vide invisible. C'est à dire qu'a partir du moment ou on tombe sur une cell invisible, on s'arrete la. C'est sympa car si la personne se trouve dans un couloir, on va pas s'amuser a calculer tout ce qui se trouve derriere pour rien.
Avatar de l’utilisateur
myrtill
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 6367
Inscrit le: 12 Mars 2005 10:32

Re: Maths et Prog Java

Messagepar patos » 20 Août 2008 13:30

\o/ [o] [o_ |o| !!

Avatar de l’utilisateur
patos
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 8818
Inscrit le: 13 Déc 2004 22:23
Localisation: Ben je roule alors je bouge

Re: Maths et Prog Java

Messagepar myrtill » 20 Août 2008 13:57

Humm, a chaque fois que je teste ton truc, je tombe toujours sur des angles à 45°.
Si on regarde le schéma suivant, le joueur bleu verra plus de chose que le joueur rouge (le truc gris c'est le mur, en vert ce qui est visible par tout le monde, en blanc personne)
Image

Or, quand je suis ta méthode, je n'arrive pas à avoir la même chose. J'ai a chaque fois la meme visu quelque soit l'emplacment de la personne :(

Bon je vais chercher hein ^^ te fais pas mal à la tete pour moi :o
Avatar de l’utilisateur
myrtill
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 6367
Inscrit le: 12 Mars 2005 10:32

Re: Maths et Prog Java

Messagepar psykokarl » 20 Août 2008 14:55

D'abord lors de la conception de l'objet agent. Tu dois indiquer
- sa position (reference vers un point de la map)
- dans quel sens il regarde
- ce qu'il fait

Les elements de l'objet map doivent
- pointer sur élément vide si la case est vide.
- pointer sur l'agent qui occupe la case. Si la case est occupée par un agent.

Si un agent se déplace :
- il fait la nouvelle case de la map pointer sur lui
- il fait l'ancienne case de la map pointer sur element vide.

ainsi tu peux avoir accès aux informations de l'agent observés via sa référence sur la map. En regardant les 64 cases devant l'agent qui observe et en cachant les éléments qu'ils ne peut pas voir.

bon chance pour la création de ton MMO :3
Avatar de l’utilisateur
psykokarl
2nd Class - Rebirth
2nd Class - Rebirth
 
Messages: 1281
Inscrit le: 13 Déc 2004 22:23
Localisation: devant son ecran 24 pouce !1!one§eleven!

Re: Maths et Prog Java

Messagepar myrtill » 20 Août 2008 19:09

Euh non je ne pensais pas faire ca comme ca, mais plutot faire un objet pour chaque "case".
Cet objet serait un ensemble de Client, Field, et Buff.
Client contiendrait un joueur ou non, Field l'élement de décord souhaité (mur, eau etc) et Buff contiendrait divers effets appliqué au terrain (un peu comme l'emplacement d'un LP ou autre quoi). Le tout en vecteur car il sera possible de stacker certains buff au meme endroit je pense. Concernant les joueurs, je ne sais pas encore si je vais gérer les collisions. J'ai le temps :o

Sinon je sais déjà comment déplacer mes perso etc, je cherche une méthode (simple et pas trop gourmande) pour envoyer a chaque client ce qu'il voit (vu que je ne veux pas qu'une personne voit derriere elle par exemple). Ca a l'air simple, mais un simple mur m'obliger a calculer un certain angle et choisir quelles cellules seront visibles (ou non) pour le joueur.
Avatar de l’utilisateur
myrtill
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 6367
Inscrit le: 12 Mars 2005 10:32

Re: Maths et Prog Java

Messagepar myrtill » 21 Août 2008 10:05

Bon, j'ai décidé de faire comme ca :

On parcours chaque cellule du screenvirtuel de la personne.

1. Si la cell est un mur, skip.
2. Si la cell est déjà taguée avec l'instance en cours (a chaque fois j'incrémente instance pour etre sur de ne pas zaper de cell qui ont été tagée il y a 10 sec avant), alors on zap
3. Sinon, on triangule avec le client de facon à obtenir une pseudo ligne droite entre ma cellule et mon client. Pour chaque cellule sur la ligne, je tag en fonction de ce qu'il y a dedand. Des qu'un obstacle est trouvé, je tag en non visible et toutes les suivantes le seront aussi du coup.


Me ballandant de cellule en cellule, au début je vais pas mal calculer, puis au final, je vais tomber de plus en plus sur des cell déjà taguée qui seront donc skipée.

Maintenant, need tester pour savoir combien ca bouffe en calcul.
Avatar de l’utilisateur
myrtill
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 6367
Inscrit le: 12 Mars 2005 10:32

Re: Maths et Prog Java

Messagepar Zerg-Spirit » 26 Sep 2008 15:01

Hmm, j'arrive probablement trop tard, mais pour ton probleme 1, un Map me semble tout indiqué.
Tu déclare un truc du genre:
Map<String,Client> clientPerName = new HashMap<String, Client>();

Et après, tu rajoutes tes clients comme ca:
clientPerName.put(client.getName(),client);

Ca te permet de choper tes clients tout simplement derrière, en faisant un simple:
Client monClient = clientPerName.get(clientName);
Et donc plus besoin d'itérer sur ton Vector ou ta List.
Evidemment, la contraire est que ta clef (ici ton nom de client) soit unique.

Sinon, quand t'as des probleme de java, tu peux aussi venir me voir :)
Image
Image
Avatar de l’utilisateur
Zerg-Spirit
Rebirth - LV 20
Rebirth - LV 20
 
Messages: 1654
Inscrit le: 13 Déc 2004 22:25
Localisation: Lyon, FRANCE

Re: Maths et Prog Java

Messagepar myrtill » 01 Oct 2008 21:26

Un peu en retard aussi :o
Merci pour l'aide, même si je ne travaille plus sur ce projet, je garde la méthode car elle me reservira
(et je garde surtout ton msn :mrgreen: )
Avatar de l’utilisateur
myrtill
Rebirth - LV 98
Rebirth - LV 98
 
Messages: 6367
Inscrit le: 12 Mars 2005 10:32

Précédent

Retour vers Off-Topic

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit and 2 invités

cron