假设所有变量都存在(没有在这里将它们全部声明)
if(input=='R') goto restart;
if(input=='X') exit(0);
if(input=='D') moveRight(edgeLength, board, score);
if(input=='S') moveDown(edgeLength,board, arrSize);
if(input=='A') moveLeft(edgeLength,board, arrSize);
if(input=='W') moveUp(edgeLength,arrSize,board);
if(input=='P')
{
cin>> number>>position;
board[position]=number;
}
此输入被置于循环中,因此只要此游戏正在播放,就会要求用户输入。 我的目标是允许输入
p 3 50
将数字50放在索引位置3。
使用我当前的代码,我必须输入' p'按Enter键,然后按下两个数字。
但是,ID就像检测' p 3 50
' (一次性输入),因为' D
'(输入)表示moveRight。
我希望我的问题清楚。
答案 0 :(得分:0)
cin >> input >> number >> position;
if(input=='R') goto restart;
else if(input=='X') exit(0);
else if(input=='D') moveRight(edgeLength, board, score);
else if(input=='S') moveDown(edgeLength,board, arrSize);
else if(input=='A') moveLeft(edgeLength,board, arrSize);
else if(input=='W') moveUp(edgeLength,arrSize,board);
else
{
//whatever statements for last condition;
}
如果您想一次捕获所有三个输入,您可以先获取输入,然后根据收到的输入执行相应的操作。
已添加:使用if
或else-if
取决于具体情况。从我在您的代码段中看到的内容来看,else-if
优于if
,因为每次只能有一种输入类型。一旦找到匹配的字符(例如' D'),它将停止阅读下面的代码(这应该是没有必要检查其余条件是否输入是' S& #39;或者' A'或者' W,因为你已经得到了输入)。通过防止对条件进行不必要的检查,使代码的乐趣也变得更快。
概念验证:
//Example
void fncOne()
{
cout << "This is function one" << endl;
}
void fncTwo()
{
cout << "This is function two" << endl;
}
int main()
{
char input;
int number, position;
cin >> input >> number >> position;
if (input == 'A') fncOne();
else if (input == 'B') fncTwo();
}
输入: A 3 5
输出: This is function one
答案 1 :(得分:0)
嗯,首先,您希望将用户输入作为字符串而不是单个类型。
std::string input;
std::cin >> input;
然后您将根据关键字/字符的单词数来解析该字符串。
e.g。
std::vector<std::string> words;
std::stringstream stream(input); std::string temp;
while(stream >> temp)
words.push_back(temp);
if(words.size() == 3){
if(words[0][0] = 'p'){
int number = std::stoi(words[1]);
int position = std::stoi(words[2]);
board[position] = number;
}
else
... get input again ...
}
else if(words.size() > 1){
... get input again ...
}
else{
char c = words[0][0];
if(c == 'w')
moveUp(edgeLength,arrSize,board);
else if(c == 's')
moveDown(edgeLength,board, arrSize);
else if(c == 'a')
moveLeft(edgeLength,board, arrSize);
else if(c == 'd')
moveRight(edgeLength, board, score);
else if(c == 'x')
exit(0);
else if(c == 'r')
goto restart;
else
... get input again ...
}
当然,如果你想输入一个字符串然后只按一次输入,这只是一种方式。