Page 3 sur 4
Publié : dim. 01/mai/2005 10:50
par comtois
cederavic a écrit :A ce sujet, tu as essayer le Quick Sort de ton Comtois?
J'ai pas encor trouver le temps de le faire moi... Et j'ai toujours quelques soucis avec la version "Threadée"... (Un bug en cache toujours un autre

)
Non pour l'instant je bosse les collisions glissantes , et je galère

Pour l'instant , j'ai fait ça ( les segments peuvent être déplacés à la souris)
TestCollision
ça déconne complètement ,mais c'est un début

Je voudrais faire des fonctions qui puissent être utilisées aussi bien en 2D qu'en 3D.Pour l'instant je fais mes essais en 2D , quand ça sera ok , je testerai en 3D.
Sinon plutôt qu'un Quick Sort ; j'essayerais autre chose , comme les arbres binaires de recherche , ou alors je voulais bosser sur les tas et les files de priorité .
Un tas c'est un arbre organisé de façon à retrouver le noeud ayant la plus petite ou la plus grande valeur , dans notre cas , ça serait la plus petite .
c'est plus rapide que de faire un tri .
Publié : dim. 01/mai/2005 11:06
par cederavic
Pas mal ton exe, je pense que tu es sur la bonne voie
Sinon, je ne connais pas les arbres binaires, donc je te laisse le plaisir de le faire

Publié : dim. 01/mai/2005 12:59
par Gratteur
Les arbres binaires ressemblent beaucoup à des tableaux binaires mais en utilisant des listes chaînées (donc les "colonnes" ne font pas toutes la même taille, ca part dans tous les sens comme les branches d'un arbre, graphiquement ca pourait ressembler à un arbre génialogique).
On utilise couramment ce genre d'arbre (version non binaire) pour le mode T9 des téléphones portables par exemple, on navigant dans les branches ont peu retrouver très rapidement tous les mots d'un dictionnaire préalablement trié et rangé dans l’arbre.
Pour en revenir au Pathfinder, le mien marche correctement sauf dans le cas ou la cible se retrouve de l'autre coté d'un cul sac. Pour que le personnage puisse sortir du cul sac si il se trouve à l'intérieur et que la cible se trouve à l'extérieur (ou inversement qu'il ne rentre pas dans le cul sac si la cible et lui sont à l'extérieur), j'ai besoin de générer quelques rares points de passage assez particuliers.
C'est pour cela que j'aimerai bien en savoir plus sur ton algorithme qui procède par remplissage de surfaces en calculs préliminaires afin de choisir la meilleure solution.
Publié : dim. 01/mai/2005 17:07
par comtois
ça c'est pour les files de priorité
http://www.enseignement.polytechnique.f ... node3.html
pour le remplissage , j'avais utilisé cet algo
en remplaçant Getpixel par la map bien sûr
Code : Tout sélectionner
void remplissage(int xx,int yy,
int c,int lim) {
int x,y,xi,xf ;
p.sp = 1 ;
p.x = calloc(1000,sizeof(int)) ;
p.y = calloc(1000,sizeof(int)) ;
p.x[0] = xx ;
p.y[0] = yy ;
setcolor(c) ;
while ( p.sp != 0 ) {
xi = xf = x = p.x[p.sp-1] ;
y = p.y[p.sp-1] ;
x++ ;
cp = getpixel(x,y) ;
while ( cp != lim ) {
xf = x ;
x++ ;
cp = getpixel(x,y) ; }
x = p.x[p.sp-1]-1 ;
cp = getpixel(x,y) ;
while ( cp != lim ) {
xi = x ;
x-- ;
cp = getpixel(x,y) ; }
line(xi,y,xf,y) ;
p.sp-- ;
x = xf ;
while ( x >= xi ) {
cp = getpixel(x,y+1) ;
while ( ((cp == lim) || (cp == c))
&& (x >= xi) ){
x-- ;
cp = getpixel(x,y+1) ; }
if ( (x >= xi) && (cp != lim)
&& (cp != c) ) {
p.x[p.sp] = x ;
p.y[p.sp] = y+1 ;
p.sp++ ; }
cp = getpixel(x,y+1) ;
while ( ( cp != lim )
&& ( x >= xi ) ) {
x-- ;
cp = getpixel(x,y+1) ; } }
x = xf ;
while ( x >= xi ) {
cp = getpixel(x,y-1) ;
while ( ((cp == lim) || (cp == c))
&& (x >= xi) ){
x-- ;
cp = getpixel(x,y-1) ; }
if ( (x >= xi)
&& (cp != lim)
&& (cp != c) ) {
p.x[p.sp] = x ;
p.y[p.sp] = y-1 ;
p.sp++ ; }
cp = getpixel(x,y-1) ;
while ( ( cp != lim )
&& ( x >= xi ) ) {
x-- ;
cp = getpixel(x,y-1) ; } } }
free(p.x) ;
free(p.y) ;
}
si la map n'est pas trop grosse tu peux utiliser une fonction récursive
ça fait la même chose que le code ci dessus , sauf que tu es limité par la capacité de la pile !
Code : Tout sélectionner
void remplissage(int x,int y,
int c,int lim) {
cp = getpixel(x,y) ;
if ( ( cp != lim ) && ( cp != c ) ) {
putpixel(x,y,c) ;
remplissage(x,y+1,c,lim) ;
remplissage(x,y-1,c,lim) ;
remplissage(x+1,y,c,lim) ;
remplissage(x-1,y,c,lim) ; }
}
Publié : mar. 03/mai/2005 22:15
par Gratteur
C'est très intéressant tout ça, mais finalement ça ne va pas beaucoup m'aider à placer mes waypoints de secours (les cartes pouvant faire jusqu'a 200*200 cases de 32 pixels ça risque d'être un peu trop lent).
En tout cas merci beaucoup Comtois pour ce petit morceau de code en java et pour le reste, j'admire ta disponibilité envers les nouveaux venus (et les anciens) et tes conseils me font vraiment très plaisir.
D'ailleurs (je m'adresse à tous ceux qui ont répondu à ce topic et aux autres qui ont pris la peine de le lire) votre accueil est le plus chaleureux que j'ai reçus jusqu'a présent sur un forum.
Publié : mer. 04/mai/2005 5:13
par cederavic
PureBasic n'est vraiment pas un langage comme les autres, et sa communoté encor moin

J'ai moi aussi un projet dans le meme genre, et pour le déplacement des personnages, j'ai fait une structure Entity avec les points de depart / arrivée, et tout ce passe dans des Thread. J'ai une fonction EntityGoTo(*Entity.EntityStruct, *Way.WayStruct) qui creer en fait un thread pour l'entité, donc ça me permet de déplacer plusieur personnages en même temps sans avoir des tonnes de variables globales...
Si ça peut te donner une voie...

Publié : lun. 09/mai/2005 12:13
par Gratteur
(Je reconnais que cette communauté est superbe et très active !)
Ton idée est intéressantes, mais pour le moment je préfère continuer les tests. De toute façon inclure le pathfinder n'est pas très urgent, il reste beaucoup de travail a fournir sur les autres parties du programme.
On dira que le pathfinder est mon fil rouge ;p
Bon, après quelques petites interruptions personnelles (on ne devient pas parrain tous les jours) et partielles en tout genre, le codage studieux va pouvoir reprendre.
Bon après midi !
Publié : lun. 09/mai/2005 16:24
par Dr. Dri
cederavic a écrit :PureBasic n'est vraiment pas un langage comme les autres, et sa communoté encor moin

J'ai moi aussi un projet dans le meme genre, et pour le déplacement des personnages, j'ai fait une structure Entity avec les points de depart / arrivée, et tout ce passe dans des Thread. J'ai une fonction EntityGoTo(*Entity.EntityStruct, *Way.WayStruct) qui creer en fait un thread pour l'entité, donc ça me permet de déplacer plusieur personnages en même temps sans avoir des tonnes de variables globales...
Si ça peut te donner une voie...

ah bah ca c'est sûr, avec DB je galérai ^^
Dri
Publié : sam. 14/mai/2005 18:43
par Gratteur
Voici une petite (grande) image de l'éditeur, histoire de montrer au monde que la programmation avance bien (pas de hentail cette fois ;p) :

Publié : sam. 14/mai/2005 19:04
par comtois
c'est beau

Publié : dim. 15/mai/2005 10:07
par bernard13
c'est cool que tu fais
Bravo continue
j'ai hate de voir la version finale
Publié : lun. 16/mai/2005 21:11
par lionel_om
J'avais fais un éditeur de Map 2D, si ça t'intéresse :
http://luchezl.free.fr/Programmation/3D ... pMaker.rar
Dailleurs le RPG que je développé depuis l'été dernier a été arrété. Il sera sans doute remplacé par un autre jeu 2D en pureBasic cette fois-ci (y'en a un ki va etre content, pas vrai Dri

)
Publié : mar. 17/mai/2005 1:25
par Fred
C'est plutot prometteur !
Publié : mer. 18/mai/2005 7:44
par Dr. Dri
lionel_om a écrit :J'avais fais un éditeur de Map 2D, si ça t'intéresse :
http://luchezl.free.fr/Programmation/3D ... pMaker.rar
Dailleurs le RPG que je développé depuis l'été dernier a été arrété. Il sera sans doute remplacé par un autre jeu 2D en pureBasic cette fois-ci (y'en a un ki va etre content, pas vrai Dri

)
^^
Dri
Publié : mer. 18/mai/2005 14:10
par Gratteur
Vos posts me motivent énormément, c’est peut-être bête car depuis que j’ai commencé ce projet je boss surtout pour me faire plaisir et réaliser mon rêve de créer un rpg pour adulte sympas et original en utilisant le scénario que je dédiais a mon premier livre. Mais depuis peu, en voyant les réactions enthousiastes sur divers forums, j’ai de plus en plus envie de faire plaisir aux joueurs en prêtant attention a tous les petits détails (ce qui a bien ralongé la durée de développement...).
Quelques informations :
LDE sortira par chapitre de 2 à 5 heures minimum, le premier cycle est composé de 6 chapitres, la sortie du premier chapitre est prévue dans 12 à 15 mois, l’intervalle entre chaque chapitre sera de 3 à 6 mois.
L’éditeur de carte est achevé à 70%.