Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1122 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Bataille navale, sauvegarde/restauration.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Bataille navale, sauvegarde/restauration.

n°1816019
boblenain2​00
Posté le 24-11-2008 à 18:02:27  profilanswer
 

:hello:

 

Je programme un jeu console de bataille navale.
Je sauvegarde les grilles et l'état de la flotte dans un fichier dont voici la structure.

### Grille du joueur ###              
 CCC ooXD o oo   o    o   V   o   o  oX  V XPPP  o    o  o  o   C o DDDo  XoX o D   C o  o  o o o  
### Grille du CPU ###                                                                              
o ooDD   oo    oo o V     P   o Do  X   X D o X  o    ooX ooCoV Cooo oX   C   o Co  X  oXoo Vo o  D
### Armada du joueur ###                                                                            
P34314                                                                                              
C26403                                                                                              
C30113                                                                                              
D26812
D10712
D27002
V14101
V03811
V12601
V07601

 

### Armada du CPU ###
P12604
C26403
C26003
D23202
D20412
D18802
V12001
V16201
V04011
V19211
### Numero du tour ###
41


Tout cela avec des fprintf ..etc..

 

Le probleme c'est que pour restaurer ces variables, j'ai besoin de me caler à des endroits précis, et je sais pas comment spécifier des lignes.
mon code de restauration pour l'instant :

Code :
  1. int i,j;
  2.       FILE* fichier = NULL;
  3.       fichier = fopen("sauv.bataille", "r" );
  4.       if (fichier != NULL)
  5.       {
  6.             //On ne fait que lire le fichier, donc mode r
  7.             fseek(fichier, 25, SEEK_SET); // /!\ On se décale de 24 caractère + 1 pour le saut de ligne pour sauter la ligne de présentation Grille joueur, ne pas modifier cette valeur.!
  8.             for(i=0; i <= 9; i++)
  9.             {
  10.    for (j=0;j <= 9; j++)
  11.    {
  12.          fscanf(fichier, "%c", &grille_joueur->macase[i][j].valeur);
  13.    }
  14.             }
  15.             //On passe a la restauration de la grille cpu
  16.             fseek(fichier, 24, SEEK_SET);
  17.             for(i=0; i <= 9; i++)
  18.             {
  19.    for (j=0;j <= 9; j++)
  20.    {
  21.          fscanf(fichier, "%c", &grille_cpu->macase[i][j].valeur);
  22.    }
  23.             }
  24.             fclose(fichier);
 

Deja le decalage ca oblige à compter les caractères c'est assez con, et en plus pour la deuxieme grille (grille_cpu), le decalage n'est pas bon, ca marche absolument pas.
Est-ce qu'il y a un moyen de spécifier les lignes , ca serait beaucoup plus simple.
Merci


Message édité par boblenain200 le 24-11-2008 à 18:04:37
mood
Publicité
Posté le 24-11-2008 à 18:02:27  profilanswer
 

n°1816034
sircam
I Like Trains
Posté le 24-11-2008 à 18:30:35  profilanswer
 

- fseek(fichier, 25, SEEK_SET) et fseek(fichier, 24, SEEK_SET), c'est assez abominable.
 
- Ident malformés
 
- "pour la deuxieme grille (grille_cpu), le decalage n'est pas bon, ca marche absolument pas." => Si tu as pu relire la 1ère grille, ça devrait aller pour la 2è. Vois si décalage foireux il y a, mais si tu te débarasses de ton "25" et de ton "24", ça ira déjà nettement mieux.
 
- "Est-ce qu'il y a un moyen de spécifier les lignes" => Beh oui, do it.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1816038
boblenain2​00
Posté le 24-11-2008 à 18:36:48  profilanswer
 

Les indentations, c'est du au forum, sur mon code ils sont très bien :)
les fseeks, je sais que c'est hideux, c'est pourquoi je veux m'en débarasser.
Mais comment est-ce qu'on spécifie les lignes ??

n°1816043
sircam
I Like Trains
Posté le 24-11-2008 à 18:42:30  profilanswer
 

boblenain200 a écrit :

Les indentations, c'est du au forum, sur mon code ils sont très bien :)


Heu non, le forum va très bien, c'est mal indenté. [:kiki]
 

Spoiler :

Mélanger tab et espaces, cai malle. [:kiki]


 

boblenain200 a écrit :

les fseeks, je sais que c'est hideux, c'est pourquoi je veux m'en débarasser.
Mais comment est-ce qu'on spécifie les lignes ??


1
2
3
4


Ou un préfixe spécial.
 
Ou bien, tu évites tout simplement l'approche "fichier lisible" et tu tapes les grilles à des endroits fixes connus (plus de lignes de commentaire, etc). Moins lisible comme format ceci dit.
 
Ou que sais-je encore!


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Bataille navale, sauvegarde/restauration.

 

Sujets relatifs
[C] Comment faire un getchar() sans pause après [débutant][questionalacon] scanf et chaîne de caractères
[C] Opérations avec des matrices[Résolu] Problème pour lire et écrire des fichiers pgm en C++
[ C ] Bonjour, aide pour traduire en C .Génération d'une fréquence précise via carte son en C
[C] Utilisation d'une DLL[C++][resolu]error: no matching function for call to...
[ C ] Erreur de segmentation (core dumped)Programmation Threads en C++
Plus de sujets relatifs à : [C] Bataille navale, sauvegarde/restauration.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR