我正在作为大学项目开发策划游戏。用户必须以一定顺序猜测多种颜色。问题是,如果用户输入“ erd”而不是“ red”之类的东西,他的机会将会丢失。我想使代码以某种方式显示“无效的颜色!”。当他输入无效的东西并让他重新输入他的东西时。我确实做到了,但是有一个小问题,请看下面的代码:
@IBAction func duckduckgo(_ sender: Any) {
let contentView = ContentViewDemo()
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
window.title = "DuckDuckGo http://duckduckgo.com"
self.browser.load(url: URL(string: "http://duckduckgo.com")!)
NSMenuItem (duckduckgo isEnabled: true)
}
问题在于,如果用户输入如下内容:void guess(char guessBall[4][10]) {
for (int i = 0; i < 4; i++) {
cin >> guessBall[i];
if (strcmp(guessBall[i], "red") == 0 || strcmp(guessBall[i], "blue") == 0 ||
strcmp(guessBall[i], "green") == 0 ||
strcmp(guessBall[i], "yellow") == 0 ||
strcmp(guessBall[i], "white") == 0 ||
strcmp(guessBall[i], "black") == 0) {
continue;
} else {
cout << "invalid color!";
i--;
}
}
}
而不是每次都按Enter,它将显示“无效的颜色!”。并让他重新进入,但是颜色的顺序将是错误的。例如:
red blue WRONG black
猜测应该是“红色,红色,绿色,蓝色”。
如果你们提出任何建议,将不胜感激。 按要求提供完整代码:编辑:我似乎无法将代码粘贴到我的帖子上,部分代码混乱了,我也不知道该怎么办。我唯一想到的就是将代码粘贴到CodePile页面上。你去了:https://www.codepile.net/pile/4rYRMJ93 我认为密码堆是一个安全的地方?
答案 0 :(得分:0)
cin
将按照您输入的顺序进行输入。您输入的示例是“红色WRONG绿色蓝色红色”。
我的建议是,您使用调试器,并在continue
语句中放置一个断点else
和一个断点,然后您可以查看发生了什么。
我的建议是让一部分处理输入内容,另一部分验证答案。然后,您可以调用输入函数,直到验证正确为止。
答案 1 :(得分:0)
cin将按输入顺序处理输入。由于在第二个“红色”之前输入了“红色WRONG green blue”,因此该第二个红色位于输入流的末尾。您的代码可能没问题,只需在测试程序时一次输入一种颜色即可。