1

Voila je suis en train de creer un rpg et j'ai fait mon programme en C.
Tout marchait bien mais dans un rpg il faut changer de carte.Jusqu'à maintenant j'étais sur la même (j'essayais mon prgm donc j'avais pas besoin de plus).
Ma carte est tout bêtement une matrice de 20x20 (je l'agrandirais plus tard) que j'ai déclaré en début de prgm.
Ma question est donc :"comment changer de matrice?".
Avant je programmais en basic donc pour lire une matrice en 2d je faisais 2 boucles for qui lisaient peu à peu ma matrice et affichaient les images correspondantes.
Ca marche aussi dans mon prgm C mais au moment de changer de matrice (par exemple quand on rentre dans une maison dans le jeu), je réussi pas à effacer la matrice qui représentait l'ancienne carte et définir ma nouvelle matrice comme matrice "courante" (celle que lit les deux boucles for).
voila c'est un peu compliqué mais j'essaye de faire un bon rpg et j'ai déja l'histoire, ce qui me motive pour continuer, ce serait donc bête de rester bloquer par un petit probleme.
merci d'avance.
avatar
Ancien pseudo : worfang.

2

suffit de changer le pointeur vers le tableau du nouveau niveau non ? neutral

3

ca risque pas de faire grossir la taille du prog d'avoir pas mal de matrice utilisée?
avatar
Ancien pseudo : worfang.

4

si c'est des 20*20 ca va, sinon ben tu mets les données des niveaux dans des fichiers externes

5

des fichiers externes???comment tu fais ca?
avatar
Ancien pseudo : worfang.

6

le probleme c'est que je compte augmenter la taille des matrices après.
20x20 c'était juste pour le début...
avatar
Ancien pseudo : worfang.

7

Y a pas moyen de faire ca sans pointeur?
Juste la solution pour effacer une matrice de la memoire du programme (si c'est possible) pour la redéclarer après résoudrait mon probleme.
avatar
Ancien pseudo : worfang.

8

avec des free et des alloc ca doit etre possible oui

9

mais ca sera toujours des pointeurs...

10

comment tu fais pour effacer la matrice?
tu mets l'alloc à 0??? confus
dsl ca fait pas longtemps que je programme en C
avatar
Ancien pseudo : worfang.

11

si tu fais free(le pointeur vers la matrice) ca marche pas ?

(dsl ca fait longtemps que je fais plus de C grin )

12

un truc genre free(*cart1)?
Attend j'essaye...
avatar
Ancien pseudo : worfang.

13

non tigcc veut pas il me dit quand même que je redéclare ma variable.
sinon il me dit quand j'essaye pas de changer la matrice mais juste de la 'remplacer':
parse error before '{' token.
D'un autre coté, je sais pas si je fais les bonnes choses pour changer toutes les valeurs de ma matrice:
ma matrice 'cart1' a déja été déclaré en short auparavant et je met
cart1={{ toute ma matrice}};
avatar
Ancien pseudo : worfang.

14

worfang :
Y a pas moyen de faire ca sans pointeur? Juste la solution pour effacer une matrice de la memoire du programme (si c'est possible) pour la redéclarer après résoudrait mon probleme.

Sachant qu'une matrice *est* un pointeur, non, pas vraiment... Si tes niveaux sont déclarés en statique dans ton programme (ce qui semble être le cas), le plus simple c'est de déclarer un pointeur qui sera le niveau courant, et de le faire pointer vers la matrice que tu veux : celle du niveau que tu veux charger. En clair, "ptr = niveau1;", avec "ptr" un pointeur de type compatible avec "niveau1" qui est ta matrice 20x20, la manipulation sera exactement la même que ce que tu faisais, mais avec "ptr" au lieu de "niveau1".
Si j'ai une suggestion, ça serait d'ouvrir un livre de C ou bien de lire un tutorial, en essayant "au pif" jusqu'à ce que ça marche comme tu fais, tu vas mettre bien plus de temps à comprendre réellement ce que tu fais.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

merci vertyos je vais de ce pas ouvrir un bouquin de C (en plus j'en ai un!)
avatar
Ancien pseudo : worfang.