用户通过其名称/字符输入预定义变量

时间:2014-10-05 17:16:40

标签: c++

我目前正试图用简单的代码将棋盘游戏作为C ++程序制作(仍在学习C ++,但我知道基础知识和一些先进的东西)并且我试图做游戏中的某些东西我不太确定该怎么做。我目前有一个2D 10x10阵列作为主板,看起来像这样:

int board[10][10]={
{0,1,2,3,4,5,6,7,8,9},
{10,11,12,13,14,15,16,17,18,19},
{20,21,22,23,24,25,26,27,28,29},
{30,31,32,33,34,35,36,37,38,39},
{40,41,42,43,44,45,46,47,48,49},
{50,51,52,53,54,55,56,57,58,59},
{60,61,62,63,64,65,66,67,68,69},
{70,71,72,73,74,75,76,77,78,79},
{80,81,82,83,84,85,86,87,88,89},
{90,91,92,93,94,95,96,97,98,99} };

此刻它的设置方式,每个行和列号分别与每个数字的第一个和第二个数字相关联,因此:

board[4][5] //This is 45

现在我知道我可以让用户输入协调为#34; 4"和" 5",但是想要更加传统的游戏,我试图弄清楚如何按字母顺序标记行,所以" 45"实际上技术上是" d5"。我对此的第一次尝试是:

int d=4, x, y;
cout <<"Input Desired Coordinates";
cin >> x;
cin >> y;
cout << board[x][y];

我的意图是,如果用户输入&#34; d&#34;,它将转换为变量&#34; d&#34;它的值为4,但显然C ++不会那样工作,所以有任何(相当简单的)方法能够输入一个字母并让程序将其解释为变量并用预定义替换它变量值?非常感谢提前!

2 个答案:

答案 0 :(得分:0)

这应该足以让你入门:

char c;
cin >> c;          # If this is the character 'd',
int n = c - 96;    # then this will be the number 4.

请参阅,如果一个字节包含01100100,那么如果我们将其解释为数字,那么它是100,但如果我们将其解释为字符< / em>,它&#39; d&#39;。

答案 1 :(得分:0)

你必须明白C ++中的数组从0开始。所以“d”应该相等3.还要检查X和Y是否在数组的范围内。 D是十进制数字97下的ASCII。

   unsigned int boardWidth = 10;
   unsigned int boardHeight = 10;
   int X;
   int Y;
   char mid;
   cout << "Input coordinates";
   cin >> mid;
   cin >> Y;
   X = static_cast<int>(mid) - 97;
   if (X < boardWidth && Y < boardHeigth && X > 0 && Y > 0) {
      cout << board[X][Y];
   }