c++ - 如何在网格中放置随机字符
问题描述
我正在执行一项任务,但我被卡住了。这是我到目前为止所做的代码
{
int s = 5;
char player = 'p';
char choice = 0;
int pr = 1,pc = 1;
int dr=2, dc=2;//diamond in row //dimond in column
int br = 3, bc = 3;
int score = 0;
int k = 1;
char d = 'D';
char b = 'B';
while (score != 25){
for (int i = 1; i <= s; i = i + 1){
k = i;
for (int j = 1; j <= s; j = j + 1){
if (i == pr&&j == pc){
cout << " " << player;
}
else if(i==dr&&j==dc){
cout << " " << d;
}
else if (i == br&&j == bc){
cout << " " << b;
}
else if (i == dr + 2 && j==dc + 2){
cout << " " << d;
}
else if (i == br+2&&j == bc-1){
cout << " " << b;
}
else{
cout << " *";
}
}
cout << endl;
}
cout << "Enter your choice= ";
cin >> choice;
if (choice == 'd'||choice=='D'){
pr = pr + 1;
}
if (choice == 'r' || choice == 'R'){
pc = pc + 1;
}
if (choice == 'l' || choice == 'L'){
pc = pc - 1;
}
if (choice == 'u' || choice == 'U'){
pr = pr - 1;
}
}
}
现在,如果玩家位置继续 d(diamond),那么它应该加 1 得分并为菱形生成新的随机位置。该位置也不应该与旧位置重叠。我想我必须使用srand
功能,但我将如何使用它?谁能指导我谢谢。
解决方案
我实际上并不了解您想要做什么,但无论如何这是 srand function 的文档,并附有示例。
简而言之,您必须使用种子初始化伪随机数生成器(建议与time(NULL)
函数一起使用,因为返回独特的运行时值),然后只需获取您的伪随机数,rand() % x
其中x
是范围的上边界你想在其中得到你的号码。
如果您提供更多信息,我很乐意为您提供帮助。
享受!
编辑:
char array[5][5];
srand(time(NULL));
for(int x = 0; x < 2; x++) {
array[rand() % 5][rand() % 5] = 'B';
}
正如您所要求的,这将在 5x5 矩阵中生成两个随机“B”。
编辑2:
在两个嵌套的 for 循环之前添加:
if (pc == dc && pr == dr) {
score++;
int newDc = rand() % 5;
int newDr = rand() % 5;
// keep generating random numbers until you find one that is different
// from the previous one.
while (newDc == dc) newDc = rand % 5;
while (newDr == dr) newDr = rand % 5;
// when you find it, change it
dc = newDc;
dr = newDr;
}
它解决了你的问题吗?
推荐阅读
- c# - 为什么 targetFramework net472 项目不能引用 targetFrameworkVersion v4.7.2 项目?
- swift - 无法使用 Combine 执行 urlSession 请求
- c - 带有位域的 MOVZX
- python - 测量在永不结束的程序上执行的文件的代码覆盖率的正确方法
- reactjs - Material-UI 使用 makeStyles 覆盖样式
- r - 提取最后两个之间的文本 | r 中的分隔符
- git - 从 Visual Studio 解决方案资源管理器中隐藏 .gitignored 文件
- ffmpeg - 直播到 VOD hls ffmpeg
- php - 如何在所有浏览器中播放音频文件?
- azure - 无法使用 Azure CLI 删除 Azure Policy 分配