Ir al contenido

publicidad
publicidad

Foto

mi primer juego: mastermind [c++, consola][juego cutre]


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
108 respuestas en este tema

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#61

Escrito 24 abril 2009 - 16:43

Mmm... en .net el evento que sirve para eso es el Keypress. A ver que busque por google a ver que te encuentre algo:

Prueba esto a ver si nos quitamos de encima eso:
---------------------------------------------------------------------------
Re: equivalente a keypress??
« Respuesta #2 en: 22 Julio 2008, 03:07 »

Amiga, yo ocupo Dev-C++, ahi almenos hay un comando llamado kbhit(), que detecta la tecla presionada.
Ejemplo:
[code:1]

if(!kbhit())
{
//Cuerpo del programa...
}
[/code]

-------------------------------------------------------------------------

Y en este hilo
http://www.velocityr...0-keypress.html

hablan del conio.h y el getch() y el geche()

A ver si lo sacamos adelante.

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#62

Escrito 24 abril 2009 - 16:52

yo tambien uso el dev++
pruebo con eso a ver

edito: se me abra lo de conio.h como antes :S
edito 2:
si pongo
if(!kbhit())
{
if(kbhit()=='s')
{

y lo que sigue me compila pero petardea la pantalla como cuando mueves al personaje, pero si pulsas s no se mueve

-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui



  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#63

Escrito 24 abril 2009 - 17:06

En vez de pasarlo al programa hazte otro proyecto para hacer las pruebas y ver como va.

De todas formas mirando de nuevo en google escribiendo el comando...
Hala, mira en cconclase:

http://www.conclase....n.php?fun=kbhit

Ahi en ese ejemplo hacen todo esto con getch y kbhit... Asi que mira a ver ;)

Un saludo.

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#64

Escrito 24 abril 2009 - 17:19

pues e copiado el ejemplo ese y ni compila :S
edite ese archivo
lo puse asi
[code:1]#include
#include
#include
using namespace std;


int main() {
cout <<"Ejemplo de \"kbhit\"\r\n\r\n" < cout<< "El programa esta a la espera de registrar una tecla pulsada.\r\n" < while( !kbhit() );
cout<< "El caracter es "< getch();
cout <<"Pulsa una tecla para continuar...\r\n";
getch();

return 0;
}[/code]
pero siempre me devuelve 0 pulse la tecla que pulse, eso si no tengo que pulsar enter

-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui



  • machakito

  • Adramalech

  • vida restante: 100%
  • Registrado: 25 ago 2007
  • Mensajes: 1.345
#65

Escrito 24 abril 2009 - 18:22

pues e copiado el ejemplo ese y ni compila :S
edite ese archivo
lo puse asi
[code:1][...]int main() {
cout <<"Ejemplo de \"kbhit\"\r\n\r\n" < cout<< "El programa esta a la espera de registrar una tecla pulsada.\r\n" < while( !kbhit() );
cout<< "El caracter es "< getch();
cout <<"Pulsa una tecla para continuar...\r\n";
getch();

return 0;
}[/code]
pero siempre me devuelve 0 pulse la tecla que pulse, eso si no tengo que pulsar enter

Hola.

Me parece que no has entendido lo que hace kbhit (ni lo que hace "\r", "\n" y "!"). Te pego lo que deberías haber leído del enlace que te ha puesto Ellolo17.

Kbhit()
Revisa si una tecla pulsada está disponible. Cualesquier pulsadas disponibles pueden ser recogidas con las funciones getch o getche.

Valor de retorno:
La función kbhit retorna 0 si no se ha registrado una pulsada de tecla; si hay una disponible, entonces el valor retornado es distinto a cero.


[code:1]while( !kbhit() );[/code]
Hace un bucle infinito mientras no se pulse una tecla (la que sea) y, como dice la ayuda, se recoge con getch o getche. Una vez se ha pulsado una tecla sale del bucle.

Esta línea está mal.
[code:1]cout<< "El caracter es "<Si kbhit() devuelve 1 cuando detecta la pulsación de una tecla... not(1)=0.

Ni que decir tiene que todos los "\r\n" sobran.

Sinceramente, yo dejaría de momento el problema de la pulsación de la tecla y avanzaría en el desarrollo del programa.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#66

Escrito 24 abril 2009 - 18:46

Tiene razon... Recuerda que hace nada empezaste con el "hola mundo" y desde ahi a esto has pegado un salto ENOOOORME.

Mi consejo es que des un repasito a las bases y asi se quede todo lo visto mejor. Seguramente ya conoces bastantes cosas de aqui, pero podras asentar bien los conocimientos y volver a enfrentarte a este codigo con una bandana en la cabeza y sin problemas! ^^

http://c.conclase.net/curso/index.php

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#67

Escrito 24 abril 2009 - 18:53

si las bases creo que las se aunque seguramente empezare otra vez por hay
se que la ! es la negacion lo contrario de:
do
{
}
while(X !=p)
por ejemplo
la \n es pal salto de linea y la \r no se
dare una vuelta otra por las bases


-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui



  • Gagle

  • Yojimbo

  • vida restante: 100%
  • Registrado: 22 mar 2008
  • Mensajes: 9.856
#68

Escrito 24 abril 2009 - 19:18

Me he bajado el mastermind y no me lo ejecuta ni en linux ni en vista XD. Puedes poner el codigo fuente?

Como odio la web cconclase. Desde el primer dia que la vi me hizo daño a la vista su aspecto visual y la forma en la que estan organizadas los temas. Utiliza mejor http://www.cplusplus.com/. Es un consejo!


"640KB tendrían que ser suficientes para cualquiera."


Bill Gates, 1981.
¿Será cierto?



  • machakito

  • Adramalech

  • vida restante: 100%
  • Registrado: 25 ago 2007
  • Mensajes: 1.345
#69

Escrito 24 abril 2009 - 19:31

si las bases creo que las se aunque seguramente empezare otra vez por hay
se que la ! es la negacion lo contrario de:
do
{
}
while(X !=p)
por ejemplo
la \n es pal salto de linea y la \r no se
dare una vuelta otra por las bases

Hola.

Es que, cuando nos pones los códigos para que te ayudemos, no lo parece... O, a lo mejor, si que lo sabes pero no entiendes bien su aplicación.

Estos lenguajes son muy intuitivos y, para la poca complejidad del programa que estás haciendo, con que sepas manejar bien (pero bien) cuatro estructuras de control y cuatro operadores básicos puedes hacer grandes cosas.

Yo entiendo que, conforme te van saliendo las cosas, quieras hacer programas mas y mas complejos, pero primero deberías haber hecho cientos de programas "chorra" machacando los bucles, condicionales, etc.


Mi consejo (si es que sirve de algo) es que cuando emplees funciones propias de C/C++ busques información sobre la declaración de sus cabeceras, mires que parámetros recibe y los que devuelve, los tipos, etc. Aprenderás un montón y evitará que te quedes estancado en muchas ocasiones.

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#70

Escrito 24 abril 2009 - 20:34

Me he bajado el mastermind y no me lo ejecuta ni en linux ni en vista XD. Puedes poner el codigo fuente?

Como odio la web cconclase. Desde el primer dia que la vi me hizo daño a la vista su aspecto visual y la forma en la que estan organizadas los temas. Utiliza mejor http://www.cplusplus.com/. Es un consejo!




yo tambien la odio XD
pero es la que mas cosas tiene
echare un vistazo a ella.
raro lo del mastermind a los que se lo e pasado si les funciona, en linux no funcionara por que tira de sistema :S pero en vista...

para lo que dices de practicar, hace una semana subi este archivo con lo que habia echo. ahora tengo mas pero no me apetece subirlos

http://rapidshare.co...__ejercicio.rar

edito: la pag esta en ingles :S

-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui



#71

Escrito 24 abril 2009 - 22:11

Hola. Prueba ésto:
#include
*Recoge una pulsación de tecla, define ésta función al principio.*/
char getkey(void)
{
return (char) getch();
}

Luego define c así : char c;
Más tarde en el bucle principal haces ésto:

c = getkey(); /*compruebo la pulsación de una tecla*/
switch©
{
case '4':
instrucciones
break;
case 'a':
instrucciones
break;
default:
break;
}
} while (c != 'Q');
Si pulsas Q (en mayúsculas) terminas.

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#72

Escrito 25 abril 2009 - 12:06

buenas ya se donde puede estar el fallo
http://c.conclase.ne...p.php?art=conio

irad
pone que da problemas con mi compilador, ago lo que pone hay o directamente elijo otro compilador


-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui



  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#73

Escrito 25 abril 2009 - 15:26

Alguna API gratuita habra que haga lo mismo por ahi, busca a ver.

Si no sale nada, pues habra que cambiar de compilador o hacer lo que te dice ahi -a tu eleccion-

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#74

Escrito 25 abril 2009 - 15:57

Bueno, me he tomado una pequeña licencia (espero que al Sr. moderador no le moleste) y después del cafelito de comer he echo esto: (los sábados lluviosos son muy aburridos ;)

Imagen Enviada

El obejtivo es salir de una serie de laberintos, dónde la X marca la casilla de salida.

Imagen Enviada

Sin embargo, para ponerlo un "poco" mas difícil, existen una serie de puertas (marcadas con el caracter #). Dichas puertas solo se pueden abrir con una determinada llave (marcadas en el mapa con el carácter =):

Imagen Enviada

Al llegar a la posición final nos mosrtará cuantos movimientos hemos necesitado para alcanzar la meta:

Imagen Enviada

El juego solo tiene dos niveles. Este es el mapeado del nivel 2:

Imagen Enviada

No he diseñado más niveles porque el diseño no es lo mio ;)

De todos modos, en el código podreís ver que añadir un nuevo nivel es de lo más sencillo y lo único que hay que hacer es añadir mas "casos" en el método CreaMapa. El resto del código no hay que tocarlo para nada.
Nota: No he querido meter ficheros (que hubiese sido lo suyo) para no complicar más el código.

Código Fuente: http://ollydbg.pastebin.com/f267ab90a
Binario: Descarga desde aquí (10 KBytes. Requiere .NET Framework 3.5)

Saludos.

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#75

Escrito 25 abril 2009 - 16:20

Alguna API gratuita habra que haga lo mismo por ahi, busca a ver.

Si no sale nada, pues habra que cambiar de compilador o hacer lo que te dice ahi -a tu eleccion-


eso lo que digo mejor cambiar de compilador que andar toqueteando para que quede medio mal :S
que compiladores a si buenos hay?

-----------------------------------------------------------------------------
Imagen Enviada
Imagen Enviada
mi dibujo del killzone2 pintando aqui




Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad