【发布时间】:2013-04-23 19:16:45
【问题描述】:
我正在尝试制作一个 80x20 2D 阵列,该阵列创建 6 条线,这些线在阵列周边的两个点之间随机连接。我想它会看起来像只在某些地方框起来的照片。我的问题是,我不知道如何选择和链接阵列周边的两个随机点并显示它们。我做了一个选择完全随机点的代码,但似乎无法解决这个任务。有人能指出我正确的方向吗?
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
const int rows = 80; //declares the amount of rows in the 2d array
const int cols = 20; //declares the amount of columns in the 2d array
char sky[rows][cols];
fill_n(&sky[0][0], 100, '-');
fill_n(&sky[0][0] + 100, rows*cols - 100, ' ');
random_shuffle(&sky[0][0], &sky[0][0] + rows*cols);
for(int r = 0; r < rows; ++r)
{
for(int c = 0; c < cols; ++c)
cout << sky[r][c];
cout << " ";
}
return 0;
}
【问题讨论】:
-
sky中的连字符和空格('-'和' ')有什么意义?另外,您的意思是在同一行上打印所有行吗? -
这段代码最初是用来制作一个二维数组,其中有随机放置的星星。所有其他空格都是空白。
-
我明白了,所以连字符代表星号。您是否尝试扩展此代码以包含所描述的功能,或者只是将其发布为您知道如何做的示例?根据您的描述,听起来整条线必须在周边(不仅仅是端点)。这个对吗?如果是这样,一条“线”可以穿过一个角落还是必须完全在一侧?
-
是的,整条线都应该在外围。这条线必须是直的,所以我认为它必须在一侧。如果可能,我正在尝试扩展此代码。
标签: c++ multidimensional-array random-sample