static int processturn(const char *orders) { turn++; readorders(orders); processorders(); reports(); writesummary(); writegame(); return 0; }
void main() { cout.precision(2); //设置精度 cout.setf(ios::fixed|ios::left); while(1) { switch(showMainmenu()) { case 1 :cash(); break; case 2 :stackmgr(); break; case 3 :reports(); break; case 4 :showmsg(); exit(0); break; } } }
//---------------------------------------------------------------------------- // //------------ static hca_clss* hca_calc(MMsMatrix* dst, double(*compare)(hca_clss*,hca_clss*,MMsMatrix*)){ hca_clss** clsss=hca_stackinit(dst->nl,0); int itr,i,j,n=dst->nl,k1=0,k2=0,idx=0,lid=dst->nl; hca_clss *cl1=NULL,*cl2,*bcl1,*bcl2; double d,dmin=LONG_MAX; for(itr=1;itr<=dst->nl-1;itr++){ dmin=LONG_MAX; for(i=0;i<n-1;i++){ cl1=clsss[i]; for(j=i+1;j<n;j++){ cl2=clsss[j]; d=compare(cl1,cl2,dst); if(d<dmin){ dmin=d; bcl1=cl1; bcl2=cl2; k1=i; k2=j; } } } if(k1<k2){ clsss=hca_stackrmv(clsss,k1,n); clsss=hca_stackrmv(clsss,k2-1,n-1); } else{ clsss=hca_stackrmv(clsss,k2,n); clsss=hca_stackrmv(clsss,k1-1,n-1); } n-=2; lid++; cl1=hca_classnew(0,lid); if(bcl1->height<bcl2->height){ cl1->left=bcl1; cl1->right=bcl2; } else{ cl1->left=bcl2; cl1->right=bcl1; } cl1->height=dmin; bcl1->sup=cl1; if(bcl1->ref!=0){ idx++; bcl1->cidx=idx; bcl1->midwidth=idx; } bcl2->sup=cl1; if(bcl2->ref!=0){ idx++; bcl2->cidx=idx; bcl2->midwidth=idx; } cl1->midwidth=(bcl1->midwidth+bcl2->midwidth)/2.0; reports(cl1,cl1->left); reports(cl1,cl1->right); clsss=hca_stackadd(clsss,cl1,n); n++; } hca_treepermute(cl1); return(cl1); }
int main(int argc, char **argv) { int i; char buf[12]; const char *arg, *orders = 0, *cfgfile = 0; rnd_seed((unsigned int) time(0)); puts("Atlantis v1.0 " __DATE__ "\n" "Copyright 1993 by Russell Wallace.\n" "Type ? for list of commands."); turn = -1; for (i = 1; i != argc; ++i) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'c': cfgfile = (argv[i][2]) ? (argv[i] + 2) : argv[++i]; break; case 'i': ignore_password = 1; break; case 'p': /* process */ orders = (argv[i][2]) ? (argv[i] + 2) : argv[++i]; break; case 't': /* turn */ arg = (argv[i][2]) ? (argv[i] + 2) : argv[++i]; turn = atoi(arg); break; default: fprintf(stderr, "invalid argument %d: '%s'\n", i, argv[i]); return -1; } } } if (cfgfile) { FILE * F = fopen(cfgfile, "r"); if (F) { cJSON *json; char *data; size_t len; fseek(F, 0,SEEK_END); len = ftell(F); fseek(F,0,SEEK_SET); data = (char *)malloc(len+1); if (data) { fread(data,1,len,F); } json = cJSON_Parse(data); if (json) { read_config_json(json); cJSON_Delete(json); } else { fprintf(stderr, "could not parse configuration file '%s'\n", cfgfile); } free(data); } else { fprintf(stderr, "could not open configuration file '%s'\n", cfgfile); return errno ? errno : -1; } } initgame(); if (orders) { return processturn(orders); } for (;;) { printf("> "); fgets(buf, sizeof(buf), stdin); switch (tolower(buf[0])) { case 'm': writemap(stdout); break; case 'g': turn = 0; cleargame(false); autoworld("players"); writemap(stdout); break; case 'r': reports(); break; case 'f': fixme(); break; case 'w': writesummary(); writegame(); break; case 'p': printf("Name of orders file? "); fgets(buf, sizeof(buf), stdin); if (!buf[0]) return -1; return processturn(buf); case 'q': return 0; default: puts("C - Create New Continent.\n" "A - Add New Players.\n" "M - Draw Map.\n" "P - Process Game Turn.\n" "R - Write Reports.\n" "G - Generate New World.\n" "Q - Quit.\n" "W - Write Game.\n"); } } }