Programación General > C/C++

 Re: ¿Como saber si na tecla esta pulsada?

<< < (2/3) > >>

Arleko:
Pasame el codigo deel minijuego,,, para ver que aprendo...:D

Murciego:
Aun no esta acabado, me falta lo del teclado y hacer el algoritmo para que la máquina juegue y algun detallin sin importacia.

Si quieres te lo puedo pasar asi, o cuando lo termine

Un saludo

wimogan:
Hola:

Ok, si realmente quieres que al mantener una tecla pulsada el muñeco o lo que sea se mueva a la izquierda, te recomiendo que utilices "getch", que lo puedes encontrar en la "conio.h" si usas windows o en la "curses.h", "ncurses.h",(me parece que existe otra libreria que no recuerdo cual), si utilizas linux.

Suporngo que para moverte utilizarias "gotoxy" de la "conio.h" si trabajas en windows.

Para linux podrias usar "move", "wmove", "otras", de la "curses.h" y "ncurses.h".

Ah, en Linux ,que yo sepa, no existe ninguna libreria que tenga definido el "gotoxy". Pero lo puedes usar sin necesidad de ninguna libreria, mediante la directiva o instruccion:

#define gotoxy(x,y);printf("33[%d;%df",x,y);

Un ejemplo de forma rapida podria ser:

Para linux:

#include <stdio.h>
#include <ncurses.h>
#define KEY_ESC '33'

main ()
{

     int c,x=1,y=1;

     initscr();     //Inicializo Ncurses.
     keypad(stdscr,TRUE);    //Permito el mapeo de las teclas de funciones en la pantalla.
     
     while ((c=getch())==KEY_RIGHT)    //Leo la tecla presionada.
      {
           mvprintw(x,y,"A");   //Me muevo a las coordenadas (x,y) e imprime la letra "A". (En tu caso el muñeco o lo que sea).
           
          if (y<=10) y=y+1;   //Aumenta las columnas.
          else {x=x+1;y=1;printw("n");}   //Aumenta la fila, hace la columna 1 y baja a una nueva linea.
      }
      refresh();   //Refresco de pantalla para sacar los caracteres.
      endwin();   //Finalizar Ncurses.

}

Lo compilas:  gcc -o nombre nombre.c -l ncurses

Bueno, espero haberte respondido.

Un saludo y cualquier cosa avisas.

Murciego:
Hola wimogan

El problema de la solución que me dices es que si poner getch(), el sistema se para hasta que se pulse una tecla, y eso no es lo que yo quiero.

Lo que yo quiero es saber que teclas estan pulsadas y que teclas no,y no esperar a que se pulse una tecla. No se si me explico bien.

La solución dada por kenshin es la ideal, si la pudiera hacer funcionar. Alli se tiene una matriz teclado[] que se actualiza cuando se lo dices y que te dice si la tecla i esta presionada o no lo esta.


Otra solución que he visto por el codigo de algunos juegos, es usar la función kb??? pongo ? porque no me acuerdo el nombre exacto, que devuelve 0 o 1 dependiendo de si hay alguna tecla pulsada. Entonces si hay una tecla pulsada se usa getche() para obtenerla. Pero el problema es...¿que pasa si hay tres teclas presionadas a la vez?

La solución es hacer funcionar el programilla que viene en teclado.doc de kenshin, pero ese tipo de programa a mi se me escapa. No entiendo bien lo que hace.

Si alguien es capaz de hacerlo funcionar se lo agradecería mucho.

Un saludo y gracias a todos


Javier Murciego

wimogan:
Ok, en ese caso no tengo una solucion inmediata a tu problema, pero tal vez prodria ayudarte diciendote que la funcion que empieza con "kb" que dices que se te olvido, posiblemente sea la "kbhit" de la "conio.h" para windows, y con respecto a la solucion de kenshin, voy a tratar de interpretarla a ver si la entiendo y te puedo ayudar.

Dicen que dos cabezas pienzan mejor que una!.

Pero bueno, aun asi, trata de ver si la funcion "kbhit" te puede ayudar en lo que el hacha va y viene.

Mientras tanto, suerte.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa