From: "Moppe Sewerin" <mans@GRAPHICLIFE.COM> > Any1, who are using this map thing, succeeded in making a frame around > the map? > [...] I've taken the liberty to dissect your code a bit. It should be both faster and more readable now: I assume the map[][] array is initialized as char map[MAP_X+1][MAP_Y+1]; or you'll have to change the loops below to use 'MAP_X-1' etc. <mailer code> /* corners */ map[0][0] = map[MAP_X][0] = map[0][MAP_Y] = map[MAP_X][MAP_Y] = ' '; /* coloumns */ for (x = 1; x < MAP_X; x++) /* skip first and last row */ map[x][0] = map[x][MAP_Y] = '|'; /* lines */ for (y = 1; y < MAP_Y; y++) /* skip first and last col */ map[0][y] = map[MAP_X][y] = '-'; /* blanks */ for (x = 1; x < MAP_X; x++) /* skip first and last row */ for (y = 1; y < MAP_Y; y++) /* skip first and last col */ map[x][y] = ' '; /* plot in zones */ for (i = 0; i <= top_of_zone_table; i++) if (GET_XPOS(ch) == zone_table[i].xpos && GET_YPOS(ch) == zone_table[i].ypos) map[zone_table[i].xpos][zone_table[i].ypos] = 'X'; else map[zone_table[i].xpos][zone_table[i].ypos] = zone_table[i].sy; } </mailer code> The output should look like this: --- | | | | --- Just to pretty things up a bit (and skip a comparison[1]) try this: <mailer code> ACMD(do_map) { int x, y, slen = 0; *buf='\0'; draw_map(ch); for (x = 0; x <= MAP_X; x++) { for (y = 0; y <= MAP_Y; y++) slen += sprintf(buf + slen, "%c", map[x][y]); slen += sprintf(buf + slen, "\r\n"); } page_string(ch->desc, buf, 1); } </mailer code> Welcor [1] It's good coding practice to limit the amount of comparisons in a for/while loop, since you have to iterate through that comparison a lot of times. Same thing goes for nested for/while loops - be sure the total computations stay as low as possible. Consider the following (stupid) example: int x,y,count = 0; for (x = 0;x < 50;x++) for (y = 0; y < 25; y++) count++; printf("%d", count); As the output shows, the loop iterates 25*50 (= 1250) times. Any comparisons, nested for/while loops, or other statements are executed 1250 times too. In other words - to not slow down the program avoid nesting for/while loops, or filling them with lots of comparisons, whenever possible. -- +---------------------------------------------------------------+ | 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/25/03 PDT