我在试着做一个程序,制作一个笛卡尔平面;你输入线的基本信息,它画出线。
可惜效果不好。基本上,这是一个循环,它在行的每个点上都放一个X字符:
for(int x=0;x<MAP_HEIGHT;x++)
{
piano.griglia[x][a*x+b]='X';
}
字符串
但它并不能很好地工作!结果如下:
x1c 0d1x的数据
注意应该只有一条线的地方有三条线。下面是飞机的代码,可能会有帮助:
class Cartesiano
{
public:
char griglia[MAP_LENGHT+1][MAP_HEIGHT+1];
Cartesiano( void )
{
for(int y=0;y<=MAP_HEIGHT;y++)
{
for(int x=0;x<=MAP_LENGHT;x++)
{
if (y==0)griglia[x][y]='_';
else
{
if(x==0)griglia[x][y]='|';
else griglia[x][y]=' ';
}
}
}
}
void Draw( void )
{
for(int y=MAP_HEIGHT;y>=0;y--)
{
for(int x=0;x<=MAP_LENGHT;x++)cout<<griglia[x][y];
cout<<"\n";
}
}
}piano;
型
有什么想法吗?
1条答案
按热度按时间yhqotfr81#
当y值超过49(
MAP_HEIGHT - 1
)时,数组溢出。如果在绘制循环中计算y=a*x+b
并打印Z而不是X,您将看到第一行是X,溢出的错误都是Z字符串
这是由于C++中数组的内存存储方式,它只是碰巧在一个数组之外写入会导致您写入下一个数组。一般来说,这样做会使你的程序崩溃。
还要注意,这里的x循环应该在
MAP_LENGTH
上。我也强烈建议得到一个适当的图形库