Posté le 09/12/2013 13:45
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 108 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 25/01/2014 12:01 | #
Déjà pour un caractère, il faut mettre des 'a' et non "a" :
'a' = 0x61
"a" = pointeur sur un tableau {'a', '\0'}
Citer : Posté le 25/01/2014 12:03 | #
Mais en fait c'est tout con l'erreur, rajoute un & devant le buffer(curseur)
Faut lui envoyer l’adresse, pas le caractère
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 25/01/2014 12:03 | #
Quelques rappels sur les chaines de caractères => http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-c/les-chaines-de-caracteres
Je suis en train de me rafraichir la mémoire
Citer : Posté le 25/01/2014 12:04 | #
@dark : faut envoyer une chaine de caractère pour le deuxième argument
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 25/01/2014 12:09 | #
ben non :
buffer[curseur] contient la valeur ASCII du caractère voulu. ';' est la valeur ASCII du caractère ;
donc théoriquement buffer[curseur] == ';' est correct...
Citer : Posté le 25/01/2014 12:15 | #
J'ai l'impression qu'on parle pas de la même chose en fait....
Tu parles de quelle partie du code?
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 25/01/2014 12:21 | #
du if(buffer[curseur] == ';' || buffer[curseur] == '\n')
Citer : Posté le 25/01/2014 12:52 | #
Ah d'accord! Moi je parlais du if(strcmp(buffer[curseur],";")==0 || strcmp(buffer[curseur],"\n")==0)
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 25/01/2014 16:10 | #
je repris mon code pour percer le problème
{
int recuphandle=0;
char searchmark[4]={0,0,0,0};
char searchvirgule[1]={0};
int curseur=0;
char savebuffer[30];
int savepos=0;
int saveID=0;
int autreX=11;
int i=0;
FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','M','O','N','S','T','R','E','S','.','c','s','v',0};
recuphandle=Bfile_OpenFile(PathName,_OPENMODE_READ);
Bdisp_AllClr_DDVRAM();
memset(stockage,0,sizeof(stockage));
PopUpWin(5);
ML_rectangle(11,20,115,30,1,ML_BLACK,ML_TRANSPARENT);
Bdisp_PutDisp_DD();
while(saveID!=104){
//on lit cherche [ID]
do{
Bfile_ReadFile(recuphandle,searchmark,4,curseur);
Bfile_ReadFile(recuphandle,searchvirgule,1,curseur);
curseur++;
if(strcmp(searchvirgule,";")==0){savepos =curseur+3;}
}while(strcmp(searchmark,"[ID]") !=0);
Bfile_ReadFile(recuphandle,savebuffer,curseur-savepos-1,savepos);//on lit l'ID
saveID=char2int(savebuffer);
PrintV(10,10,saveID);
Bdisp_PutDisp_DD();
Sleep(2000);
memset(savebuffer,0,sizeof(savebuffer));
//on cherche [NO]
curseur +=4;
savepos =curseur;
do{
Bfile_ReadFile(recuphandle,searchmark,4,curseur);
curseur++;
}while(strcmp(searchmark,"[NO]") !=0);
Bfile_ReadFile(recuphandle,savebuffer,curseur-savepos-1,savepos);//on lit le nom
for(i=0;i!=29;i++){stockage[i+(saveID)*105]=savebuffer[i];}
memset(savebuffer,0,sizeof(savebuffer));
//on cherche [AT]
curseur +=4;
savepos =curseur;
do{
Bfile_ReadFile(recuphandle,searchmark,4,curseur);
curseur++;
}while(strcmp(searchmark,"[AT]") !=0);
Bfile_ReadFile(recuphandle,savebuffer,curseur-savepos-1,savepos);//on lit l'attaque
stockage[31+(saveID)*105]=char2int(savebuffer);
memset(savebuffer,0,sizeof(savebuffer));
//on cherche [DE]
curseur +=4;
savepos =curseur;
do{
Bfile_ReadFile(recuphandle,searchmark,4,curseur);
curseur++;
}while(strcmp(searchmark,"[DE]") !=0);
Bfile_ReadFile(recuphandle,savebuffer,curseur-savepos-1,savepos);//on lit la defense
stockage[32+(saveID)*105]=char2int(savebuffer);
memset(savebuffer,0,sizeof(savebuffer));
//on cherche [NI]
curseur +=4;
savepos =curseur;
do{
Bfile_ReadFile(recuphandle,searchmark,4,curseur);
curseur++;
}while(strcmp(searchmark,"[NI]") !=0);
Bfile_ReadFile(recuphandle,savebuffer,curseur-savepos-1,savepos);//on lit leniveau
stockage[33+(saveID)*105]=char2int(savebuffer);
autreX+=1;
ML_rectangle(11,20,autreX,30,1,ML_BLACK,ML_BLACK);
Bdisp_PutDisp_DD();
}
}
j'ai été une vrai andouille, j'ai juste oublié d'initialiser savebuffer avec memset(savebuffer,0,sizeof(savebuffer)); juste après //on cherche l'ID. :stupid:
Citer : Posté le 25/01/2014 16:59 | #
Ben voilà XD
Citer : Posté le 26/01/2014 09:34 | #
pour la barre de progression, j'ai besoin d'un float, mais pour afficher la barre il faut un int. comment on convertit un float en int? en castant,
int j=(int)i;
ça me donne 3 au lieu de 4, est ce qu'il existe un fonction qui permet d'arrondir à l'entier le plus proche?
Citer : Posté le 26/01/2014 09:48 | #
Dans la lib Maths il devrait y avoir ça non?
Citer : Posté le 26/01/2014 10:05 | #
tu peut faire comme ça :
int arrondi(float nombre)
int i;
i = (int)(nombre + 0.5);
if(i == (int)nombre) return i;
return i+1;
}
Citer : Posté le 26/01/2014 12:12 | #
perso, je fais ça: #define arrondi(var) (int)(var+0.5)
utiliser un if est inutile (et vu la complexité du calcul, on a pas besoins de faire une fonction, un define suffit)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 26/01/2014 12:22 | #
Pas faux.
Citer : Posté le 26/01/2014 17:23 | #
j'ai un tableau, que j'envoie dans une fonction qui le remplit, ensuite, je l'envoie dans une fonction qui lie le tableau. mais là le tableau est vide 0_0.
Citer : Posté le 26/01/2014 19:31 | #
Tu passe par des pointeurs ?
Citer : Posté le 26/01/2014 19:50 | #
Oui, souvent
Citer : Posté le 26/01/2014 20:57 | #
Bizarre, parce que justement avec les pointeurs c'est pas censé bugguer...
Tu peux faire voir le bout du code qui buggue ?
Citer : Posté le 31/01/2014 10:55 | #
@Dark Storm, j'ai repris ton code et corrigé quelques erreurs(le curseur n’avançait pas )
int recuphandle = 0;
int stockage[105][34];
char *buffer = NULL;
char buffer2[40];
int type = 0;
int curseur = 0;
int curseur2 = 0;
int tailleFichier;
int monstre = 0;
int mode=0;
FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','M','O','N','S','T','R','E','S','.','c','s','v',0};
recuphandle = Bfile_OpenFile(PathName,_OPENMODE_READ);
ML_clear_vram();
PopUpWin(5);
ML_rectangle(11,20,115,30,1,ML_BLACK,ML_TRANSPARENT);
ML_display_vram();
tailleFichier = Bfile_GetFileSize(recuphandle); // on récupère la taille du fichier
buffer = (void*)malloc(tailleFichier); // on copie le fichier dans le buffer
Bfile_ReadFile(recuphandle, buffer, tailleFichier, 0);
memset(stockage,0,sizeof(stockage));
while(curseur < tailleFichier)
{
curseur++;
if(buffer[curseur] == ';'||buffer[curseur]=='\n') // si on tombe sur un ; ou un retour à la ligne
{
memcpy(buffer2, &buffer[curseur2], (curseur - curseur2) * sizeof(char)); // on copie ce qu'il y a entre deux points virgules
switch(mode)
{
case 0 : // si on est sur l'ID
stockage[monstre][0] = char2int(buffer2); // on copie la valeur au bon endroit
break;
case 1 : // si on est sur le nom
memcpy(&(stockage[monstre][1]), buffer2, 40 * sizeof(char)); // on copie le nom dans le tableau
break;
case 3 : // si on est sur l'attaque
stockage[monstre][13] = char2int(buffer2); // on copie la valeur au bon endroit
break;
case 4 : // si on est sur la défense
stockage[monstre][14] = char2int(buffer2); // on copie la valeur au bon endroit
break;
case 5 : // si on est sur le niveau
stockage[monstre][15] = char2int(buffer2); // on copie la valeur au bon endroit
break;
}
memset(buffer2, 0, 40 * sizeof(char)); // on réinitialise le buffer2
curseur2 = curseur + 1; // et la position du dernier curseur
mode++;
if(mode > 5) mode = 0; // on change le type de donnée
}
if(buffer[curseur] == '\n') monstre++; // on change de monstre
ML_rectangle(11, 20, monstre + 11, 30, 1, ML_BLACK, ML_BLACK); // pour la barre de progression
ML_display_vram();
}
free(buffer); // on libère la mémoire
locate(1,1);
Print("succes");
ML_clear_vram();
PrintV(1,1,stockage[10][13]);
PrintV(1,10,stockage[11][13]);
PrintV(1,19,stockage[12][13]);
ML_display_vram();
Sleep(10000);
return 1;
}
maintenant, il marche bien, mis à part que la DEF est à la place de l'ATK et le niveau est à la place de la DEF, et donc il n'y a pas l'ATK dans le tableau stockage
Ajouté le 01/02/2014 à 17:13 :
j'ai réparé le problème après 5h d'intense réflexion devant CSS , Mais comment lire le nom? :huh: (je précise que le nom est un tableau de char qui est dans un int, le nom fait 40octet en char et 10octet en int)
Ajouté le 04/02/2014 à 19:54 :
Comment on fait pour faire un retour à la ligne quand on écrit dans un fichier?
Bfile_WriteFile(recuphandle,ecriture,sizeof(ecriture));
mais \n ne marche pas, ça écris "salut ça vaet toi?"
Citer : Posté le 04/02/2014 19:58 | #
Normalement cela fonctionne bien, je ne comprend pas le probleme
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 !