[英]filling a 2d array in a 1d array
我正在讀取這樣的文本文件:
wwwwwwwwwwwwwww
wffbbbbbbbbbffw
wf1bwbwbwbwbwfw
wbbbbbbbbbbbbbw
wbwbwbwbwbwbwbw
wbbbbbbbbbbbbbw
wbwbwbwbwbwbwbw
wbbbbbbbbbbbbbw
wbwbwbwbwbwbwbw
wbbbbbbbbbbbbbw
wbwbwbwbwbwbwbw
wbbbbbbbbbbbbbw
要么
fffffffffffffff
wffffffffffffff
fwfffffffffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
ff1ffffwfffffff
fffffffwfffffff
fffffffwfffffff
fffffffwfffffff
fffffffffffffff
fff2fffffffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
wffffffffffffff
fwfffffffffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
fffffffwfffffff
fffffffwfffffff
fffffffwfffffff
fffffffwfffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
fffffffffffffff
然后我得到的x
和y
該文件的通過做strlen
第一個字符串的y
和行數x
:
void Map::get_size_map(char *dat_name)
{
std::ifstream ifs;
int x;
int y;
char c;
x = 0;
y = 0;
c = 0;
ifs.open (dat_name, std::ifstream::in);
if(ifs.is_open())
{
while(!ifs.eof())
{
c = ifs.get();
if(y == 0 && c != '\n')
x++;
if(c == '\n')
y++;
}
}
ifs.close();
this->x_map = x;
this->y_map = y;
}
現在,在我的程序中,我想訪問地圖的[4][2]
位置,因為我創建了一個函數,使用我的func函數返回一維數組中的正確位置,如下所示:
int Map::fix_Pos(int x, int y)
{
int x_r;
int y_r;
x_r = x * this->x_map;
return (x_r + y);
}
它對於第一個text(map)
效果很好,但是對於第二個text(map)
當我開始在地圖內部移動時),我在第一次移動時會遇到奇怪的行為
int Map::fix_Pos(int x, int y)
{
int x_r;
int y_r;
x_r = x * this->x_map;
return (x_r + y);
}
實際上,您乘以水平線(即X),然后加上水平線(即Y)。 這樣,您將獲得與地圖相反的位置。
嘗試將垂直線(Y)的數量乘以行的大小,然后將其余部分添加為水平線。
嘗試這個 :
int Map::fix_Pos(int x, int y)
{
return (y * this->x_map + x);
}
我認為這應該是以下內容之一(取決於您的代表):
int Map::fix_Pos(int x, int y) const
{
return y * this->x_map + x;
}
要么
int Map::fix_Pos(int x, int y) const
{
return x * this->y_map + y;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.