Ejemplo n.º 1
0
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 );
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
main() {
	LoadMap() ;
	ProcessMap() ;
	WriteMap() ;
}
Ejemplo n.º 4
0
Archivo: life.c Proyecto: slg123/combat
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++;
    }
        
}
Ejemplo n.º 5
0
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;
}