[LANGUAGE C ocultar la entrada]

Abaze -  
 ajslenegus -
Bonjour,
me gustaría saber si existe una manera de ocultar la entrada con el lenguaje C.

En realidad, estoy desarrollando una aplicación (...piedra, papel, tijera...jaja es para una acción profesional :( )

Y en la parte Jugador 1 VS Jugador 2, sería genial que cada jugador pudiera ingresar su elección sin que fuera visible en la pantalla......si no, ¡hola a las trampas jaja (eso vale -5 en el BTS y por eso estoy nervioso lol)

Eso es todo, si tienen algún truco estoy abierto a recibirlo

Gracias de antemano @+++

14 respuestas

fafani86
 
Hola,
por favor, ¿quién puede ayudarme? Mañana por la mañana tengo un trabajo práctico evaluado en programación: escribir una función SAISIR_PASSWD que permita ingresar una contraseña mostrando **** en la pantalla. La contraseña será cifrada antes de ser almacenada.
2
NoirDelire Mensajes publicados 8 Estado Miembro 4
 
¿Qué herramienta usas? ¿Visual C++?

NoirDélire
1
Luffy =)
 
Hola =)

Quizás podrías asimilar la elección a la presión de una tecla y detectarla sin mostrarla con la función (bueno, si usas VC++) PreTranslateMessage(). Y colocar las teclas una al lado de la otra para limitar los riesgos de trampa (bueno, lo mejor sería que las teclas fueran configurables).

++
1
abaze
 
Sí, exacto, utilizo VC++.....pero no sé mucho sobre configuración...pero voy a buscar cómo se utiliza la función PreTranslateMessage( ).
Gracias por tu ayuda ;) ++
1
abaze
 
...si puede ayudar a ver mejor a dónde quiero llegar:
Verán a continuación el menú del jugador... y estoy tratando de encontrar un medio para poder ocultar su entrada

int submenu()
{
char y;

printf("--Jugador 1--\n");

printf("___________________________________\n");
printf("--HAGAN SU ELECCIÓN--\n\n");
printf("[1] Piedra\n");
printf("[2] Papel\n");
printf("[3] Tijeras\n");
printf("___________________________________\n");
puts("¿Cuál es su elección:\n");
scanf("%c",&y);

while(y<49 || y>51)
{ printf("¡Elección incorrecta!\n");
printf("Por favor, vuelva a ingresar su elección: ");
scanf(" %c",&y);
system("cls");
}

return y;
}

Estoy mirando las funciones de detección de teclas del teclado....:O no es tan evidente como parece (jaja estoy perdido, lo admito)

Bueno, si saben cómo hacerlo, simplemente un pequeño poco de ayuda no me vendría mal, jaja
gracias de antemano
1
SKZ
 
Sí, con getch() sí es equivalente, es totalmente posible.
1
kij_82 Mensajes publicados 4102 Fecha de registro   Estado Colaborador Última intervención   857
 
¡Bueno, aquí estamos! ¡Finalmente, y pensar que estaba a solo 5 letras de nosotros!
¡Gracias entonces a SKZ!
:)

--
~ iclic @ izquierda, iclic, iclic @ derecha, iclic, iclic
y no hay ningún problema, caballero! ~
0
SKZ > kij_82 Mensajes publicados 4102 Fecha de registro   Estado Colaborador Última intervención  
 
Ningún mérito, fue gravachol quien lo dijo primero ;°)
0
abaze
 
Sí, gracias a la gente,
pero dejé de lado, preferí desarrollar mi programa en Windows con <conio.h> (lo que resuelve todos los problemas de golpe, ¡PAN!!!! jaja) porque se complica demasiado en Linux, probé <curses.h> y <ncurses.h> y está claro que es MUY MOLESTO!!
bueno, les agradezco de nuevo por sus respuestas, al menos aprendí algunas cosas a pesar de todo jaja
¡bueno, buena continuación ;) ++
1
Luffy =)
 
lo siento, no había entendido que estabas haciendo tu juego en la consola, creía que habías hecho un cuadro de diálogo.

además, acabo de mirar en la msdn y la función PreTranslateMessage() pertenece a la clase CWnd, así que es C++. Voy a ver si hay otra manera.

++
0
abaze
 
lol Sí, mi juego se desarrolla en la consola (no me he complicado la vida lol ...:( )

Gracias por tu ayuda Luffy ;)

...ahora solo me queda la parte de "ocultar la entrada del jugador" y mi AP estará casi terminado! ¡espero que sí lol

+++
0
Ravachol Mensajes publicados 568 Estado Miembro 120
 
Hola,
Si no necesitas necesariamente validar la entrada con "Enter", puedes intentar con la función getch que se encuentra en el encabezado conio.h.
No conozco muy bien el entorno de Windows, así que no estoy seguro sobre el encabezado, verifica eso ;-)

A++
--
La libertad no se da, se toma...
0
kij_82 Mensajes publicados 4102 Fecha de registro   Estado Colaborador Última intervención   857
 
No creo que eso sea posible (ocultar la escritura en la consola, ya que eso no forma parte de tu programa sino del de la consola - si entiendes lo que quiero decir con eso). Bueno, si encuentras algo, háznoslo saber.

gracias

++
--
~ clic @ izquierda, clic, clic @ derecha, clic, clic
¡y no hay bog, señor! ~
0
abaze
 
¡Wéééé, gracias chicos, con getch() funciona tranquilo!
Jajaja, pero estoy muy disgustado...
La aplicación la hice en casa bajo Windows XP con Visual C++...
Pero en el liceo tengo que trabajar bajo Linux Debian...
Jaja, y como por arte de magia la librería <conio.h> (que contiene la famosa función getch()) no existe en Linux (jajajaja, en serio, me vuelvo loco)... He buscado en Internet, y dicen que el equivalente de <conio.h> en Linux es <ncurses.h>... lo he probado, pero bueno :( la función getch() aún no es reconocida

Jaja, parece que esto nunca va a terminar!! Continúo mis investigaciones para ver más en detalle el <ncurses.h>

Bueno, vuelvo a eso, y gracias de nuevo por sus sugerencias, en serio, cómo ayuda a avanzar rápido ;)
A++++
0
Ravachol Mensajes publicados 568 Estado Miembro 120
 
Hola,
encontrarás un tutorial sobre ncurses aquí: http://ariffart.club.fr/sommaire01.html#planpgrc

A++
--
La libertad no se da, se toma...
0
tafiscobar Mensajes publicados 1281 Estado Colaborador 177
 
Hola, bajo Linux/Unix es posible ocultar lo que el usuario escribe en el teclado con la API POSIX. Sin embargo, no es fácil. El principio es que un terminal recibe los datos del teclado, pero se almacenan en una cola. Si la opción ECHO está activada, todo lo que escribas se muestra. Mira la página del manual de termios, la tienes aquí http://www.opengroup.org/onlinepubs/009695399/basedefs/termios.h.html
--
tafiscobar "lou waye def bopame"
la nulidad no existe, la ignorancia sí, ¡ah, supongo!!!
0
SKZ
 
Sí. O tal vez puedes usar el mismo código, con:
 #ifdef _WIN #include <conio.h> #endif // algún código ... #ifdef WIN a = getch(); #elif a = getchar(); // función de stdio.h #endif 


Estaba pensando, tal vez se pueda utilizar getchar() en ambos casos?
0
ajslenegus
 
Merci, le gars, ça m'aide beaucoup. J'avais le même problème qu'Abaze.
0