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

📄 main.c

📁 细胞自动机的一个源代码
💻 C
字号:
#include "main.h"wlWindow gwin;int quit=0;int debug;world_t worl;ca_t *g_ca;     //global cacas_t *g_cas;dfa_t *g_dfa;dfa_ca_t *g_dc;pat_t *g_pat;dl_t *g_dl;static void run_init_file(char *fn) {  int i, j, k;  char l[100];  FILE *fp;  char *c, *p;  if ( !(fp = fopen(fn, "r")) ) {    printf("couldn't open '%s', returning\n", fn);    return;  }  while (fgets(l, 100, fp)) {    p = strchr(l, '\n');    *p = '\0';        cas_addstr(g_cas, l);    cas_addch(g_cas, XK_Return);  }  fclose(fp);}void print_usage(void) {  printf("usage:\n");  printf("\t-f <input file>\n");  printf("\t[-h] help\n");}int main(int argc, char **argv) {  char *fn = NULL; /*"samp.input";*/  FILE *fin;  int i;  int c;  extern char *optarg;  void *handle1;  while ((c = getopt(argc, argv, "f:h")) != -1) {    switch(c) {    case 'f':      fn = strdup(optarg);      break;    case 'h':    default:      print_usage();      exit(1);    }  }  if (!(fn)) {    print_usage();    exit(1);  }  /* initial init of CA */  if (!(fin = fopen(fn, "r"))) {    printf("couldn't open %s, exiting\n", fn);    exit(0);  }  g_ca = (ca_t *)malloc(sizeof(ca_t));  ca_file_config(g_ca, fin);  fclose(fin);  //ca_print(g_ca);  /* inital init of dfa filter.  testing!!!  if (!(fin = fopen("conf/dfa/sampo.conf", "r"))) {    printf("couldn't open conf/dfa/sampo.conf\n");    exit(0);  }  */  g_dfa = (dfa_t *)malloc(sizeof(dfa_t));  memset(g_dfa, 0, sizeof(dfa_t));  /*  dfa_config(g_dfa, fin);  fclose(fin);  */  /*dfa_print(g_dfa);*/  /* and finally, the dfa ca structure init, still testing */  g_dc = (dfa_ca_t *)malloc(sizeof(dfa_ca_t));  memset(g_dc, 0, sizeof(dfa_ca_t));  /*  dfa_ca_init(g_dc, g_dfa, g_ca);  dfa_ca_print(g_dc);  */  wlinit(&gwin, argc, argv);  worldinit();  glinit(0, &worl, NULL);  disp_init(&worl, g_ca);  g_cas = (cas_t *)malloc(sizeof(cas_t));  cas_init(g_cas, 5, 40, NULL, 5, 5);  /* init of default display lists */  if (!(fin = fopen("conf/display/disp.conf", "r"))) {    printf("couldn't open conf/display/disp.conf\n");    exit(0);  }  g_dl = (dl_t *)malloc(sizeof(dl_t));  dl_readcfg(g_dl, fin);  fclose(fin);  /* pattern init */  g_pat = (pat_t *)malloc(sizeof(pat_t));  memset(g_pat, 0, sizeof(pat_t));  /* loadable display function  handle1 = dlopen("./loadable/display.so", RTLD_LAZY);  if (!handle1) {    printf("shit: %s\n", dlerror());  }  displayfunc = dlsym(handle1, "dyn_displayfunc");  idlefunc = dlsym(handle1, "dyn_idlefunc");  printf("INIT: %i %i %i\n", handle1, displayfunc, idlefunc);  if ((!handle1) || (!displayfunc) || (!idlefunc)) {    printf("bad load of display.so\n");    exit(1);  }  */  gwin.g_idle = idlefunc;  gwin.g_disp = displayfunc;  gwin.g_key = keyfunc;  gwin.g_butt = buttfunc;  gwin.g_motion = motionfunc;  gwin.g_confignotify = configfunc;  /*  for (i=0; i<128; i++) {    printf("%x: %i\n", i, g_ca->r[i]);  }  printf("nei_num: %i\n", g_ca->nei_num);  */  run_init_file(".caglrc");  while (!quit) {    wlmain(&gwin);  }  ca_free(g_ca);  dlclose(handle1);}

⌨️ 快捷键说明

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