/* mkgame.c created in 2007.01.16 by DEGUCHI Hiroshi */ #include #define BUFSIZE 255 /* バッファサイズ */ #define NUM 30 /* 最大人数 */ /* メンバーファイル */ char memfile[BUFSIZE] = "members.txt"; FILE *mfp = NULL; /* 対戦定義ファイル */ char deffile[BUFSIZE] = "hexgame.c"; FILE *dfp = NULL; /* コンパイルファイル */ char comfile[BUFSIZE] = "com"; /* .bat */ FILE *cfp = NULL; /* ゲームファイル */ char gamefile[BUFSIZE] = "game"; /* .bat */ FILE *gfp = NULL; int num; /* 人数 */ char names[NUM][BUFSIZE]; /* 名簿 */ int winf; /* Windowsフラグ */ int getnum( char *name ) { int i; for( i = 0; i < num; i++ ) { if( strcmp( names[i], name ) == 0 ) return( i ); } printf("%sは名簿(%s)にありません。\n", name, memfile ); exit(1); } int main( int argc, char *argv[] ) { int i, j, k; char mem1[BUFSIZE], mem2[BUFSIZE]; char line[BUFSIZE]; if( argc > 1 ) winf = 0; else { winf = 1; strcat( comfile, ".bat" ); strcat( gamefile, ".bat" ); } if( (mfp = fopen(memfile,"r") ) == NULL ) { printf("メンバーファイル(%s)が開けませんでした。\n", memfile ); exit(1); } for( i = 0; i < NUM; i++ ) { if( fscanf( mfp, "%s", names[i] ) < 1 ) break; } num = i; fclose( mfp ); if( (cfp = fopen(comfile,"w") ) == NULL ) { printf("コンパイルファイル(%s)が作れませんでした。\n", comfile ); exit(1); } for( i = 0; i < num-1; i++ ) for( j = i+1; j < num; j++ ) { sprintf( deffile, "h_%d_%d.c", i, j ); if( (dfp = fopen( deffile, "w") ) == NULL ) { printf("対戦定義ファイル(%s)が作れませんでした。\n", deffile ); exit(1); } fprintf( dfp, "#include \"hex.h\"\n"); fprintf( dfp, "extern int %s();\n", names[i]); fprintf( dfp, "extern int %s();\n", names[j]); fprintf( dfp, "int (*hexgame[2])() = { %s, %s };\n", names[i], names[j]); fclose( dfp ); if( winf ) fprintf( cfp, "cl h_%d_%d.c hex.obj %s.obj %s.obj\n", i, j, names[i], names[j]); else fprintf( cfp, "cc -o h_%d_%d h_%d_%d.c hex.o %s.o %s.o\n", i, j, i, j, names[i], names[j]); } fclose( cfp ); if( (gfp = fopen(gamefile,"w") ) == NULL ) { printf("ゲームファイル(%s)が開けませんでした。\n", gamefile ); exit(1); } for( i = 0; i < num-1; i++ ) for( j = i+1; j < num; j++ ) { for( k = 7; k <= 26; k++ ) { fprintf( gfp, "h_%d_%d %d 0 3\n", i, j, k ); fprintf( gfp, "h_%d_%d %d 1 3\n", i, j, k ); } } fclose( gfp ); } /* end of mkgame.c */