我必须使用代表目标的2x3阵列创建一个5轮模拟足球枪战的游戏。计算机随机挑选3个地方阻止,用户选择一个地方进行射击。如果用户选择了一个未被阻止的坐标,那么它就是一个目标。需要两个功能,一个是计算机选择3个随机位置来阻止,另一个功能是每轮打印目标。如果用户得分3次则获胜,否则他们输了。
输出应如下所示(B =已屏蔽,G =目标," - " =空格):
B - B
B - G
我一直被困在我的代码上并且遇到了一个我似乎无法在两个函数中修复的错误
#include <iostream>
#include <stdlib.h>
#include <cmath>
#include <ctime>
using namespace std;
void computerPick(char soccer[]);
void shot(char shooter[]);
int main()
{
int userInputX;
int userInputY;
srand(time(NULL));
char soccer[2][3];
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
{
soccer[i][j]='-';
}
}
cout<<"Pick a X coordinate to shoot at: "<<endl;
cin>>userInputX;
cout<<"Pick a Y coordinate to shoot at: "<<endl;
cin>>userInputY;
computerPick(soccer);
shot(soccer,userInputY,userInputX);
}
void computerPick(char soccer[])
{
int x = rand()%3;
int y = rand()%2;
soccer[x][y]='B';
}
void shot(char shooter[], int userInputY, int userInputX)
{
int score=0;
if(shooter[userInputX][userInputY]!='B')
cout<<"shot is good"<<endl;
else
cout<<"shot is blocked"<<endl;
}
答案 0 :(得分:0)
您必须为参数使用正确的类型,并且必须匹配原型声明和函数定义。
此代码编译:
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from All
#Deny from All
#Allow from 127.0.0.1
#Allow from ::1
</IfModule>
答案 1 :(得分:0)
您可能希望再次查看这些部分:
char soccer[2][3];
和
int x = rand()%3;
int y = rand()%2;
soccer[x][y]='B';
另请注意,在您的二维数组中,布尔值会更清晰,而不是“B”或“G”的字符。 此外,当使用多维数组作为参数时,您可以将它们作为
传递int foo(int (*array)[5][10])
这意味着您将指针传递给固定大小为5-10的数组