Autor
|
Tema: Ayuda con getchar (Leído 3,360 veces)
|
prometheus48
Desconectado
Mensajes: 176
Making a Distro...
|
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: #include <cstdlib> #include <iostream> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { int elec; int level = 1; string dir; bool isRunning = true;//To finish the program when the player dies //Introduction system("title Lost!-PandoraX Studios"); cout<<"Welcome to Lost!!(0.1)You are a beta tester!"; cout<<"\n"; cout<<"This is a text game adventure!"<<endl; cout<<"Created by Samuel Dominguez(PandoraX)"; cout<<"\nPandoraX!"; cout<<"\n\n"; cout<<"Press any key to start..."; getchar(); //Main Game Loop while (isRunning==true) { if(level==1) { cout<<"\nYou are sitting on the floor, all is full of snow.\n"; cout<<"and the floor is a mixture of ice and snow.\n"; cout<<"You look straight to the front, and you\n"; cout<<"see a polar bear running in your direction\n"; cout<<"Choices:\n"; cout<<"1)Run!\n"; cout<<"2)Cut your arm and give to the bear\n"; cout<<"3)Fight\n"; cout<<"4)Domesticate it\n"; cout<<">"; level++; cin>>elec; } //1.1 if(elec==1) { cout<<"In which direction?(north, west, east, south)\n"; cout<<">"; cin>>dir; if(dir=="north") { cout<<"You runned in the direction were the polar\n"; cout<<"bear was!, the bear killed you...\n"; cout<<"\n"; cout<<"To play again just run Lost! again.\n"; cout<<"Press any key to exit..."; getchar(); isRunning=false; } } } return 0; } [/code=cpp] Quisiera solucionar este problema este año XD. Muchas gracias, Salu2 Feliz Naviadad y.. Feliz 2012!
|
|
« Ú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
Mensajes: 248
|
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: while(getchar() != '\n'); 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
|
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
Mensajes: 176
Making a Distro...
|
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
Mensajes: 3.158
I'Love...!¡.
|
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
Mensajes: 248
|
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: 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
|
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
Mensajes: 176
Making a Distro...
|
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
Mensajes: 248
|
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
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
getchar() != EOF
Programación C/C++
|
Treppe
|
6
|
15,473
|
20 Julio 2011, 21:48 pm
por rir3760
|
|
|
ayuda con getchar
Programación C/C++
|
ometeotl
|
6
|
5,442
|
10 Octubre 2011, 19:46 pm
por ometeotl
|
|
|
Borrar buffer , como funciona getchar
Programación C/C++
|
Jomad205
|
2
|
10,596
|
13 Noviembre 2012, 17:23 pm
por Jomad205
|
|
|
Ayuda con getchar:(
Programación C/C++
|
TopoJunior
|
5
|
3,679
|
14 Febrero 2013, 20:53 pm
por durasno
|
|
|
Problema con while y getchar.
Programación C/C++
|
Spinerker
|
3
|
2,818
|
17 Octubre 2013, 14:18 pm
por Eternal Idol
|
|