2014-10-05 110 views
-3

我目前正在尝试将棋盘游戏作为一个C++程序在一些简单的代码(仍然学习C++,但我知道基础和一些先进的东西在这里和那里)和我我正试图在游戏中做一些事情,我不太确定该怎么做。我有一个二维10×10阵列作为当前董事会,看起来是这样的:用户输入预定义变量的名称/字符

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 

现在我知道我可以让用户输入的协调统称为“4”和“5”,但希望更传统的游戏,我想弄清楚如何使这些行按字母顺序标记,所以“45”在技术上实际上是“d5”。我的第一次尝试是这样的:

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

我的意图是,如果用户输入“d”,这将转化为变量“d”,它具有为4的值,但显然C++不起作用那么,是否有任何(相当简单)的方式能够输入字母并让程序将其解释为变量并将其替换为预定义变量的值?提前感谢!

回答

0

这应该足以让你开始:

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

看,如果一个字节包含01100100,那么如果我们把它解释为一个,这是100,但如果我们把它解释为字符,它是'd'。

+0

这是完美的我需要什么,非常感谢,与我以为我会减去97,因为如MKAROL指出,数组从0开始,所以我想我的“一个'值为0. – lXGaimMasterXl 2014-10-05 18:56:13

0

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

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]; 
    } 
+0

啊,是的,我知道数组的起点为0,对不起,这只是一个错误的尝试在我的脑海中快速算术。 – lXGaimMasterXl 2014-10-05 17:41:12

+0

我喜欢这个解决方案和Beta版本,但是我会说这对我的需求来说太复杂了,但是谢谢你(并且提醒我,我的心理数学已经关闭了)。 – lXGaimMasterXl 2014-10-05 18:54:47