gpt4 book ai didi

c++ - 是否可以仅使用循环在形状内绘制形状?如果是这样,请指出正确的方向

转载 作者:行者123 更新时间:2023-11-28 07:29:10 25 4
gpt4 key购买 nike

我想绘制一个简单的方形 map ,由星号网格组成,在网格内,我想绘制其他形状。

示例输出:

xxxxxooxxxx
xxxxxooxxxx
xxxxxxxxxxx
xxxxxxxxxxx
ooxxxxxxxxx
ooxxxxxxxxx

我试过简单地将小形状的嵌套循环放在大形状的嵌套循环中,这导致了一些变形的无限​​矩形

我已经尝试让较小形状的开始和结束条件不同(我的思考过程是那些等同于坐标但显然那是错误的)

任何帮助将不胜感激,我希望使用循环来解决这个问题,但也欢迎使用其他方法。

这是我的实际代码 {#包括 使用命名空间标准; int main(){

    for(int row=0;row<26;row++)
{
for(int column=0;column<26;column++)
{
cout << "*";

}
cout<< endl;
}

for (int i=5;i<10;i++)
{
for (int j=5;j<10;j++)
{
cout << "x";
}
cout << endl;
}



}

代码当前绘制 2 个正方形,一个 26x26 和一个 5x5。我想知道如何将 5x5 的正方形插入 26x26 的正方形。我也想知道如何在较大的正方形内控制它的位置

最佳答案

最好先构建您要打印的内容,然后再打印它。 cout 只是在当前位置打印到控制台,没有简单的方法可以在已经输出的文本中重置该位置。有一些库可以为您提供类似 ncurses 的功能,但它可能比您正在寻找的更多。

尝试这样的事情:

#include <iostream>
#include <vector>

typedef std::vector<char> GridRow;
typedef std::vector<GridRow> Grid;

void InitGrid(Grid& grid, int width, int height, char symbol = ' ')
{
grid.clear();
grid.resize(height);
for(size_t i = 0; i < grid.size(); ++i)
{
grid[i].clear();
grid[i].resize(width, symbol);
}
}

void DrawRectangle(Grid& grid, char symbol, int x, int y, int width, int height)
{
//Reject out of bounds rectangles. An alternative would be to clip them.
if(grid.empty() || grid.size() < static_cast<size_t>(y + height) || grid[0].size() < static_cast<size_t>(x + width))
{
return;
}

for(int h = y; h < (y + height); ++h)
{
GridRow& row(grid[h]);
for(int w = x; w < (x + width); ++w)
{
row[w] = symbol;
}
}
}

void PrintGrid(const Grid& grid)
{
std::string line;
for(size_t h = 0; h < grid.size(); ++h)
{
const GridRow& row(grid[h]);
for(size_t w = 0; w < row.size(); ++w)
{
std::cout << row[w];
}
std::cout << std::endl;
}
}

int main()
{
Grid grid;
InitGrid(grid, 11, 6, 'x');
DrawRectangle(grid, 'o', 5, 0, 2, 2);
DrawRectangle(grid, 'o', 0, 4, 2, 2);
PrintGrid(grid);

std::cout << std::endl;
InitGrid(grid, 15, 15);
DrawRectangle(grid, '*', 1, 1, 8, 8);
DrawRectangle(grid, '*', 6, 6, 8, 8);
PrintGrid(grid);

return 0;
}

您可能想将网格包装在一个类中以使事情更清晰一些,但我认为这可能更容易理解。

关于c++ - 是否可以仅使用循环在形状内绘制形状?如果是这样,请指出正确的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com