Posté le 01/04/2014 23:14
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 75 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 06/04/2014 14:15 | #
Ok, c'est plus simple que ce que je pensais , et ça va pas boguer avec les bouts de code que tu m'as mis, car mon tableau contiendra des des 0
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 14:22 | #
De manière générale, je te conseille (par convention) de toujours mettre les nombres dans des ints (4 octets), ou si vraiment tu veux gagner de la place, dans des shorts (2 octets).
Mais de toute manière, n'utilise jamais de char, plutôt des unsigned char (même taille, 1 octet), à moins que tu aies des valeurs négatives.
Citer : Posté le 06/04/2014 14:28 | #
Pour une variable simple, met en effet des int, même si t'as une petite valeur (on est pas à 3 octets de RAM près).
Par contre, dès que t'as des tableaux (texte, tilemap, etc), préfère les (unsigned) char.
A la rigueur, les short peuvent servir à économiser de la place, mais pour quelques variables, c'est très peu utile
Citer : Posté le 06/04/2014 14:52 | #
Ouai, c'est ce que je fais maintenant, mais ma question c'est : Pour un tableau ("Grille[4][4]") de char, je fais ça ?
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 15:12 | #
C'est plus délicat.
Avec un tableau à une dimension, les données se suivent, donc tu peux faire ça.
Avec un tableau à deux dimensions (et notamment les tableaux de pointeurs), rien ne te garantit que les données se suivront.
Du coup, je te conseille d'y aller ligne par ligne
for(i=0;i<4;i++)
memory_writefile(handle,(void *)Grille[i],sizeof(**Grille)*4);
Comme un tableau à deux dimensions est un tableau de tableaux, alors c'est un tableau de pointeurs. Donc *Grille renvoie le tableau Grille[0], qui est lui-même un pointeur. Il faut donc utiliser **Grille.
Pour lire, c'est comme d'habitude, mais toujours dans le même ordre.
Citer : Posté le 06/04/2014 15:13 | #
Oui, c'est juste le -1 que j'aurais remplacé par 0.
Citer : Posté le 06/04/2014 15:13 | #
On se contredit
Il faut bien mettre -1 (position actuelle du handle), et pas 0 (début du fichier).
Citer : Posté le 06/04/2014 15:17 | #
Il correspond à quoi déjà le dernier argument ?
Après tout, c'est ta lib, pas la mienne
Citer : Posté le 06/04/2014 15:18 | #
Ces arguments sont les même que pour Bfile.
Le dernier correspond à la position dans le fichier.
Citer : Posté le 06/04/2014 15:19 | #
Ben oui, donc pour tout récupérer, faut mettre 0. (position du premier élément à récupérer)
Citer : Posté le 06/04/2014 15:27 | #
voila, ça donne ça, mais il reste un truc dont je ne suis pas sur
int handle;
handle = memory_openfile(FILEPATH,_OPENMODE_READ);
memory_readfile(handle,(void *)Record,4,-1);
memory_readfile(handle,(void *)Score,4,-1);
[u]Je m'est quoi pour lire le tableau du coup ?[/u]
memory_closefile(handle);
}
void Save(int Record, int Score, [u]Je m'est quoi pour appeller[/u]){ //Truc qui sers pour la sauvegarde de fichiers
int handle;
memory_deletefile(FILEPATH);
memory_createfile(FILEPATH,[u]Je m'est quoi ?[/u]);
handle = memory_openfile(FILEPATH,_OPENMODE_WRITE);
memory_writefile(handle,(void *)(&Record),sizeof(Record));
memory_writefile(handle,(void *)(&Score),sizeof(Score));
int i;
for(i=0;i<4;i++)
memory_writefile(handle,(void *)Grille[i],sizeof(**Grille)*4);
memory_closefile(handle);
}
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 15:28 | #
Mais non, les données dont on parle ne sont pas forcément à l'index 0 !
Si la lecture se fait en plusieurs fois, il faut laisser -1.
Et puis de toute manière, le compteur est initialisé à 0.
Ajouté le 06/04/2014 à 15:32 :
Pour lire le tableau à deux dimensions, tu modifies le protoype et tu mets unsigned char ** en paramètre.
Dans l'ouverture de ta fonction, tu mets char **Grille.
Pour lire le tableau
for(i=0;i<4;i++)
memory_readfile(handle,(void *)Grille[i],4,-1);
où 4 est le nombre d'éléments par ligne * la taille de ces éléments.
Dans le createfile, après FILEPATH, tu mets la taille du fichier (assez grande pour contenir toutes les données).
Et quelle est la question pour le Save ?
Citer : Posté le 06/04/2014 15:36 | #
En gros, je met quoi dans
idem avec le Read
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 15:39 | #
Je l'ai mais, tu ne l'as juste pas vu
En remplaçent bien sûr "type" par le type de ton tableau.
Et n'oublie pas de modifier le prototype.
Citer : Posté le 06/04/2014 15:50 | #
Ok j'ai mis ça, c'est bon ? parce que j'ai pas d'erreur de compilation mais lorsque je teste avec l'émulateur, je clique sur l'icone du jeu dans le menu et le SDK m'ouvre une fenêtre avec "Execution has stopped due to an error!, Exeption blocked reset"
int i;
int handle;
handle = memory_openfile(FILEPATH,_OPENMODE_READ);
memory_readfile(handle,(void *)Record,4,-1);
memory_readfile(handle,(void *)Score,4,-1);
for(i=0;i<4;i++)
memory_readfile(handle,(void *)Grille[i],4,-1);
memory_closefile(handle);
}
void Save(int Record, int Score, char **Grille){ //Truc qui sers pour la sauvegarde de fichiers
int i;
int handle;
memory_deletefile(FILEPATH);
memory_createfile(FILEPATH,100);
handle = memory_openfile(FILEPATH,_OPENMODE_WRITE);
memory_writefile(handle,(void *)(&Record),sizeof(Record));
memory_writefile(handle,(void *)(&Score),sizeof(Score));
for(i=0;i<4;i++)
memory_writefile(handle,(void *)Grille[i],sizeof(**Grille)*4);
memory_closefile(handle);
}
Pour la création du fichier
memory_createfile(FILEPATH,100);
Save(Record,Score,Grille);
}
Pour sauvegarder/lire
Read(&Record,&Score,&Grille); //Extrait les informations du fichier
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 15:56 | #
Tu as écrit &Grille.
Or Grille est un tableau à deux dimensions, donc de type char **.
&Grille est un pointeur sur Grille, soit de type char *** !
Lorsque tu passes un tableau, puisqu'il s'agit d'un pointeur, tu as forcément un passage par adresse. Laisse donc
Citer : Posté le 06/04/2014 16:05 | #
Ok, la compilation fonctionne mais il y à toujours la fenêtre d'erreur bizarre qui s'ouvre :huh:
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 16:15 | #
Je pense que c'est dans la fonction Read.
Mets son appel en commentaire, et dis-moi si l'erreur est toujours présente.
Citer : Posté le 06/04/2014 16:19 | #
Non, toujours cette fenêtre
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 06/04/2014 16:22 | #
J'ai toujours du mal avec les tableaux à deux dimensions en paramètre, désolé ^^'
Modifie le prototype et la fonction de Save, en changeant **Grille en Grille[4][4].
Citer : Posté le 06/04/2014 16:25 | #
Pas de bug de compilation mais toujours la fenêtre
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)