elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con getchar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con getchar  (Leído 3,089 veces)
prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Ayuda con getchar
« en: 31 Diciembre 2011, 18:58 pm »

Hola,

Estaba haciendo una aventura de texto y tengo un problema con el bucle.
Miren, hay un bucle en el juego, y dentro hay varios if's, hay un if que dice que si el
jugador elige la opcion de ir al Norte, el juego termina pues se atopado con un oso polar. Entonces lo que pasa esque el bucle tiene al condicion de que mientras la variable booleana isRunning sea true corra, pero en ese if tengo puesto texto, para informar al jugador de lo que ha pasado, despues hay un getchar(); y DESPUES del getchar dice:
isRunning=false;
y lo que pasa esque cuando le dices al juego que quieres ir al norte, el juego se cierra, como si no ejecutara el getchar, y si funciona si pongo un system pause,
no se porque, bueno aqui esta el codigo:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.    int elec;
  10.    int level = 1;
  11.    string dir;
  12.  
  13.  
  14.    bool isRunning = true;//To finish the program when the player dies
  15.    //Introduction
  16.    system("title Lost!-PandoraX Studios");
  17.    cout<<"Welcome to Lost!!(0.1)You are a beta tester!";
  18.    cout<<"\n";
  19.    cout<<"This is a text game adventure!"<<endl;
  20.    cout<<"Created by Samuel Dominguez(PandoraX)";
  21.    cout<<"\nPandoraX!";
  22.    cout<<"\n\n";
  23.    cout<<"Press any key to start...";
  24.    getchar();
  25.  
  26.    //Main Game Loop
  27.    while (isRunning==true)
  28.    {
  29.    if(level==1)
  30.    {
  31.    cout<<"\nYou are sitting on the floor, all is full of snow.\n";
  32.    cout<<"and the floor is a mixture of ice and snow.\n";
  33.    cout<<"You look straight to the front, and you\n";
  34.    cout<<"see a polar bear running in your direction\n";
  35.    cout<<"Choices:\n";
  36.    cout<<"1)Run!\n";
  37.    cout<<"2)Cut your arm and give to the bear\n";
  38.    cout<<"3)Fight\n";
  39.    cout<<"4)Domesticate it\n";
  40.    cout<<">";            
  41.    level++;
  42.    cin>>elec;          
  43.    }
  44.  
  45.  
  46.    //1.1
  47.    if(elec==1)
  48.    {
  49.  
  50.               cout<<"In which direction?(north, west, east, south)\n";
  51.               cout<<">";
  52.               cin>>dir;
  53.               if(dir=="north")
  54.               {
  55.               cout<<"You runned in the direction were the polar\n";
  56.               cout<<"bear was!, the bear killed you...\n";
  57.               cout<<"\n";
  58.               cout<<"To play again just run Lost! again.\n";
  59.               cout<<"Press any key to exit...";
  60.               getchar();
  61.               isRunning=false;
  62.  
  63.  
  64.               }
  65.    }
  66.  
  67. }  
  68. return 0;
  69.  
  70. }
  71. [/code=cpp]
  72. Quisiera solucionar este problema este año XD.
  73.  
  74. Muchas gracias,
  75. Salu2
  76. Feliz Naviadad
  77. y..
  78. Feliz 2012!  
  79.  
  80.  
  81.  


« Última modificación: 31 Diciembre 2011, 19:07 pm por prometheus48 » En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Ayuda con getchar
« Respuesta #1 en: 31 Diciembre 2011, 19:34 pm »

Hmmm... que código más desordenado.

La función getchar() no funciona porque no se limpió el salto de linea, entonces getchar() procede a leer ese salto de línea (ENTER), por tal, sigue el programa con la siguiente función, como no hay ninguna, simplemente se cierra.

Remplaza entonces, el getchar() que "no te funciona" por este par de líneas:

Código
  1. while(getchar() != '\n');
  2. getchar();

Con esto, se "limpian" los saltos de línea y procede a esperar como de costumbre.

Salud.


« Última modificación: 31 Diciembre 2011, 19:36 pm por Unbr0ken » En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Re: Ayuda con getchar
« Respuesta #2 en: 31 Diciembre 2011, 20:02 pm »

Muchas Gracias.!
Oye, respecto al código desordenado, a que te refieres?¿Qué hago mal?
¿Como podría mejorar?
Gracias
En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda con getchar
« Respuesta #3 en: 31 Diciembre 2011, 20:47 pm »

si estas en C++ usa

cin.get();

y para lo del getchar()... usa fflush() para forzar a stdin (no es recomendable...)

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Ayuda con getchar
« Respuesta #4 en: 31 Diciembre 2011, 21:11 pm »

Muchas Gracias.!
Oye, respecto al código desordenado, a que te refieres?¿Qué hago mal?
¿Como podría mejorar?
Gracias

No haces nada mal, pero... hay demasiados saltos de línea fuera de lugar, combinas los métodos para saltar líneas sin sentido, déjate de eso, usa el \n o endl cuando sea realmente necesario.

Hay partes del código bastante inútiles, como los parámetros que pides en la función main:

Código
  1. int main(int argc, char *argv[])

Ni si quiera los usas, sí... es la forma estándar de declarar un punto de entrada, pero si no vas a usar los parámetros que pides, sería más "limpio" dejarlo sin ellos.

Usas muchísimos cout seguidos, cuando con un par estaría más que bien. Es muy inútil hacer tantas llamadas a una misma función cuando puedes hacer muchas menos con el mismo resultado.

Ya por lo demás, con el tiempo te darás cuenta e irás mejorando poco a poco, por mi lado, no soy un experto en C++, llevo unas semanas de haberme iniciado, pero desde C# me traje muy buenos hábitos de programación.
« Última modificación: 31 Diciembre 2011, 21:14 pm por Unbr0ken » En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Re: Ayuda con getchar
« Respuesta #5 en: 31 Diciembre 2011, 21:27 pm »

Muchas Gracias!
Oye, con lo de cout, se puede utilizar solo una vez?
Osea cout<<"kkkkkkkkkkkkk\nsssssssssssssssss\n";
??
Ah, lo de los parametros los pongo porque son los estandares, y la verdad no se que significan..
¿M epodrias decir para que sirven?
Gracias!
Feliz Año nuevo!
En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Ayuda con getchar
« Respuesta #6 en: 31 Diciembre 2011, 21:36 pm »

Muchas Gracias!
Oye, con lo de cout, se puede utilizar solo una vez?
Osea cout<<"kkkkkkkkkkkkk\nsssssssssssssssss\n";
??
Ah, lo de los parametros los pongo porque son los estandares, y la verdad no se que significan..
¿M epodrias decir para que sirven?
Gracias!
Feliz Año nuevo!

Por supuesto que se puede utilizar solo una vez, el único problema es que puede tornarse demasiado larga la línea a imprimir... pero como es sólo código escrito, no habrá problema alguno.

Ahora, para que te saques todas las dudas de encima, lee este artículo sobre la función main.

Feliz año igualmente ;)...

P.D.: Lee el tema: |Lo que no hay que hacer en C/C++. Nivel basico|.
En línea

Cita de: Snowcrash
Discutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
getchar() != EOF
Programación C/C++
Treppe 6 15,165 Último mensaje 20 Julio 2011, 21:48 pm
por rir3760
ayuda con getchar
Programación C/C++
ometeotl 6 5,159 Último mensaje 10 Octubre 2011, 19:46 pm
por ometeotl
Borrar buffer , como funciona getchar
Programación C/C++
Jomad205 2 10,281 Último mensaje 13 Noviembre 2012, 17:23 pm
por Jomad205
Ayuda con getchar:(
Programación C/C++
TopoJunior 5 3,414 Último mensaje 14 Febrero 2013, 20:53 pm
por durasno
Problema con while y getchar.
Programación C/C++
Spinerker 3 2,618 Último mensaje 17 Octubre 2013, 14:18 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines