/***********************************************************************
 * Write the entire state of the universe to 'filename'
 *
 */
int Universe_WriteAscii(UNIVERSE *u, const char *filename, char *errbuf)
{
	FILE *fp;

	ASSERT( u != NULL );
	ASSERT( filename != NULL );
	ASSERT( errbuf != NULL );

	fp = fopen(filename, "w");
	if( fp == NULL ) {
		sprintf(errbuf, "%s: %s", filename, strerror(errno));
		return 0;
	}

	write_prolog(fp);
	write_universe(fp, u);
	write_evolve_random(fp, u->er);
	write_kforth_mutate_options(fp, u->kfmo);
	write_barriers(fp, u);
	write_keylist(fp, u);
	write_organic(fp, u);
	write_spores(fp, u);
	write_organisms(fp, u);
	write_player(fp, u);

	fclose(fp);
	return 1;
}
Beispiel #2
0
void write_all_ply()
{
	HFINDFILE	hff;
	char	filename[256];
	creature	*ply;
	FILE	*fp;

	fp = fopen( player_file, "w");
	if ( fp != NULL ) 
	{

		hff = find_first_file(get_player_path(), filename, 256);
		if ( hff )
		{
			do 
			{
				if ( filename[0] != '.')
				{
					if (load_ply_from_file(filename, &ply))
						printf("Unable to read binary player %s.\n", filename);
					else 
					{
						write_player(fp, filename, ply);
						free_crt(ply);
					}
				}
			} while( find_next_file( hff, filename, 256 ));

			close_find_file(hff);
		}
		fclose(fp);
	}
	
	return;
}
Beispiel #3
0
static void     multi_win(t_vm *vm, char **players, int w_exist)
{
#ifdef BONUS
  if (vm->flags & BONBON)
    aff_result(vm, players, w_exist, 1);
  else
#endif
    {
      w_exist = 0;
      write(STDOUT_FILENO, "Le joueur", 9);
      write_player(vm, players);
      write(STDOUT_FILENO, " a gagne.\n", 10);
    }
}
Beispiel #4
0
static void	one_win(t_vm*vm, char **players, int w_exist)
{
  int	i;

#ifdef BONUS
  if (vm->flags & BONBON)
    aff_result(vm, players, w_exist, 2);
  else
#endif
    {
      write(STDOUT_FILENO, "Egalite entre les joueurs", 25);
      for (i = 0; i < w_exist; i++)
	write_player(vm, players);
      write(STDOUT_FILENO, "\n", 1);
    }
}
Beispiel #5
0
int main(int argc, char **argv)
{
	struct delta delta;
	struct player players[MAX_PLAYERS];
	unsigned i;

	load_config();
	if (argc != 1) {
		fprintf(stderr, "usage: %s\n", argv[0]);
		return EXIT_FAILURE;
	}

	while (scan_delta(&delta)) {
		unsigned length = 0;

		/* Load player (ignore fail) */
		for (i = 0; i < delta.length; i++) {
			if (!read_player(&players[length], delta.players[i].name))
				continue;

			merge_delta(&players[length], &delta.players[i]);
			length++;
		}

		/* Compute their new elos */
		if (make_sens_to_rank(delta.elapsed, players, length))
			update_elos(players, length);

		/* Write the result only if something changed */
		for (i = 0; i < length; i++) {
			if (players[i].is_modified) {
				if (!write_player(&players[i]))
					continue;

				if (players[i].is_modified & IS_MODIFIED_CLAN) {
					printf("%s %s %s\n",
					       players[i].name,
					       players[i].delta->clan,
					       players[i].clan);
				}
			}
		}
	}

	return EXIT_SUCCESS;
}