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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Juego Ta-Te-Ti (c++) (Problema)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Juego Ta-Te-Ti (c++) (Problema)  (Leído 6,137 veces)
Tengoku

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Juego Ta-Te-Ti (c++) (Problema)
« en: 1 Junio 2010, 03:13 am »

Hola gente, creo dos post casi seguido por dos dudas que no pude solventar a lo largo de mi semana =P. Para empezar, tengo que decir que todavia soy un principiante autodidacta en este tema con pocos conocimientos de programacion.

Tengo el codigo del programa funcionando, pero con un ligero incomveniente de comodidad (en realidad dos). Para empezar explico en sintesis el funcionamiento del juego.

El Ta-Te-Ti es de dos jugadores y funciona con el pad numerico de la derecha, siendo cada numero, la representacion del espacio virtual del "tablero" en cuestion. El asunto esta en que para ingresar una posicion, yo debo presionar el numero y luego apretar enter, para asi poder hacer que el programa continue, borre la pantalla y escriba nuevamente, con el tablero y la posicion elegida. De esta manera es excesivamente antiestiteco y molesto. Me gustaria encontrar la forma de poder hacer que se detecte lo que presione, simplemente apretando el boton, y sin la necesidad de mostrarlo en pantalla.

Para poner un simple ejemplo, propondre el siguiente codigo explicativo

#include <iostream>
#include <stdlib.h>

int main()
{
    using namespace std;
    char q = 'Y';
    while (q == 'Y')
    {
         cout << "Hola" << endl;
         cout << "Quieres leer eso de nuevo? (Y/N)" << endl;
         cin >> q;
         while (q != 'Y' && q != 'N')
         {
               cout << "Por favor, escribe 'Y' para Si, y 'N' para No" << endl;
               cin >> q;
         }
         system("cls");
     }
     return 0;
}

Lo que yo quisiera es que no se muestre que yo teclie "Y" sino que simplemente lo presione y el programa me lo detecte, sin la necesidad de mostrarlo en pantalla o utilizar "Enter".

 Ahora en este programa, mi segundo problema es el siguiente.... si por ejemplo, en vez de apretar Y, N, o K.... escribo "pepe"... el programa me dice 4 veces "Por favor, escribe 'Y' para Si, y 'N' para No"... osea, 1 por cada letra de la palabra. En cambio si yo escribo "peYpe", me escribe dos veces "Por favor, escribe 'Y' para Si, y 'N' para No" y luego se re-ejecuta el programa. Alguien podria decirme una manera de limitar esto...  o quizas, algun metodo mas eficiente para esto?

Desde ya, muchas gracias



   




En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Juego Ta-Te-Ti (c++) (Problema)
« Respuesta #1 en: 1 Junio 2010, 06:18 am »

conio.h

usa getch() :P

(aun que no sera funcional para otras plataformas que no sea Windows)


Edit: Lo mejor seria que hicieras la aplicación con su propia interface gráfica, pero igual la forma mas fácil seria con getch().


« Última modificación: 1 Junio 2010, 06:20 am por Og. » En línea

|-
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Juego Ta-Te-Ti (c++) (Problema)
« Respuesta #2 en: 1 Junio 2010, 06:25 am »

Haz la prueba con getch pero creo que igual debes precionar enter...
En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Juego Ta-Te-Ti (c++) (Problema)
« Respuesta #3 en: 1 Junio 2010, 06:33 am »

Mas bien usar conio no es funcional en ningún sistema. Es obsoleta.

Dicha tarea requiere de funciones especificas del sistema, en Windows puedes hacer con WINAPI algo así:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4.  
  5. int getch(void);
  6.  
  7. int main()
  8. {
  9. char cad[10];
  10. int i;
  11.  
  12.  for(i=0;i<9;i++)
  13.     cad[i]=getch();
  14. cad[i]='\0';
  15.  
  16. cout<<cad<<endl;    
  17. cin.get();
  18. return EXIT_SUCCESS;
  19. }
  20.  
  21. int getch(void)
  22. {
  23.   int car;
  24.   DWORD leidos, modo;
  25.  
  26.   GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &modo);  
  27.   SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), modo & !ENABLE_ECHO_INPUT & !ENABLE_PROCESSED_INPUT);
  28.   ReadConsole(GetStdHandle(STD_INPUT_HANDLE), &car, 1, &leidos, NULL);
  29.   SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), modo);  
  30.   return car;  
  31. }
  32.  


Para Linux tal vez te sirva este link.

Hay mas información al respecto en otros hilos acerca de alternativas para getch.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines