こちらのサイトを参考にSLGを作ろうとしているのですが、
どうも思い通りに動いてくれません。
(どうやら0と1を交互に書き込んでいるようです)
どのようにしたら上記のサイトのように動くのか教えてください。
(配列の添え字チェックは省いています。)
#include <stdio.h>
#include <string>
int gMove = 4; // 移動力
const int WIDTH = 10, HEIGHT = 10;
char gMap[WIDTH][HEIGHT];
int gX = 5, gY = 5;
void setStart(int x, int y)
{
gMap[x][y] = gMove;
}
void printMap()
{
std::string str;
char buf[8];
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
sprintf_s(buf, "%-2d", gMap[j][i]);
str += buf;
}
str += "\n";
}
str += "-------------------------\n";
printf("%s", str.c_str());
}
void Search4(int x, int y, int m);
void Search(int x, int y, int m)
{
int t = m;
if (gMap[x][y] < t)
t += gMap[x][y];
if (t > gMap[x][y])
{
gMap[x][y] = t;
}
if (t > 0)
Search4(x, y, t);
}
void Search4(int x, int y, int m)
{
printMap();
Search(x, y - 1, m);
Search(x, y + 1, m);
Search(x + 1, y, m);
Search(x - 1, y, m);
}
int main(int argc, char* argv[])
{
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
gMap[j][i] = -1;
}
}
setStart(gX, gY);
Search4(gX, gY, gMove);
getchar();
return 0;
}