Tableau en C
Posté le 30/09/2014 18:47
Bonjour,
dans le cadre de notre projet de Professeur Layton avec Aragorn, nous utilisons des tableaux, par exemple pour stocker le nombre de picarats, d'énigmes résolues... Mais je voulais, d'une part les mettre en variable globale, car sinon on se les trimballe dans toute l'architecture de fonctions, et d'autre part, les initialiser à 0 si la sauvegarde n'existe pas.
En gros, voici des bouts de code :
[brown]#include [gray]"fxlib.h"[/gray][/brown]
[brown]#include [gray]"MonochromeLib.h"[/gray][/brown]
[purple]char[/purple] Enigmes[51];
[purple]int[/purple] Layton[20];
[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum)
{
[purple]int[/purple] loop=[maroon]0[/maroon];
[b][blue]if[/blue][/b] (readFile([gray]"enigmes","sav"[/gray],Enigmes,[maroon]51[/maroon])==[maroon]0[/maroon])
{
writeFile([gray]"enigmes","sav"[/gray],(unsigned char*) &Enigmes,[maroon]51[/maroon]);
[b][blue]if[/blue][/b] (readFile([gray]"enigmes","sav"[/gray],Enigmes,[maroon]51[/maroon])==[maroon]0[/maroon])
{
PrintMini(1,[maroon]35[/maroon],(const [purple]unsigned char[/purple] *)[gray]"Memoire insuffisante"[/gray],[maroon]0[/maroon]);
ML_display_vram();
Shift();
[b][blue]return[/blue][/b] 0;
}
}
[b][blue]if[/blue][/b] (readFile([gray]"layton","sav"[/gray],Layton,[maroon]80[/maroon])==[maroon]0[/maroon])
{
writeFile([gray]"layton","sav"[/gray],(unsigned char*) &Layton,[maroon]80[/maroon]);
[b][blue]if[/blue][/b] (readFile([gray]"layton","sav"[/gray],Layton,[maroon]80[/maroon])==[maroon]0[/maroon])
{
PrintMini(1,[maroon]35[/maroon],(const [purple]unsigned char[/purple] *)[gray]"Memoire insuffisante"[/gray],[maroon]0[/maroon]);
ML_display_vram();
Shift();
[b][blue]return[/blue][/b] 0;
}
}
qui est le début, dans lequel je voudrais mettre Layton={0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}; dans le if qui indique si la sauvegarde existe ou non, pour ne pas la mettre à zéro si elle est déjà remplie. Mais cela ne marche pas, et je ne vois pas comment faire.
Auriez-vous des idées ?
Merci par avance.
Citer : Posté le 30/09/2014 18:51 | #
Tu peut mettre :
EDIT: j'ai réglé une erreur
#include "MonochromeLib.h"
char Enigmes[51];
int Layton[20];
int AddIn_main(int isAppli, unsigned short OptionNum)
{
int i; // variable utile pour les boucles for
int loop=0;
for(i = 0 ; i < sizeof(Layton)/4 ; i++) // on bloucle (4 car: int = 4 octets = 4* char)
Layton[i] = 0; // on met les caractères à 0
if (readFile("enigmes","sav",Enigmes,51)==0)
{
writeFile("enigmes","sav",(unsigned char*) &Enigmes,51);
if (readFile("enigmes","sav",Enigmes,51)==0)
{
PrintMini(1,35,(const unsigned char *)"Memoire insuffisante",0);
ML_display_vram();
Shift();
return 0;
}
}
if (readFile("layton","sav",Layton,80)==0)
{
writeFile("layton","sav",(unsigned char*) &Layton,80);
if (readFile("layton","sav",Layton,80)==0)
{
PrintMini(1,35,(const unsigned char *)"Memoire insuffisante",0);
ML_display_vram();
Shift();
return 0;
}
}
Voici Spassus2, mon jeu de combat spatial procédural abandonné, le NESSCASDK, mon SDK 'barebones' fait maison (C'est pour les maso uniquement) et CasioUsb, mon utilitaire de transfert d'addin pour Linux.
Citer : Posté le 30/09/2014 18:52 | #
Alors deja, tu peux tout simplement faire une boucle pour
Citer : Posté le 30/09/2014 18:55 | #
Tu ne peux remplir un tableau en une commande que quand tu l'initialise. Après, tu es obligé d'utiliser une boucle pour remplir ton tableau, comme le montre le code de Nessotrin.
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 30/09/2014 18:55 | #
Pour savoir si la sauvegarde existe, il y a une fonction dans memory il me semble
Sinon, il doit y avoir une valeur de retour de Bfile_OpenFile qui dit que le fichier n'existe pas
Et pour l'initialisation du tableau, tu as déjà entendu parler de la boucle for ?
grilled
Coïncidence ? Je ne pense pas.
Citer : Posté le 30/09/2014 18:56 | #
Ce code la marche
for(i = 0;i<51;i++)Layton[i] = 0;
if(!readFile("layton","sav",Layton))
{
//pas de sauvegarde
}
else
{
//il y a une sauvegarde
}
Ajouté le 30/09/2014 à 18:56 :
Arf, trop tard
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 30/09/2014 22:38 | #
Ce n'est pas < à 50 car un tableau commence à la case 0 ? Ok merci je teste quand j'aurai accès à mon ordi.
Mais je voulais mettre le Layton =0 dans le if readfile en fait. Merci encore !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 30/09/2014 22:49 | #
Ton tableau à 51 cases, en faisant "< 51" quand i sera égal à 51, le programme sortira de la boucle sans lire ce qu'il y a à l'intérieur de celle-ci.
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 30/09/2014 22:54 | #
Ok autant pour moi alors.
Ajouté le 01/10/2014 à 08:55 :
Merci, problème réglé !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers