Remplir un tableau avec des datas .

Programmation d'applications complexes
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Remplir un tableau avec des datas .

Message par morukutsu »

S@lut a tous ^^,

En fait dans la réalisation de mon jeu de plateforme 2D, j'aurais besoin de gérer des evenements sur une "map" composée de tiles . (Ex: Collisions, Teleporteur ...)

Donc je me suis dit que la meilleure façon de préremplir un tableau c'est d'utilliser les Datas ... ( Si je me trompe dites le moi tout de suite :P )

Or je ne sais point comment fonctionnent les Datas .
Quelqu'un pourrais t-il m'expliquer , SVP ?

PS: J'ai déja regardé dans l'aide de Purebasic, et je ne suis pas avancé !

Merci d'avance :D
The life is a game...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Le mieux ca reste les fichiers... avec les datas tu vas galérer...
commence par bien décider de la gestion de tes évennements... de tous les types d'évennements et vois comment tu peux les stocker...

Dri ;)
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

En fait chaque case du tableau vaudra 1 si c'est une collision , 0 si il n'y a rien et ainsi de suite . Je me suis dit que le plus simple moyen de gérer tout ça c'était d'utilliser un tableau à double entrées .
The life is a game...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Pour des collisions c'est sûr, ca suffit amplement mais comme tu parlais d'évennements au sens large comme la téléportation... Je te conseille de bien délimiter les actions possibles...

Dri ;)
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Comme dit Dr.Dri Le mieux c'est un fichier.

Mais si tu veux avoir un tableau avec des valeurs par défaut au départ tu peux faire comme suit :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration du tableau >>>>>

Dim Tableau.s(9)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Initialisation du tableau >>>>>

Tableau(0) = "Élément 01"
Tableau(1) = "Élément 02"
Tableau(2) = "Élément 03"
Tableau(3) = "Élément 04"
Tableau(4) = "Élément 05"
Tableau(5) = "Élément 06"
Tableau(6) = "Élément 07"
Tableau(7) = "Élément 08"
Tableau(8) = "Élément 09"
Tableau(9) = "Élément 10"
Avec les quelques tests que j'ai fait, je n'ai pas vu de différence de taille entre un programme avec une datasection et un tableau initialisé de cette manière. Du point de vu performance c'est négligable les 2 sont identiques. Mais il faut faire ReadData directement. Si tu prend le temps de prendre les datas de les mettre en place dans un tableau et de l'utiliser par la suite il va y avoir une différence entre les 2 méthodes.

Si tu as une structure de données pour gérer les évenements de tes maps je te suggère de faire un Éditeur en plus de ton jeu et de réutiliser la même structure dans les 2 programmes. L'éditeur va doit savoir lire et écrire le fichier *.map disons alors que ton jeu lui doit seulement savoir lire le fichier.

A+
Guimauve
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

En fait pour le moment c'est juste pour tester le moteur de deplacement de mon personnage sur une map .

EDIT: J'avais pas vu ton post Guimauve, ben en fait mes maps sont dans le format .fmp de Mappy (CF: Le tuto que j'ai fait sur le .fmp) donc j'ai déja tout pour l'afficher et l'editer .
Mais vu que le format existe déja je me suis dit que je n'allais pas recréer un nouveau format .
Les évenements seront dans un 2ème ficher à côté .
The life is a game...
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Ah bon ! Si tu manipule déja des fichiers c'est probablement la meilleure solution.

A+
Guimauve
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

Non, :(
Je ne manipule pas vraiment bien les fichiers et puis le format .FMP je l'utillise car j'ai trouvé sur le net un code permettant de l'utilliser avec Purebasic .
En fait je demandais comment proceder pour remplir un tableau avec des "datas" mais vous m'avez dit que ce n'était pas la meilleure solution ...
Je me retourne donc vers la 2ème solution : mettre le tableau dans un fichier :P .
J'ai pas encore lu la doc sur le sujet mais ...
Est-ce compliqué ?
The life is a game...
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Codé sur le gros gaz ... C'est comme ça que l'on peut faire :

Code : Tout sélectionner

Dim Montableau.b(100)

For Index = 0 To 100 Step 3
  Montableau(Index) = 1
Next


If CreateFile(0,"Monfichier.dat")
  
  WriteByte(100)
  
  For Index = 0 To 100
    WriteByte(Montableau(Index))
  Next
  
  CloseFile(0)
  
EndIf 

; On vide le tableau
Montableau(0)

If ReadFile(1,"Monfichier.dat")
  
  NbElement.b = ReadByte()
  Montableau(NbElement)
  
  For Index = 0 To NbElement
    Montableau(Index) = ReadByte()
  Next
  
  CloseFile(1)
  
EndIf 

For Index = 0 To 100
  Debug Montableau(Index)
Next
A+
Guimauve
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

Thanks you very much !
Au fait le "gros gaz" c'est quoi ? Sa veut dire que tu l'as codé a l'arrache ?
The life is a game...
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

J'ai pas compté le temps mais c'est moins de 2 minutes ( Je compte le temps pour lancer jaBPe ) avec 1 exécution pour voir si tout fonctionnait.

A+
Guimauve
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

Au fait ,

Code : Tout sélectionner

If CreateFile(0,"Monfichier.dat") 
  
  WriteByte(100) 
  
  For Index = 0 To 100 
    WriteByte(Montableau(Index)) 
  Next 
  
  CloseFile(0) 
  
EndIf 
Il sert a quoi le premier "WriteByte" ?
Merci .
The life is a game...
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Le premier WriteByte() sert à écrire dans le fichier la dimension du tableau juste avant la création du fichier. C'est plus ou moins utile si le tableau à toujours la même dimension. Exemple le tableau à toujours 100 index peut importe la map chargé par exemple.

Bien sûr il faut savoir combien d'élément tu as besoin. Dans l'exemple il n'y a que 100 éléments dans le tableau donc une variable de type Byte est suffisant pour faire le travail. Parcontre s'il y a 10 000 éléments une Variable de type Word va faire l'affaire. Et s'il y en a plus, une variable de type Long sera nécessaire.

Bien sur c'est totalement indépendant du type de tableau.

A+
Guimauve
morukutsu
Messages : 65
Inscription : sam. 29/janv./2005 15:01
Contact :

Message par morukutsu »

Ok merçi sa me sera grandement utile .
The life is a game...
Répondre