用户输入预定义变量(按名称/字符)

User Inputs Predefined Variable By It's Name/Character

本文关键字:字符 输入 预定义 变量 用户      更新时间:2023-10-16

我目前正在尝试用一些简单的代码将棋盘游戏《战舰》制作成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

现在我知道我可以让用户输入协调为"4"answers"5",但为了在游戏中更传统,我正试图弄清楚如何按字母顺序标记行,所以从技术上讲,"45"实际上是"d5"。我的第一次尝试是这样的:

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

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

这应该足以让您开始:

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

看,如果一个字节包含01100100,那么如果我们将其解释为数字,则它是100,但如果我们将它解释为字符则它是"d"。

您必须了解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];
   }