我在创建一个用于在16x16矩阵上移动机器人的功能时遇到此问题,我想用Ladro的坐标Y减去Guardia的坐标x。
下面是代码:
`
typedef struct{
int nx;
int ny;
}Personaggio;
Personaggio Ladro;
Personaggio Guardia;
void moveguardia(char scacchiera [][16], Personaggio *Guardia)
{
int movimento, GxMed, GyMed;
if(scacchiera[Guardia->nx-1][Guardia->ny]=='m'){
movimento=rand()%4;
if(movimento==0){
Guardia->nx=Guardia->nx+1;
scacchiera[Guardia->nx-1][Guardia->ny]=' ';
scacchiera[Guardia->nx][Guardia->ny]='G';
}
else if(movimento==1){
Guardia->nx=Guardia->nx-1;
scacchiera[Guardia->nx+1][Guardia->ny]=' ';
scacchiera[Guardia->nx][Guardia->ny]='G';
}
else if(movimento==2){
Guardia->ny=Guardia->ny-1;
scacchiera[Guardia->nx][Guardia->ny+1]=' ';
scacchiera[Guardia->nx][Guardia->ny]='G';
}
else if(movimento==3){
Guardia->ny=Guardia->ny+1;
scacchiera[Guardia->nx][Guardia->ny-1]=' ';
scacchiera[Guardia->nx][Guardia->ny]='G';
}
}
GxMed=abs((Guardia->nx) - (Ladro->nx));//error
错误在这一行GxMed = abs((Guardia-> nx) - (Ladro-> nx)); //错误
请查看注释为错误的行。我搜索了很多,并尝试更换 - >通过。但没用.`
答案 0 :(得分:0)
函数内部的变量不知道函数外部的变量。显而易见的问题似乎是您在函数外部初始化Personaggio Ladro
。你的函数不知道Ladro
是否存在,因为你没有在函数中初始化 这样的对象。