如何在 2D 坐标系中放置点?

How put points in an 2D coordinate system radomly?

本文关键字:坐标系 2D      更新时间:2023-10-16
i want this code can show:
1 2 3 ....      10
1 *               *
2    @
.
. *
10 *
#include <iostream> 
#include <iomanip>
#include <time.h>
int coordinates[1][10] = { 1,2,3,4, 5,6,7,8,9,10 };
for (int k = 0; k < 1; k++) {
for (int j = 0; j < 10; j++) {
cout << " " << coordinates[k][j];
}
cout << endl;
}
for (int r = 0; r < 1; r++) {
for (int s = 0; s < 10; s++) {
cout << coordinates[r][s] << endl;
}
}
return 0;   
}    

我想把sign@放在位置(3,2(,就像上面一样 并且还将一些点(*(随机放入坐标系中,并且这些点不能将它们放在@position(3,2(的8个近邻处

我的建议是制作一个 2d 字符数组:

char board[MAX_ROWS][MAX_COLUMNS] = {0};  

更好的改进是为换行符使用额外的列:

char board[MAX_ROWS][MAX_COLUMNS + 1] = {0};
for (unsigned int i = 0U; i < MAX_ROWS; ++i)
{
board[i][MAX_COLUMNS] = 'n';
}

额外的列允许您使用一个语句打印电路板:

std::cout << board << "n";

如果需要幻想,可以在打印前设置输出属性:

std::cout.width(3); // each cell is 3 wide
std::cout.fill(' '); // Pad each cell with spaces.
std::cout << board << "n";

您还可以添加用于显示行号的额外列和用于显示列号的额外行。

编辑 1:设置点设置点
很简单:

board[row][column] = '*';  // Set a point.
board[x][y] = ' '; // Erase a point.  

由于棋盘的类型是char,您可以使用不同的字符作为点,例如'-', '+', 'M'等。