⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tstdio.c

📁 地球模拟器
💻 C
字号:
/* ======================================================================*//* tstdio.c  9-9-92  support for stdio frontend for   Tierra Simulator V4.0: Copyright (c) 1992 Dan Pirone & Virtual Life   written by Daniel pirone   v 1.1*//* ======================================================================*/#if FRONTEND == STDIO  /* STDIO == 0 *//* ======================================================================*//* ======================================================================*/void FEExit(ENO) I32s ENO;{exit(ENO);}/* ======================================================================*/void FEClrmsg(n)I32s n;{}/* ======================================================================*/void FECeol(){}/* ======================================================================*/I16s FEGetc(){#ifdef __TURBOC__return getch();#else return getchar();#endif /* __TURBOC__ */}/* ======================================================================*/void FEStartup(){/* called immediately after the soup_in file is read *//* an opportunity to interactively set soup_in vars */fe_width = 60;MSG_X = 1;MSG_Y = 1;ERR_X = 1;ERR_Y = 1;PLN_X = 1;PLN_Y = 1;#ifdef __TURBOC__clrscr();#elsesystem("clear"); #endif/* Title screen */printf("\n\n\t\t\t\t      TIERRA\n");printf("\n\n\t\t\t\t     July  92\n");printf("\n\t\t\t     Artificial Life System\n\t\t\t\t\tBy\n");printf("\t\t\t\tDr. Thomas S. Ray\n\t\t\t\t\t&\n");printf("\t\t    Daniel Pirone, Tom Uffner & Marc Cygnus\n\n");/* sleep(5); */}/* ======================================================================*/#ifdef __TURBOC__void FEPrintf(I32s scr_x, I32s scr_y, I32s scr_a, ... )#else /* else of __TURBOC__ */#ifdef __GNUC__void FEPrintf(I32s scr_x, I32s scr_y, I32s scr_a, ... )#elsevoid FEPrintf(scr_x, scr_y, scr_a, va_alist )I32s scr_x, scr_y, scr_a;va_dcl#endif /* __GNUC__ */#endif /* else of __TURBOC__ */{    va_list ap;    I8s *msg_str;#ifdef __TURBOC__    va_start(ap,scr_a);#else /* __TURBOC__ */#ifdef __GNUC__    va_start(ap,scr_a);#else    va_start(ap);#endif /* else of __GNUC__ */#endif /* __TURBOC__ */    if ((msg_str = va_arg(ap, I8s *)) != NULL)       {       vfprintf(stdout,msg_str,ap);       }    va_end(ap);    fflush(stdout);}/* ======================================================================*/#ifdef __TURBOC__int T_sig_int(void)#endif#ifdef unix /* unix with stdio ... */void T_sig_int(sig,code,scp,addr)    I32s  sig,code;    /* struct sigcontext *scp; */    I32s *scp; /* DO NOT USE !!!!! */    I8s  *addr;#endif 	/* unix with stdio ... */{TC_Menu = 1;}/* ======================================================================*/void FEMenu(){   I8s  answer;   I32s tsz;   I8s  data[85];#ifdef ALCOMM   AL_run_flag = 1;#endif   FEError(-1400,NOEXIT,NOWRITE,           "\n==========================================================");   FEError(-1401,NOEXIT,NOWRITE,   "TIERRA: Main Menu");FEPrintf(0,1,1,"VER=%1.2f INST=%d PLOIDY=%d  %s %s %s %s\n",                   VER,INST,PLOIDY,#ifdef ERROR"ERROR",#else"",#endif#ifdef MEM_PROF"MEM_PROF",#else"",#endif#ifdef MICRO"MICRO",#else"",#endif#ifdef ALCOMM"ALCOMM"#else""#endif          );   FEError(-1402,NOEXIT,NOWRITE,           "---------------------------------------------------------");   FEError(-1403,NOEXIT,NOWRITE,"InstExe.m    = %6ld  InstExec.i = %6ld  NumCells = %4ld ",	   InstExe.m,InstExe.i,NumCells);  if(GeneBnker)     {     FEError(-1404,NOEXIT,NOWRITE,"NumGenotypes =   %4ld  NumSizes   =   %4ld", NumGenotypes, NumSizes);     }#ifdef __TURBOC__     FEError(-1405,NOEXIT,NOWRITE,"CoreLeft     =  %ld",(I32s) coreleft());#endif#ifdef ALCOMM     FEError(-1406,NOEXIT,NOWRITE,"VPORT        =    %hd", VPORT);#endif   FEError(-1407,NOEXIT,NOWRITE,           "---------------------------------------------------------");   FEError(-1408,NOEXIT,NOWRITE,	"\tKey\tFunction\n");   FEError(-1409,NOEXIT,NOWRITE,	"\ti\tInformation on simulation");   FEError(-1410,NOEXIT,NOWRITE,	"\tv\tChange a soup_in variable");   FEError(-1410,NOEXIT,NOWRITE,	"\tm\tMisc. commands");   FEError(-1411,NOEXIT,NOWRITE,	"\tS\tExecute a system Shell");   FEError(-1412,NOEXIT,NOWRITE,	"\ts\tSave the soup");   FEError(-1413,NOEXIT,NOWRITE,	"\tq\tSave the soup & quit");   FEError(-1414,NOEXIT,NOWRITE,	"\tQ\tQuit/Abort simulation");   FEError(-1415,NOEXIT,NOWRITE,	"\tc\tTo Continue simulation");   FEError(-1416,NOEXIT,NOWRITE,           "---------------------------------------------------------");   while(1)      {      FEError(-1417,NOEXIT,NOWRITE,"TIERRA | i-info v-var m-misc s-save S-shell q-save&quit Q-quit c-cont |-> ");      fgets(data,84,stdin);      sscanf(data,"%c", &answer);       if (answer == 'c') break;       switch (answer)	 {      case 'v':      {      FEError(-1418,NOEXIT,NOWRITE,           "---------------------------------------------------------");      FEError(-1419,NOEXIT,NOWRITE,         "To alter any global variable from soup_in, type");      FEError(-1420,NOEXIT,NOWRITE,         "the variable name (using proper case), a space,");      FEError(-1421,NOEXIT,NOWRITE,         "an equal sign, a space, and the new value.");      FEError(-1422,NOEXIT,NOWRITE,         "Use no space at start of line.  Some examples:");      FEError(-1423,NOEXIT,NOWRITE,         "alive = 0");      FEError(-1424,NOEXIT,NOWRITE,         "DistProp = .6");      FEError(-1425,NOEXIT,NOWRITE,         "GenebankPath = newpath/");      FEError(-1426,NOEXIT,NOWRITE,              "---------------------------------------------------------");            fgets(data,84,stdin);         if (!GetAVar(data))            {   	    FEError(-1427,NOEXIT,NOWRITE,		   "Not a valid soup_in variable: %s", data);            }         ToggleLog(0L);      break;      }         case 'i' :         {         FEError(-1428,NOEXIT,NOWRITE,              "---------------------------------------------------------");         FEError(-1429,NOEXIT,NOWRITE,              "\ts\tSpectrum of all Size Classes");         FEError(-1430,NOEXIT,NOWRITE,              "\tm\tSpectrum of Size Classes, by memory use");         FEError(-1431,NOEXIT,NOWRITE,              "\tg\tSpectrum of Size Classes, by geneotype");         FEError(-1432,NOEXIT,NOWRITE,              "\tz\tBreak down of a specific Size Class");         FEError(-1433,NOEXIT,NOWRITE,	      "\t\tAny other key to main menu ...");         FEError(-1434,NOEXIT,NOWRITE,              "---------------------------------------------------------");         fgets(data,84,stdin);         sscanf(data,"%c", &answer);          switch(answer) 	   {         case 'z':            {            FEError(-1435,NOEXIT,NOWRITE,            "Enter a size class ( eg: 80 ) to examine ");            fgets(data,84,stdin);            sscanf(data,"%d", &tsz);	    if (Hist != NULL)            {  thfree(Hist);               Hist = NULL;            }            query_size((I16u)tsz); 	    break;            }         case 'g':            {  	    IMode = GEN_HIST;            query_species(20);            if (Hist)	    {  thfree(Hist);	       Hist = NULL;            }	    break;            }         case 'm':            {  	    IMode = SIZM_HIST;            query_species(20);            if (Hist)	    {  thfree(Hist);	       Hist = NULL;            }	    break;            }         case 's':            {  	    IMode = SIZ_HIST;            query_species(20);            if (Hist)	    {  thfree(Hist);	       Hist = NULL;            }	    break;            }           }         answer = ' ';break;         }	/* end  i info case */      case 'm':         {           FEError(-1434,NOEXIT,NOWRITE,              "---------------------------------------------------------");          FEPrintf(HLP_X,HLP_Y,1,"MISC |  H-Histo Logging  I-Inject Gene %s  %s  |->\n",#ifdef MICRO          "M-Micro Toggle",#else          "",#endif#ifdef ALCOMM          "P-ALmonD Pause"#else          ""#endif         );         fgets(data,84,stdin);         sscanf(data,"%c", &answer);         if (answer == 'H')            {            HistPrint = (Log && !HistPrint)? 1 : 0;            sprintf(mes[0],             "%s \n",(Log)? (HistPrint)? "Logging Histograms \n":                                         "NOT Logging Histograms \n" :                           "Log NOT on ! \n");            FEMessage(1,mes);            }#ifdef MICRO         if (answer == 'M')             {             if(MC_step == -1L) MC_step = 0L;             else if(MC_step == 0L) MC_step = 1L;             else {MC_step =-1L; if(tfp_log != NULL) Log = 1L;}             sprintf(mes[0]," MICRO STEP Mode = %s\n",             (MC_step == -1)?"off": (MC_step == 1)?"keypress":"delay");             FEMessage(1,mes);             }#endif /* MICRO */#ifdef ALCOMM         if (answer == 'P')             {             AL_run_flag = (AL_run_flag)?0:1;             sprintf(mes[0]," ALmond Pause = %s\n",                     (AL_run_flag)?"off": "on");             FEMessage(1,mes);             }#endif /* ALCOMM */         if (answer == 'I')             {             sprintf(mes[0],"INJECT GENE TO RUNNING SIMULATION\n");             sprintf(mes[1],"Enter gene name ( eg 0080aaa) or \n");             sprintf(mes[2],"Enter ESC to cancel\n");             FEMessage(3,mes);             fgets(data,84,stdin);             if (data[0] != 0x1b) InjectFromBank(data, -1, 0);             sprintf(mes[0]," Attempted Injection of %30s done\n", data);             FEMessage(1,mes);             }          answer = ' ';	  break;         }     /* end of misc */      case 's':         {           FEError(-1436,NOEXIT,WRITE," ");         }      case 'q':         {           FEError(-1437,EXIT,WRITE," ");         }      case 'S':         {         FEError(-1438,NOEXIT,NOWRITE,         "TIERRA: shell (%s), type exit to return ... ",SHELL);         system(SHELL);         }      case 'Q': exit(-666);         } 	/* end switch */      } 	/* end while loop */   FEError(-1439,NOEXIT,NOWRITE,"\nTIERRA: Continuing from interupt...");   FEError(-1440,NOEXIT,NOWRITE,           "==========================================================");TC_Menu = 0;#ifdef __TURBOC__   return(1);#endif}/*-----------------------------------------------------------------------*//* ======================================================================*/#endif 	/* stdio ... *//* ======================================================================*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -