cs_nemson
Messages postés2Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 mai 2010
-
3 mai 2010 à 13:30
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
3 mai 2010 à 14:30
bonjour a tous,
j'ai fais mon projet sur la simulation des fourmis mais au dernier moment mon encadrant me dit d'utiliser la bibliothèque SDl pourtant j'utilisais ALLEGRO.
mon problème est de convertir mon fichier d'initialisation que j'écrivais en utilisant ALLEGRO en celle qui pourrait correspondre en SDl juste pour me faire gagner en temps.voici mon code source
ceci correspond au fichier ini.h
#define INI_H
//les mode de bordure du terrain
#define BOUNDARY 0
#define SPHERICAL 1
#define KILL_ANT 2
// variabes qui seront initialisés à partir de "INI file" :
extern int Ants;
extern int L_W, L_H, Land_Mode, Sniff_Radius, Sniff_Angle;
extern float Evaporate_Rate,
Max_Pher,
Diffuse_Rate,
Food_Strength,
Nest_Strength,
Food_Strength_Decay,
Nest_Strength_Decay;
// lit et analyse le fichier:
int readini (char *filename);
#endif
***************************************************************************
ceci correspond à mon fichier ini.c
typedef struct filestat filestat;
struct filestat
{
FILE *fp; /* pointeur sur un fichier*/
int line, /* nombre de ligne */
c; /* dernier caractère lu*/
};
/*============================================================================
ini_err : appelée quand une erreur suvient dans le fichier INI.
--------------------------------------------------------------------------*/
void ini_err (filestat *f, /* structure du fichier */
int errno, /* nombre d'erreur */
char *msg)
{
/* ferme le fichier d'entrée*/
if (f->fp)
fclose (f->fp);
fprintf (stderr, "Error processing INI file.\n");
switch (errno)
{
case NOFILE : fprintf (stderr, "File not found"); break;
case MISSING : fprintf (stderr, "Missing setting"); break;
case CMD_ERR : fprintf (stderr, "Unknown command"); break;
case VALUE_ERR : fprintf (stderr, "Value expected"); break;
case BAD_VALUE : fprintf (stderr, "Bad value"); break;
case RANGE_ERR : fprintf (stderr, "Range error"); break;
} /* (switch) */
if (msg)
fprintf (stderr, " (%s)", msg);
if (errno >= CMD_ERR)
/* liée à l'erreur du fichier */
fprintf (stderr, " : line %d", ++f->line);
fprintf (stderr, ".\n");
exit (1);
}
/*============================================================================
compare : compare deux chaînes de caractères,s1 et s2.s2 est la plus petite chaîne. la comparaison ignore le cas de s1.
-------------------------------------------------------------------------*/
int compare (char *s1, char *s2)
{
while (*s1 && *s2) {
if (lower (*s1) != *s2)
return (0);
s1++;
s2++;
}
return (*s1 == *s2);
}
/*============================================================================
skip_null : fait un saut vide d'une ligne dans le fichier d'entrée.
--------------------------------------------------------------------------*/
void skip_null (filestat *f)
{
f->c = getc (f->fp);
while (f->c == '\n') {
f->line++;
f->c = getc (f->fp);
}
ungetc (f->c, f->fp);
}
/*============================================================================
ignore_line : ignore une ligne.
--------------------------------------------------------------------------*/
void ignore_line (filestat *f)
{
do
f->c = getc (f->fp);
while ((f->c != EOF) && (f->c != '\n'));
f->line++;
}
/*============================================================================
readstring : lit une chaîne de caractère dans le fichier d'entrée.
--------------------------------------------------------------------------*/
void readstring (filestat *f, char **s)
{
char temp[81];
fscanf (f->fp, "%80s", temp);
if (*s)
free (*s);
*s = strdup (temp);
}
/*============================================================================
readint : lit un entier dans le fichier d'entrée.
--------------------------------------------------------------------------*/
void readint (filestat *f, int *i)
{
fscanf (f->fp, "%d", i);
}
/*============================================================================
readfloat : lit un nombre en virgule flottant dans le fichier d'entrée.
--------------------------------------------------------------------------*/
void readfloat (filestat *f, float *v)
{
fscanf (f->fp, "%f", v);
}
/*============================================================================
range_check : permet de verifier que 'val' est entre 'min' et 'max'. sinon un message d'erreur est emit
/*============================================================================
parse_line : Parses a line of the input file.
--------------------------------------------------------------------------*/
int parse_line (filestat *f)
{
int t;
char temp[21]; // variable temporaire pour la commande.
// lire une commande :
fscanf (f->fp, "%20s", temp);
// regarde la première lettre :
switch (lower(temp[0])) {
case 'a':
if (compare (temp, "ants")) {
readint (f, &Ants);
range_check (f, (float)Ants, 1.0, 500.0, temp);
}
else
ini_err (f, CMD_ERR, temp);
break;
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 3 mai 2010 à 14:30
Bonjour,
Ton code ressemble furieusement à du C/C++ mais certainement à du VB et en plus tu postes dans la catégorie des bugs de CS, ce qui n'est pas assurément le cas.
Si tu veux avoir une réponse postes plutôt dans la bonne catégorie (celle du langage utilisé que tu connais mieux que moi.