Пример #1
0
void game_destroy(struct game_t* g)
{
    assert(g != NULL);

    game_terminate(g);
    free(g);
}
Пример #2
0
void level_generate(struct game_data *game)
{
	int x, y, i;
	FILE *level;
	char tmp, filename[256];

	/* Choose a random text file. */
	snprintf(filename, 256, "%s%s-%d.txt", game->datadir, "/levels/level",  rand() % game->num_levels);

	/* Load the text file. */
	level = fopen(filename, "r");
	if (level == NULL) {
		printf("Error: Level file '%s' not found!\nExiting...\n", filename);
		game_terminate(0);
	}

	/* Parse text file into 'level' array. */
	for (y = 0; y <= LEVEL_H; y++) {
		for (x = 0; x <= LEVEL_W; x++) {
			fscanf(level, "%c", &tmp);
			if (tmp == ' ')
				x--;
			else if (tmp == '\n')
				break;
			else
				game->level[y][x] = tmp;
		}

		if (feof(level))
			break;
	}

	/* Should we mirror the level? */
	if (rand() % 2) {
		for (y = 0; y < LEVEL_H; y++) {
			for (x = 0, i = LEVEL_W - 1; x < LEVEL_W / 2; x++, i--) {
				tmp = game->level[y][i];
				game->level[y][i] = game->level[y][x];
				game->level[y][x] = tmp;
			}
		}
	}

	/* Should we flip the level? */
	if (rand() % 2) {
		for (x = 0; x < LEVEL_W; x++) {
			for (y = 0, i = LEVEL_H - 1; y < LEVEL_H / 2; y++, i--) {
				tmp = game->level[i][x];
				game->level[i][x] = game->level[y][x];
				game->level[y][x] = tmp;
			}
		}
	}

	fclose(level);
}