static void WriteBox( unsigned int msgnum ) /*****************************************/ { char box_buff[RESOURCE_MAX_SIZE]; char msg_buff[RESOURCE_MAX_SIZE]; int i; Msg_Get( msgnum, msg_buff ); WriteMapNL( 2 ); box_buff[0] = '+'; for( i = 2; i < strlen( msg_buff ); i++ ) { box_buff[i-1] = '-'; } box_buff[i-1] = '+'; box_buff[i] = '\0'; WriteMap( "%t24%s", "", box_buff ); WriteMap( "%t24%s", "", msg_buff ); WriteMap( "%t24%s", "", box_buff ); WriteMapNL( 1 ); }
int main(int argc, char *argv[]) { int mergeMarker = 7; if(argc == 5) { mergeMarker = atoi(argv[4]); argc--; } if(argc != 4 || !mergeMarker) { printf("Improper invocation.\n"); Usage(); return 1; } Map *ancestor, *current, *merge, *output; printf("Reading ancestor map...\n"); ancestor = ReadMap(argv[1]); if(!ancestor) return 1; printf("Reading current map...\n"); current = ReadMap(argv[2]); if(!current) return 1; printf("Reading merging map...\n"); merge = ReadMap(argv[3]); if(!merge) return 1; printf("Merging maps...\n"); output = MergeMaps(ancestor, current, merge); if(!output) { printf("Error during merge; aborting.\n"); return 1; } printf("Writing merged map...\n"); if(WriteMap(output, argv[2])) return 0; else return 1; }
main() { LoadMap() ; ProcessMap() ; WriteMap() ; }
int main(void) { int row, col; int selection; int ndead; int nsecPerDay = 86400; int a[nsecPerDay]; Grid map; Grid newmap; Initialize(map); system("/usr/bin/clear"); printf("press: \n" "(1) for glider gun\n" "(2) for harvester\n" "(3) for cheshire cat\n" "(4) for acorn\n" " => "); scanf("%d", &selection); switch( selection ) { case 1: initGliderGun(map); case 2: initHarvester(map); case 3: initCheshireCat(map); case 4: initAcorn(map); break; } WriteMap(map); int generations = 0; while (generations < nsecPerDay) { // number of seconds in 24 hours. this won't hold your interest that long. WriteMap(map); for (row = 1; row <= MAXROW; row++) for (col = 1; col <= MAXCOL; col++) switch(NeighborCount(map, row, col)) { case 0: case 1: newmap[row][col] = DEAD; ndead = CheckForSurvivors(map); if (ndead == (MAXROW * MAXCOL)) { printf("all cells dead. exiting.\n"); exit(1); } break; case 2: newmap[row][col] = map[row][col]; ndead = CheckForSurvivors(map); if (ndead == (MAXROW * MAXCOL)) { printf("all cells dead. exiting.\n"); exit(1); } break; case 3: newmap[row][col] = ALIVE; ndead = CheckForSurvivors(map); if (ndead == (MAXROW * MAXCOL)) { printf("all cells dead. exiting.\n"); exit(1); } break; case 4: case 5: case 6: case 7: case 8: newmap[row][col] = DEAD; ndead = CheckForSurvivors(map); if (ndead == (MAXROW * MAXCOL)) { printf("all cells dead. exiting.\n"); exit(1); } break; } WriteMap(map); a[generations] = CheckForSurvivors(map); if (a[generations] == a[generations-4]) { if (selection == 1 || selection == 5) { ; } else { printf("grid is stable. exiting.\n"); exit(1); } } CopyMap(map, newmap); sleep(1); generations++; } }
int main(int argc, char** argv) { if (argc<4) { fprintf(stderr,"%s node_in_file edge_in_file map_out_path",argv[0]); exit(-1); } const char* node_in_fname = argv[1]; const char* edge_in_fname = argv[2]; const char* map_out_path = argv[3]; MFRNodeArray nodes(node_in_fname); MFREdgeArray edges(edge_in_fname, nodes); fprintf(stderr,"Sort edges\n");fflush(stderr); qsort(edges.edges, edges.nredges, sizeof(MFREdgeInt), strength_compare); fprintf(stderr,"Max edge strength: %d\n",edges.edges[0].strength); if (edges.edges[0].strength < edges.edges[edges.nredges-1].strength) { fprintf(stderr, "@@@@@@@@@@@@@@@@@@@@\nWrong sorting\n@@@@@@@@@@@@@@@@@@@@@@\n"); exit(-1); } fprintf(stderr,"Finished sorting edges\n");fflush(stderr); fprintf(stderr,"Count edges and store with nodes\n");fflush(stderr); { int i; for (i=0;i<edges.nredges;i++) { edges.edges[i].nodeA->totalnredges ++; edges.edges[i].nodeB->totalnredges ++; } } //ier@ fprintf(stderr,"Finished counting edges\n");fflush(stderr); fprintf(stderr,"Cleaning names (should perhaps be done earlier?)\n");fflush(stderr); nodes.CleanNames(); fprintf(stderr,"Finished cleaning names\n");fflush(stderr); // nodes.debug_show_if_sorted(12); MFRQuadTree quadTree(nodes, quadLevels); #define MAX_NODES_PER_QUAD 50 quadTree.BuildTree(MAX_NODES_PER_QUAD); quadTree.AssignQuadIds(); fprintf(stderr,"Writing out quadtree\n");fflush(stderr); nrquadnodeswritten = 0; int nredges = edges.nredges; int i; #define MAX_EDGES_PER_NODE 25 fprintf(stderr,"Collecting edges for quads (limited to max 25 per node)\n");fflush(stderr); CollectEdgesIntoQuads(nodes, edges, quadTree, MAX_EDGES_PER_NODE); fprintf(stderr, "Done assigning edges to quads (max 25 edges per node)\n");fflush(stderr); quadTree.DetermineStats(edges); fprintf(stderr,"Writing nodeid lookup table\n");fflush(stderr); WriteHashtable(map_out_path, nodes, edges, quadTree); WriteMap(map_out_path, nodes, edges, quadTree); { char fnamebuilder[1024]; if (quadLevels) { sprintf(fnamebuilder,"%squad_",map_out_path); WriteRootJSON(fnamebuilder, nodes, edges, quadTree, quadTree.root, ECompactModeCompact); sprintf(fnamebuilder,"%sequad_",map_out_path); WriteRootJSON(fnamebuilder, nodes, edges, quadTree, quadTree.root, ECompactModeExpanded); fprintf(stderr,"Collecting edges for quads (unlimited)\n");fflush(stderr); CollectEdgesIntoQuads(nodes, edges, quadTree, 0); fprintf(stderr, "Done assigning edges to quads (unlimited)\n");fflush(stderr); sprintf(fnamebuilder,"%sxquad_",map_out_path); WriteRootJSON(fnamebuilder, nodes, edges, quadTree, quadTree.root, ECompactModeFull); } else { sprintf(fnamebuilder,"%squad_",map_out_path); WriteRootJSON(fnamebuilder, nodes, edges, quadTree, quadTree.root, 0); } } fprintf(stderr,"Finisned\n");fflush(stderr); return 0; }