#include <stdio.h>
#include <stdlib.h>
//#include <time.h>
#include "fs_bestiary.h"
#include "fs_board.h"
long seed; //random number generator seed value
long global_fen; //fish initial energy
long global_fdr; //fish death rate
long global_fbr; //fish birth rate
long global_sen; //shark initial energy
long global_sdr; //shark death rate
long global_sbr; //shark birth rate
fs_board *board;
int main(int argc, char *argv[]) {
long nfish, nsharks;
long xsize, ysize;
long nturns;
char *display;
char *default_init="fs.init";
char *outname;
char option;
FILE * initfile;
FILE *outfile;
outname=NULL;
//parse the command line arguments:
if (argc > 1) {
//check for a command line option:
option=argv[1][1];
if (strlen(argv[1])==2
&& (option>=38 && option<=47) || option == 63) {
if (option == 63) {
printf("fish_shark [option] [initfile] [outfile]\n");
printf(" option list:\n");
printf(" ? print this help summary\n");
printf(" 0 take parameters from command line\n");
printf(" 1 same, but prompt for each one\n");
printf(" 2 output only population, no board state\n");
printf(" 3 stream board state to std. out,\n");
printf(" unlimited turns\n");
exit(0);
if (option==38) {
initname=NULL;
if (argc > 1) outname=argv[2];
scanf("%d", xsize);
scanf("%d", ysize);
scanf("%d", nfish);
scanf("%d", nsharks);
scanf("%d", global_fen);
scanf("%d", global_fbr);
scanf("%d", global_fdr);
scanf("%d", global_sen);
scanf("%d", global_sbr);
scanf("%d", global_sdr);
scanf("%d", nturns);
} else if (option==39) {
initname=NULL;
if (argc > 2) outname=argv[1];
get_parms(xsize, ysize, nfish, nsharks, nturns);
} else if (option==41) {
if (argc > 2) initname=argv[1]; else initname=default_init;
} else {
if (argc > 2) initname=argv[1]; else initname=default_init;
if (argc > 3) outname=argv[2];
}
} else {
if (argc > 1) initname=argv[1]; else initname=default_init;
if (argc > 2) outname=argv[2];
}
}
if (initname!=NULL) {
if (!initfile=fopen(initname, "r")) {
if (!initfile=fopen(default_init, "r")) {
printf("Initialization file not found\n");
get_parms(xsize, ysize, nfish, nsharks, nturns);
}
}
if (initfile!=NULL) {
//read from the initialization file:
fscanf(initfile, "%d", xsize);
fscanf(initfile, "%d", ysize);
fscanf(initfile, "%d", nfish);
fscanf(initfile, "%d", nsharks);
fscanf(initfile, "%d", global_fen);
fscanf(initfile, "%d", global_fbr);
fscanf(initfile, "%d", global_fdr);
fscanf(initfile, "%d", global_sen);
fscanf(initfile, "%d", global_sbr);
fscanf(initfile, "%d", global_sdr);
fscanf(initfile, "%d", nturns);
fclose(initfile);
}
}
board=new fs_board(xsize, ysize);
board->populate(nfish, nsharks);
if (option==40) {
if (outname!=NULL) {
if (!outfile=fopen(outname, "w")) {
printf("Output file %s not found\n", outname);
outfile=stdin;
}
}
for (long i=0;i<nturns;i++) {
board->turn();
board->n_animals(nfish, nsharks);
fprintf(outfile, "Turn nfish nshark\n");
fprintf(outfile, "%d %d %d\n", i, nfish, nsharks);
// board->check();
}
} else if (option==41) {
do {
board->turn();
display=board->board_state(nfish, nsharks);
printf("%s", display);
delete display;
scanf("%s" );
}
} else {
if (outname!=NULL) {
if (!outfile=fopen(outname, "w")) {
printf("Output file %s not found\n", outname);
printf("Turn nfish nshark\n");
for (long i=0;i<nturns;i++) {
board->turn();
board->n_animals(nfish, nsharks);
printf("%d %d %d\n", i, nfish, nsharks);
// board->check();
}
} else {
printf("Turn nfish nshark\n");
for (long i=0;i<nturns;i++) {
board->turn();
display=board->board_state(nfish, nsharks);
printf("%d %d %d\n", i, nfish, nsharks);
fprintf(outfile, "%s", display);
// board->check();
delete display;
}
fclose(outfile);
}
} else {
for (long i=0;i<nturns;i++) {
board->turn();
board->n_animals(nfish, nsharks);
printf("%d %d %d\n", i, nfish, nsharks);
// board->check();a
}
}
}
delete board;
}