Posté le 01/04/2014 23:14
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 104 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 01/04/2014 23:22 | #
{
FONTCHARACTER filename[20]={'\\','\\','f','l','s','0','\\'};
int a = 0;
int handle;
do
{
filename[7+a]=name[a];
a++;
}while(name[a] != 0 && a<7);
filename[7+a] = '.';
filename[8+a] = extension[0];
filename[9+a] = extension[1];
filename[10+a] = extension[2];
filename[11+a] = 0;
Bfile_DeleteFile(filename);
Bfile_CreateFile(filename,taille);
handle = Bfile_OpenFile(filename,_OPENMODE_WRITE);
if(handle>-1)
{
Bfile_WriteFile(handle,source,taille);
Bfile_CloseFile(handle);
return 1;
}
return 0;
}
int readFile(unsigned char* name,unsigned char* extension,unsigned char* reception)
{
int taille;
FONTCHARACTER filename[20]={'\\','\\','f','l','s','0','\\'};
int handle;
int a = 0;
do
{
filename[7+a]=name[a];
a++;
}while(name[a] != 0 && a<7);
filename[7+a] = '.';
filename[8+a] = extension[0];
filename[9+a] = extension[1];
filename[10+a] = extension[2];
filename[11+a] = 0;
handle = Bfile_OpenFile(filename,_OPENMODE_READ);
if(handle<0)return 0;
taille = Bfile_GetFileSize(handle);
if(handle>-1)
{
Bfile_ReadFile(handle,reception,taille,0);
Bfile_CloseFile(handle);
return 1;
}
return 0;
}
C'est exactement ce qu'on m'a répondu quand j'ai posé cette question :).
writeFile pour sauvegarder, readFile pour récupérer la sauvegarde.
Exemple :
writeFile("JumpEv","sav",sauvegarde,80); /* 80 est la taille de la sauvegarde, car ici j'ai sauvegardé un tableau d'int de 20 valeurs (4*20=80) */
readFile("JumpEv","sav",sauvegarde); /* "JumpEv "est le nom de la sauvegarde, "sav" est l'extension que j'ai choisi (tu peux mettre n'importe quoi, par exemple "nul" ) et "sauvegarde" est le nom du tableau que je sauvegarde dans la première fonction, et le tableau dans lequel je récupère la sauvegarde dans la deuxième fonction */.
Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Super Mario 3
warrior
Jump Ball
First Fly
►Jeu gagnant des 48h CPC n°12◄
Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
Citer : Posté le 01/04/2014 23:25 | #
Est-ce que les pointeurs on un rapport ?
Ajouté le 01/04/2014 à 23:35 :
Et comment je fais pour savoir si le fichier existe ?
En gros, l'équivalent de l'astuce des listes de Btl
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 01/04/2014 23:42 | #
Si la fonction Bfile_OpenFile() retourne un nombre négatif alors le fichier n'existe pas ;).
handle = Bfile_OpenFile(filename,_OPENMODE_WRITE);
if(handle>-1)
{
[green]//Le fichier existe[/green]
Bfile_WriteFile(handle,source,taille);
Bfile_CloseFile(handle);
}
Citer : Posté le 02/04/2014 12:31 | #
Si le fichier n'existe pas, tu récupèrera un tableau vide (rempli de 0).
Les pointeurs ce sont en fait les tableaux.
Dans un prototype ou une déclaration de fonction, écrire char* tableau ou char tableau[] revient exactement au même .
Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Super Mario 3
warrior
Jump Ball
First Fly
►Jeu gagnant des 48h CPC n°12◄
Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
Citer : Posté le 02/04/2014 12:49 | #
Je ne peux pas tester tout de suite, mais je crois que
est correct alors que
renvoie une erreur du type "Illegal pointer assignment".
Citer : Posté le 02/04/2014 13:04 | #
Lors d'une déclaration, il y a une grosse différence : le tableau demande une zone de mémoire qu'il peut utiliser, et son nom est considéré comme un pointeur sur le début de cette zone. Le pointeur ne demandera pas de zone de mémoire, et lors de son initialisation peut pointer sur n'importe quoi.
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 02/04/2014 13:43 | #
Les pointeurs ce sont en fait les tableaux.
Heu, je crois que des explications sur les pointeurs s'imposent.
La mémoire de la calculette est en fait comme un immense hôtel. Il y a autant de chambres que de mémoire disponible (en octets). On va dire qu'il y en a 1 500 000, soit 1,5Mo.
Chaque chambre a un numéro, qui va de 0 à 1 499 999. Dans chaque chambre, on peut mettre une valeur qui va de 0 à 255.
Le pointeur, c'est l'adresse de la chambre, la variable c'est le contenu de la chambre.
Voici un code expliqué de ce qui se passe lors de son exécution.
unsigned char caractere = 'A'; // on réserve une chambre de la taille d'un char (1 chambre), et on la rempli avec la valeur ASCII de 'A' (0x41)
int* pointeur = NULL; // on réserve une chambre qui contiendra le numéro d'une autre chambre, mais pour le moment elle ne pointe nulle part (NULL)
int tableau[4]; // on réserve 4 chambres à la suite. "tableau" est donc un pointeur (qui contient l'adresse de la première chambre qu'on a réservé)
unsigned char texte[] = "Hello World"; // on réserve 12 chambres que l'on remplit avec les valeur de la chaine de caractères. "texte" est un pointeur qui pointe sur la première chambre
pointeur = &variable; // on met le numéro (avec &) de la chambre "variable" dans "pointeur"
*pointeur = 1; // on rempli la chambre sur laquelle pointe "pointeur" (avec *) avec 1
*(tableau + 3) = 1; // on rempli la chambre qui se situe 3 cases après la première du tableau avec 1
tableau[3] = 2; // mais comme les programmeurs sont des feignants, ce code équivaut à celui ci-dessus
J'espère que c'est plus clair, les pointeurs sont vraiment important dès que vous voulez faire quelque chose de plus élaboré qu'un Pong... N'hésitez pas à aller voir le tuto du SdZ, il est très bien fait.
Citer : Posté le 02/04/2014 13:55 | #
En fait je me suis peut-être mal exprimé... merci Dark Storm, mais ça je le savais.
Ce que je voulais dire c'est que si on met tableau[] ou *tableau dans un prototype, on peut dans les deux cas envoyer un tableau à la fonction. C'était juste pour expliquer à Kirafi pourquoi dans readFile et writeFile il y a * et pas [].
Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Super Mario 3
warrior
Jump Ball
First Fly
►Jeu gagnant des 48h CPC n°12◄
Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
Citer : Posté le 02/04/2014 14:09 | #
Dans ce cas, oui
Citer : Posté le 02/04/2014 21:19 | #
Mais puisque la fonction demande un char, comment faire pour sauvegarder un score plus imposant que 255 ?
Dans mon premier add-in le score est géré avec un char, donc ce cas de figure, bien qu'improbable, me tracasse
Citer : Posté le 02/04/2014 21:21 | #
La fonction demande un unsigned char *, c.a.d une chaîne de caractères, non ?
Citer : Posté le 02/04/2014 21:33 | #
Elle demande un tableau d'octet, pas forcement une chaine de caractere.
tu peux faire
writeFile(nom,ext,(unsigned char*) tableauInt,4*TailleTableau);
si tu as un tableau d'int, sinon je pense que cela marche pour une valeur :
writeFile(nom,ext,(unsigned char*) (&int),4);
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 02/04/2014 21:33 | #
Oui, où alors un pointeur.
Parce que tu crois que je suis obligé de convertir mon int en chaîne de caractères pour pouvoir l'enregistrer ?
Citer : Posté le 02/04/2014 21:36 | #
La fonction demande un unsigned char *.
L'adresse de ton int est un int *, donc le compilateur renvoie un warning "Invalid Argument".
Du coup, on caste en unsigned char *.
Citer : Posté le 02/04/2014 21:37 | #
ou sinon, tu réduis avec une division
Je suis de l'autre coté de la manche maintenant. Yay.
Citer : Posté le 02/04/2014 21:53 | #
Apparemment, mon message est passer inaperçu
Elle demande un tableau d'octet, pas forcement une chaine de caractère. (mais pour demander un tableau d'octet, c'est aussi des unsigned char)
tu peux faire
writeFile(nom,ext,(unsigned char*) tableauInt,4*TailleTableau);
si tu as un tableau d'int, sinon je pense que cela marche pour une valeur :
writeFile(nom,ext,(unsigned char*) (&int),4);
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 03/04/2014 20:42 | #
Wahou ! Je me reconnecte 1 jour plus tard et voici une avalanche de réponses
Ok merci pour l'explication des pointeurs DarkStorm
Et donc pour pouvoir sauvegarder un Record (un int), il faut stocker le nombre dans un fichier, de cette manière ?
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 03/04/2014 20:44 | #
Ca c'est pour sauvegarder un tableau d'int.
Pour sauvegarder un unique int, utilise ceci :
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 03/04/2014 20:48 | #
Ok merci Dodormeur , j'essaye tout de suite et je met aussi le truc de Smash pour savoir si le fichier existe... Heu... Mais comment je récupère la valeur au fait
Ajouté le 03/04/2014 à 20:52 :
Bon, en fait, j'ai un peu compris les grande lignes mais concrètement, pour créer un fichier j'ai pas tout compris
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 03/04/2014 21:04 | #
en fait, writefile te renvoie 1 si tout c'est bien passé, et 0 si le fichier n'existe pas. Si la lecture a réussie, tableauInt contiendra le contenu du fichier
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !