Exemplo n.º 1
0
static int processturn(const char *orders)
{
    turn++;
    readorders(orders);
    processorders();
    reports();
    writesummary();
    writegame();
    return 0;
}
Exemplo n.º 2
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);
} 
Exemplo n.º 4
0
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");
        }
    }
}