Page 1 sur 1

List a plusieur dimension

Publié : mar. 16/mai/2006 17:07
par Thyphoon
La question a déjà été demandé mais la reponse était pas claire...

Peux ton faire un tableau conteant une list
Je m'explique J'ai plusieurs personnages dans un jeu qui peuvent se balader sur une carte en autonomie (Ai).
Le chemin de chaque personnages serait stocker dans une liste (pour eviter de recalculer le chemin tout le temps)
exmple:

Code : Tout sélectionner

Nb_Perso=20; Nombre de personnage se balladant dans la carte
Structure coord
  x.l
  y.l
Endstructure

Global Newlist Dim chemin.coord(Nb_Perso)()
Y a t'il une autre solution ?
Merci

Publié : mar. 16/mai/2006 17:10
par poshu
pour faire ca, j'utilise en ce moment la lib vector de lionel... Mais toute autre solution serait (vraiment) la bienvenue.

Publié : mar. 16/mai/2006 20:07
par Flype
@typhoon
je me trompe peut etre mais tu peux faire comme çà :

Code : Tout sélectionner

#Nb_Perso = 20 ; Nombre de personnage se balladant dans la carte 


Structure COORDS
  x.l 
  y.l 
EndStructure


Structure CHEMIN
  coord.COORDS[#Nb_Perso]
EndStructure 


Global NewList chemin.CHEMIN()


If AddElement(chemin())
  
  For i = 0 To #Nb_Perso - 1
    chemin()\coord[i]\x = Random(640)
    chemin()\coord[i]\y = Random(480)
  Next
  
EndIf
on peut facilement simuler un tableau dans une structure
grace à cette syntaxe coord.COORDS[#Nb_Perso]
et puisqu'on peut assigner une structure à une liste alors çà devrait te convenir.

Publié : mar. 16/mai/2006 20:15
par Thyphoon
Flype a écrit :@typhoon
je me trompe peut etre mais tu peux faire comme çà :

Code : Tout sélectionner

#Nb_Perso = 20 ; Nombre de personnage se balladant dans la carte 


Structure COORDS
  x.l 
  y.l 
EndStructure


Structure CHEMIN
  coord.COORDS[#Nb_Perso]
EndStructure 


Global NewList chemin.CHEMIN()


If AddElement(chemin())
  
  For i = 0 To #Nb_Perso - 1
    chemin()\coord[i]\x = Random(640)
    chemin()\coord[i]\y = Random(480)
  Next
  
EndIf
on peut facilement simuler un tableau dans une structure
grace à cette syntaxe coord.COORDS[#Nb_Perso]
et puisqu'on peut assigner une structure à une liste alors çà devrait te convenir.
Exelent j'avais pas penser a ça .. je teste ça tout de suite ! Merci :D

Publié : mar. 16/mai/2006 20:19
par Thyphoon
L'idée était bonne mais ça ne fonctionnera pas ... :(

Car mon idée était que pour chaque personnage des qu'il arrive au point suivant du chemin de la supprimer de la liste..mais si je supprime pour un personnage ça supprimera pour les autres....

mmm tu vois ce que je veux dire ?

Publié : mar. 16/mai/2006 20:21
par Flype
Remarque à propos de çà :

Code : Tout sélectionner

Structure POS
  x.l 
  y.l 
EndStructure


Structure CHEMIN
  personnage.POS[100]
EndStructure 


Global NewList chemin.CHEMIN()


If AddElement(chemin())
  
  chemin()\personnage\x = 44
  chemin()\personnage\y = 45

  chemin()\personnage[0]\x = 46
  chemin()\personnage[0]\y = 47
  
  Debug chemin()\personnage\x
  Debug chemin()\personnage\y
  
  Debug chemin()\personnage[0]\x
  Debug chemin()\personnage[0]\y
  
EndIf

donc

chemin()\personnage\x = 44
chemin()\personnage\y = 45

équivaut à

chemin()\personnage[0]\x = 46
chemin()\personnage[0]\y = 47

mais pas à

chemin()\personnage[1]\x = 46
chemin()\personnage[1]\y = 47

je dis çà parceque j'ai jamais remarqué çà avant en plus :D

Publié : mar. 16/mai/2006 20:25
par Thyphoon
Marrant ça ...
(tu as vu mon message juste avant le tient ?)

Publié : mar. 16/mai/2006 20:46
par Flype
ah non j'avais pas vu :)

par contre désolé mais je vois pas trop en fait.
faudrait voir un aperçu de ton code...

Publié : mar. 16/mai/2006 20:48
par Thyphoon
Flype a écrit :ah non j'avais pas vu :)

par contre désolé mais je vois pas trop en fait.
faudrait voir un aperçu de ton code...
ça serait un peu lourd... En attendant j'utilise un tableau a 2 dimensions plus un autre tableau qui me donne le nombre de point pour chaque personage. ça fonctionne :)

Publié : jeu. 18/mai/2006 12:19
par lionel_om
Dans la Lib Vector, tu peux en effet faire ce que tu recherche...
Mais elle n'est pas encore dispo en V4

Lio :wink:

Publié : jeu. 18/mai/2006 13:00
par Thyphoon
lionel_om a écrit :Dans la Lib Vector, tu peux en effet faire ce que tu recherche...
Mais elle n'est pas encore dispo en V4

Lio :wink:
Y a plus qu' attendre alors :P

Publié : jeu. 18/mai/2006 13:10
par Flype
tout comme la lib vector,
j'ai aussi fait mon propre jeu de fonctions de liste chainees / arbre.

voir ici :
http://purebasic.forum-gratuit.com/view ... highlight=

il a plusieurs examples d'utilisation. et c'est `PureBasic 4 ready` :wink:

maintenant que TailBite est prêt je vais sans doute en faire une userlib d'ailleurs.

Publié : jeu. 18/mai/2006 13:14
par Thyphoon
Flype a écrit :tout comme la lib vector,
j'ai aussi fait mon propre jeu de fonctions de liste chainees / arbre.

voir ici :
http://purebasic.forum-gratuit.com/view ... highlight=

il a plusieurs examples d'utilisation. et c'est `PureBasic 4 ready` :wink:

maintenant que TailBite est prêt je vais sans doute en faire une userlib d'ailleurs.
A oui j'étais passé a côté durant mes recherches.
Merci beaucoup c'est exelent ! :)