C++ C/C++;即时输入

C++ C/C++;即时输入,c++,c,C++,C,好吧,我已经知道一些人会生气,我问这个问题是因为已经有太多关于它的东西了,但我似乎能理解它;如何在C/C++中获得即时输入(单个字符)?我正在慢慢地走向一款老派的“塞尔达传奇”游戏,到目前为止,这个动作看起来不错,但即时输入确实会让它变得更好 我也确信我对字符及其旁边的数字做了一些错误的处理,如果有人能帮助我,或者提供一个教程或链接,我将非常感激 另外,在研究“goto”函数时,我发布了很多人说它很混乱和混乱的消息。是的,这有点费时,但至少对我来说并不凌乱或混乱。有谁能解释一下对它的仇恨 不管怎

好吧,我已经知道一些人会生气,我问这个问题是因为已经有太多关于它的东西了,但我似乎能理解它;如何在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
之后。所以,这样做吧