Use an absolute directory under /usr/share/games/ for game data
[kraptor.git] / extras / ai / parse_ia.c
blob2d89e7cda0773ac1cf0f9d3da556a3d524dd94a7
1 /*----------------------
2 Aqui va el compilador de IA de Kraptor
3 Ver ia.txt para mas info.
5 Uso:
6 parse_ia [entrada.txt] [salida.ia]
8 Sintaxis de entrada.txt:
9 [x1],[x2],[y1],[y2],[weapon],[loop]
11 Por Kronoman
12 En memoria de mi querido padre.
13 Copyright (c) 2003, Kronoman
14 ---------------------*/
16 #include <stdio.h>
17 #include <string.h>
19 // Esta funcion hace la joda de parsear y compilar
20 // in, out son archivo de entrada y salida
21 void do_parsing(char *in, char *out)
23 FILE *fin, *fout;
24 int nlinea =0; // numero de linea, para debugging del programador
25 char linea[300]; // buffer de texto
26 char *ret; // para strtok
27 int params[6]; // contenedor de parametros, temporal
28 int idx; // indice para params[]
30 fin = fopen(in, "r");
31 if (fin == NULL)
33 printf("ERROR:\nNo se pudo abrir %s\n\n", in);
34 return;
37 fout = fopen(out, "w");
38 if (fout == NULL)
40 printf("ERROR:\nNo se pudo abrir %s\n\n", out);
41 return;
44 while (fgets(linea, 256, fin) != NULL) // tomar linea
46 nlinea++;
47 printf("[%04d] '%s'\n\n", nlinea, linea);
49 // Realizar el parsing adecuado, es decir, separar la linea en sus parametros
51 ret = strtok(linea,",");
53 idx = 0;
54 while (ret != NULL)
56 params[idx] = atoi(ret); // convertir a entero
57 printf("-> %s = %d \n", ret, params[idx]);
59 ret = strtok(NULL, ",");
60 idx ++;
61 if (idx > 6)
63 printf("ERROR!\nDemasiados parametros!\n");
64 return;
67 if (idx < 6)
69 printf("ERROR!\nInsuficientes parametros!\n");
70 return;
73 // escribir, los parametros del bytecode (x1,x2,y1,y2,weapon,loop)
74 for (idx=0; idx<6;idx++)
76 // escribo los enteros como strings, por PORTABILIDAD!
77 sprintf(linea,"%d", params[idx]);!
78 fputs(linea, fout); // como esto convierte en UTF-8, no la uso
80 putc(',', fout); // separador logico
82 };
84 // listo
85 fclose(fout);
86 fclose(fin);
95 int main(int argc, char *argv[] )
99 if (argc < 2)
101 printf("ERROR:\nNo especifico [entrada.txt] y [salida.ia]\n\n");
102 return -1;
105 printf( "%s -> %s \n", argv[1], argv[2] );
106 do_parsing(argv[1], argv[2]);
109 return 0;