如何使用从负数到正数的单元格来制作数组?

时间:2016-02-03 18:06:57

标签: c++ arrays

我想制作非图形(文本)C ++游戏(使用n,s,w,e移动角色,并描述每个位置)。位置将是一个对象数组(此数组中将有位置描述和其他信息)。我已经开始制作这个游戏,但我有一个问题:是否有可能制作尺寸为x的数组 - 从-100到100和z - 从-100到100?如果不可能,还有其他方法吗? (我不想在4个角中的一个角位置[0] [0]位置,但在中间位置。)

2 个答案:

答案 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(含)的真实数组。

LIVE DEMO