我想制作非图形(文本)C ++游戏(使用n,s,w,e移动角色,并描述每个位置)。位置将是一个对象数组(此数组中将有位置描述和其他信息)。我已经开始制作这个游戏,但我有一个问题:是否有可能制作尺寸为x的数组 - 从-100到100和z - 从-100到100?如果不可能,还有其他方法吗? (我不想在4个角中的一个角位置[0] [0]位置,但在中间位置。)
答案 0 :(得分:1)
数组只能有正索引:
Location loc[201][201];
定义一个返回所需位置的Funktion:
Location getLocation(int xCoord, int yCoord)
{
if (abs(x)>100 || abs(y)>100)
throw std::invalid_argument( "value out of range");
return loc[xCoord+100][yCoord+100];
}
然后,您可以通过调用函数getLocation(x,y)
答案 1 :(得分:0)
一种常见(但相当粗略)的方法是做这样的事情(例如21 x 21板):
typedef struct{
char name[10];
int age;
} person;
...
strcpy(p->name, name);
这会创建一个普通的21x21数组,但之后它还会创建一个指向伪数组的指针,该数组初始化为指向实数组的中心。然后你就可以使用这个假指针,好像它是一个索引范围从-10到+10(含)的真实数组。