Ack, that message was poorly formatted. I've tried correcting it a bit.
From: "Tristan Haynes"
I assume world_map_num is a 2-dimensional int array:
int world_map_num[MAP_HEIGHT+1][MAP_WIDTH+1];
> void load_world_map()
> {
> int x, y, size, coord, coord_num = 0;
> FILE *mapfile;
> // int file_coord = 0, file_sector = 0;
> // determine actual coordinate numbers
> for (x = 1; x <= MAP_HEIGHT; x++) {
> for (y = 1; y <= MAP_WIDTH; y++) {
> world_map_num[x][y] = coord_num++;
> }
> }
>
> // create the coordinate data structure
> CREATE(map_proto, struct world_map, coord_num);
> size = sizeof(struct world_map) * coord_num;
> log(" %d coords, %d bytes.", coord_num, size);
>
> // open world map file, if problem then shutdown
> if (!(mapfile = fopen("../lib/world.map", "r"))) {
> log("SYSERR: cannot open world map file");
> exit(1);
> }
>
> /***** PROBLEM CODE HERE *****/
> // load the map coord data from file to structure
> fscanf(mapfile, "%d %d\n", &file_coord, &file_sector);
> for (coord = 0; coord < coord_num; coord++) {
> map_proto[file_coord].sector_type = file_sector;
> if (coord > coord_num)
> break;
> fscanf(mapfile, "%d %d\n", &file_coord, &file_sector);
> }
> /***** PROBLEM CODE HERE *****/
> fclose(mapfile);
> }
> If anyone could help me with this it would be greatly appreciated
> so I can continue my work.
Your problem code assumes, that:
1. there is a line with two numbers for each coordinate in the
grid. (that means it will expect there to be 10.000 lines in a
100x100 grid).
2. the first number is within the predefined range.
Here's how I would write that part:
// load the map coord data from file to structure
char line[128];
int num_lines = 0;
while (get_line(mapfile, line)) {
if (sscanf(line, "%d %d", &file_coord, &file_sector) != 2)
break;
if (file_coord < 0 || file_coord > coord_num)
break;
num_lines++;
map_proto[file_coord].sector_type = file_sector;
}
if (num_lines != coord_num) {
log("load_world_map: sector info count mismatch"
" (%d found)", num_lines);
exit(1);
}
This code assumes it gets a file, no more, no less. If the info
in the file isn't correct, it bails out and gives an error.
It uses the same file format as your other example, and I think
you will regret it on the long run. Reading from file in this way
is timeconsuming, and error-prone. It's hard to get a good idea
of the layout of your world, if it saved in this format. Might
I suggest using another method, similar to how pictures are saved,
perhaps even in a viewable format (bmp, pcx, avs(.x)) ?
Welcor
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT