C++ C/C++;即时输入
好吧,我已经知道一些人会生气,我问这个问题是因为已经有太多关于它的东西了,但我似乎能理解它;如何在C/C++中获得即时输入(单个字符)?我正在慢慢地走向一款老派的“塞尔达传奇”游戏,到目前为止,这个动作看起来不错,但即时输入确实会让它变得更好 我也确信我对字符及其旁边的数字做了一些错误的处理,如果有人能帮助我,或者提供一个教程或链接,我将非常感激 另外,在研究“goto”函数时,我发布了很多人说它很混乱和混乱的消息。是的,这有点费时,但至少对我来说并不凌乱或混乱。有谁能解释一下对它的仇恨 不管怎样,很抱歉含糊其辞,这是我到目前为止的代码,如果我犯了很多新手错误,请随意修改C++ C/C++;即时输入,c++,c,C++,C,好吧,我已经知道一些人会生气,我问这个问题是因为已经有太多关于它的东西了,但我似乎能理解它;如何在C/C++中获得即时输入(单个字符)?我正在慢慢地走向一款老派的“塞尔达传奇”游戏,到目前为止,这个动作看起来不错,但即时输入确实会让它变得更好 我也确信我对字符及其旁边的数字做了一些错误的处理,如果有人能帮助我,或者提供一个教程或链接,我将非常感激 另外,在研究“goto”函数时,我发布了很多人说它很混乱和混乱的消息。是的,这有点费时,但至少对我来说并不凌乱或混乱。有谁能解释一下对它的仇恨 不管怎
// movement test
#include <iostream>
#include <stdio.h>
int main(void){
char move[101];
one:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n O=== \n ==== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto one;
}
if (*move == 'a') {
goto one;
}
if (*move == 's') {
goto five;
}
if (*move == 'd') {
goto two;
}
two:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n =O== \n ==== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto two;
}
if (*move == 'a') {
goto one;
}
if (*move == 's') {
goto six;
}
if (*move == 'd') {
goto three;
}
three:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==O= \n ==== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto three;
}
if (*move == 'a') {
goto two;
}
if (*move == 's') {
goto seven;
}
if (*move == 'd') {
goto four;
}
four:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ===O \n ==== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto four;
}
if (*move == 'a') {
goto three;
}
if (*move == 's') {
goto eight;
}
if (*move == 'd') {
goto four;
}
five:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n O=== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto one;
}
if (*move == 'a') {
goto five;
}
if (*move == 's') {
goto nine;
}
if (*move == 'd') {
goto six;
}
six:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n =O== \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto two;
}
if (*move == 'a') {
goto five;
}
if (*move == 's') {
goto ten;
}
if (*move == 'd') {
goto seven;
}
seven:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==O= \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto three;
}
if (*move == 'a') {
goto six;
}
if (*move == 's') {
goto eleven;
}
if (*move == 'd') {
goto eight;
}
eight:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ===O \n ==== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto four;
}
if (*move == 'a') {
goto seven;
}
if (*move == 's') {
goto twelve;
}
if (*move == 'd') {
goto eight;
}
nine:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n O=== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto five;
}
if (*move == 'a') {
goto nine;
}
if (*move == 's') {
goto thirteen;
}
if (*move == 'd') {
goto ten;
}
ten:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n =O== \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto six;
}
if (*move == 'a') {
goto nine;
}
if (*move == 's') {
goto fourteen;
}
if (*move == 'd') {
goto eleven;
}
eleven:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ==O= \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto seven;
}
if (*move == 'a') {
goto ten;
}
if (*move == 's') {
goto fifteen;
}
if (*move == 'd') {
goto twelve;
}
twelve:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ===O \n ==== \n";
std::cin >> move;
if (*move == 'w' ) {
goto eight;
}
if (*move == 'a') {
goto eleven;
}
if (*move == 's') {
goto sixteen;
}
if (*move == 'd') {
goto twelve;
}
thirteen:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ==== \n O=== \n";
std::cin >> move;
if (*move == 'w' ) {
goto nine;
}
if (*move == 'a') {
goto thirteen;
}
if (*move == 's') {
goto thirteen;
}
if (*move == 'd') {
goto fourteen;
}
fourteen:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ==== \n =O== \n";
std::cin >> move;
if (*move == 'w' ) {
goto ten;
}
if (*move == 'a') {
goto thirteen;
}
if (*move == 's') {
goto fourteen;
}
if (*move == 'd') {
goto fifteen;
}
fifteen:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ==== \n ==O= \n";
std::cin >> move;
if (*move == 'w' ) {
goto eleven;
}
if (*move == 'a') {
goto fourteen;
}
if (*move == 's') {
goto fifteen;
}
if (*move == 'd') {
}goto sixteen;
sixteen:
move[100] = 0;
std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ==== \n ==== \n ==== \n ===O \n";
std::cin >> move;
if (*move == 'w' ) {
goto twelve;
}
if (*move == 'a') {
goto fifteen;
}
if (*move == 's') {
goto sixteen;
}
if (*move == 'd') {
goto sixteen;
}
return 0;
}
//运动测试
#包括
#包括
内部主(空){
字符移动[101];
一:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤一号;
}
如果(*移动=='a'){
后藤一号;
}
如果(*移动=='s'){
后藤五号;
}
如果(*移动=='d'){
转到第二;
}
二:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
转到第二;
}
如果(*移动=='a'){
后藤一号;
}
如果(*移动=='s'){
后藤六号;
}
如果(*移动=='d'){
后藤三号;
}
三:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤三号;
}
如果(*移动=='a'){
转到第二;
}
如果(*移动=='s'){
后藤七号;
}
如果(*移动=='d'){
后藤四号;
}
四:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤四号;
}
如果(*移动=='a'){
后藤三号;
}
如果(*移动=='s'){
后藤八;
}
如果(*移动=='d'){
后藤四号;
}
五:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤一号;
}
如果(*移动=='a'){
后藤五号;
}
如果(*移动=='s'){
后藤九号;
}
如果(*移动=='d'){
后藤六号;
}
六:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
转到第二;
}
如果(*移动=='a'){
后藤五号;
}
如果(*移动=='s'){
转到十;
}
如果(*移动=='d'){
后藤七号;
}
七:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤三号;
}
如果(*移动=='a'){
后藤六号;
}
如果(*移动=='s'){
后藤十一;
}
如果(*移动=='d'){
后藤八;
}
八:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤四号;
}
如果(*移动=='a'){
后藤七号;
}
如果(*移动=='s'){
后藤十二;
}
如果(*移动=='d'){
后藤八;
}
九:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤五号;
}
如果(*移动=='a'){
后藤九号;
}
如果(*移动=='s'){
后藤十三;
}
如果(*移动=='d'){
转到十;
}
十:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤六号;
}
如果(*移动=='a'){
后藤九号;
}
如果(*移动=='s'){
后藤十四;
}
如果(*移动=='d'){
后藤十一;
}
十一:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤七号;
}
如果(*移动=='a'){
转到十;
}
如果(*移动=='s'){
转到15;
}
如果(*移动=='d'){
后藤十二;
}
十二:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤八;
}
如果(*移动=='a'){
后藤十一;
}
如果(*移动=='s'){
后藤十六;
}
如果(*移动=='d'){
后藤十二;
}
十三:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤九号;
}
如果(*移动=='a'){
后藤十三;
}
如果(*移动=='s'){
后藤十三;
}
如果(*移动=='d'){
后藤十四;
}
十四:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
转到十;
}
如果(*移动=='a'){
后藤十三;
}
如果(*移动=='s'){
后藤十四;
}
如果(*移动=='d'){
转到15;
}
十五:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤十一;
}
如果(*移动=='a'){
后藤十四;
}
如果(*移动=='s'){
转到15;
}
如果(*移动=='d'){
}后藤十六;
十六:
move[100]=0;
std::cout>move;
如果(*移动=='w'){
后藤十二;
}
如果(*移动=='a'){
转到15;
}
如果(*移动=='s'){
后藤十六;
}
如果(*移动=='d'){
后藤十六;
}
返回0;
}
首先,你要为玩家可以做的每个动作创造条件吗?
那么,如果你想在标准输入上只有1个字符,你可以使用函数<强> GETCHAR > C或C++中的相同。 我会在这个网站上介绍你:或者
如果您想避免按“回车”,可以进入原始模式system ("/bin/stty raw");
==>这将直接在stdin中发送所有字符
[C] 例如:
#include <stdio.h>
int main ()
{
int c;
puts ("Enter text. Include a dot ('.') in a sentence to exit:");
system ("/bin/stty raw");
do {
c=getchar();
putchar (c);
} while (c != '.');
system ("/bin/stty cooked");
return 0;
}
#包括
int main()
{
INTC;
puts(“输入文本。在要退出的句子中包含一个点(“.”)”;
系统(“/bin/stty raw”);
做{
c=getchar();
普查尔(c);
}而(c!=');
系统(“/bin/stty”);
返回0;
}
如何获取单个字符而无需按return键取决于平台。你是为哪个平台写的,或者,在每个字符后要求返回是可以接受的?另外,对于goto
s,在每个位置重复所有代码似乎不是有点混乱吗?goto的问题是,它使阅读代码变得非常乏味。要理解你的代码,你必须阅读很多遍才能跟上流程。这通常也是缺乏对更好地完成工作的工具的理解的症状。与其他工具相比,goto是更好的设计选择的情况即使没有也很少见。在您的情况下,甚至不清楚您使用goto想要实现什么。我建议你永远不要使用它,直到你对这种语言非常熟悉。那你就“成熟”到可以正确使用它了(如果有的话)我们还没有被介绍到笛卡尔(x,y)坐标系吗?试试诅咒库。哎哟,意外地向上投票:(你应该介绍的。我相信他想在按下字符后立即获得输入,而不是在按下enter
之后。所以,这样做吧