我正在完成任务,我被困住了。这是我现在所做的一切代码
{
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(钻石),则应该添加1来得分并为钻石生成新的随机位置。该位置也应该与旧的位置不重叠。
我想我必须使用srand
功能,但我将如何使用它?任何人都可以指导我谢谢。
答案 0 :(得分:0)
我实际上并没有理解你想做什么,但无论如何this is the documentation of 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';
}
这将产生两个随机的&#39; B&#39;如你所知,在5x5矩阵中。
编辑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;
}
它能解决你的问题吗?