用户输入预定义变量(按名称/字符)
User Inputs Predefined Variable By It's Name/Character
我目前正在尝试用一些简单的代码将棋盘游戏《战舰》制作成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];
}
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- C++常量字符*输入
- 使用带符号字符输入的isalnum-Visual C++
- 限制C++中的字符输入
- 字符输入问题
- 字符** + 输入" "字符
- 文件 I/O 操作 - 奇怪的字符输入
- 如何在不暂停循环的情况下使用字符输入停止循环
- C++ - 对'if'语句使用特定字符输入
- 使用 "NEW" 获取字符输入和给定输出,并从用户那里获取字符串长度
- 正确的逐个字符输入