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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como salir del bucle (preferiblemente con algun system())
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como salir del bucle (preferiblemente con algun system())  (Leído 1,160 veces)
alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Como salir del bucle (preferiblemente con algun system())
« en: 23 Octubre 2017, 13:14 pm »

Hola buenas.
Mi problema es que estoy haciendo un función en la que se utilizan las teclas W,A,S,D para moverse por un tablero. La cosa viene cuando intento hacer que al pulsar la telca T salga del programa ( como un boton para salir del juego). Seria facil si la funcion en el main no estuviera dentro de un bucle que le obliga a seguir jugando hasta que la condicon de terminar sea verdadera por medio de otra funcion que revisa si ha terminado el juego. Mi idea era poner algun system () como los system ("pause") pero algo que fuera system ("exit") o algo. Sino tendre que cambiar la funcion para que sea un bool o añadir mas parametros y seria tedioso y bastante largo.

Les comparto la funcion por si les sirve de algo ( recuerden que esta dentro de un while). Ignoren todso los case excepto el case T:
Código:
void EditVector (int ** tablero ,int numfil,int numcol) // en nuestro juego te puedes mover usando las teclas W,A,S,D lo cual nos parece mucho mas comodo
{
char d;
int i,j,aux,j2,f,c;
//system("cls");
for(i=0; i<numfil;i++)
for(j=0;j<numcol;j++)
{
if(tablero[i][j]==0)
{
f=i;
c=j;
}
}
cout<<"Su posicion actual es: ";
cout<<f<<"  "<<c<<endl;
cout<<"Utilize las teclas W,A,S,D para mover el espacio por el tablero."<<endl;
cin>>d;
switch (d)
{
case 'w': case 'W':

if (f==0)
{
cout<<"No se puede realizar el movimiento."<<endl;
system("pause");
break;
}
j2=f-1;
aux=tablero[j2][c];
tablero[f][c]=aux;
tablero[j2][c]=0;
break;
case 's': case 'S':
if (f==numcol-1)
{
cout<<"No se puede realizar el movimiento."<<endl;
system("pause");
break;
}
j2=f+1;
aux=tablero[j2][c];
tablero[f][c]=aux;
tablero[j2][c]=0;
break;
case 'a': case 'A':
if (c==0)
{
cout<<"No se puede realizar el movimiento."<<endl;
system("pause");
break;
}
j2=c-1;
aux=tablero[f][j2];
tablero[f][c]=aux;
tablero[f][j2]=0;
break;
case 'd': case 'D':
if (c==numfil-1)
{
cout<<"No se puede realizar el movimiento."<<endl;
system("pause");
break;
}
j2=c+1;
aux=tablero[f][j2];
tablero[f][c]=aux;
tablero[f][j2]=0;
break;
case 't': case 'T':
system("exit");
break;
}

}


En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Como salir del bucle (preferiblemente con algun system())
« Respuesta #1 en: 23 Octubre 2017, 18:32 pm »

La función EditVector esta a nivel del while ??
Si la respuesta es si, pues yo lo que haría es hacer que EditVector devuelva un "indicador juego", un entero o una cadena, algo como :

Código
  1. int CODIGO_SALIDA = 9;
  2.  
  3. int  EditVector (int ** tablero ,int numfil,int numcol) {
  4. .....
  5. .....
  6.  
  7.          case 't': case 'T':
  8. return CODIGO_SALIDA;
  9.  
  10.  
  11.  
  12. ....
  13.  
  14. int indicador;
  15. while(indicador != CODIGO_SALIDA ){
  16.    indicador = EditVector(... ...);
  17. }
  18.  




En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
alpachino98

Desconectado Desconectado

Mensajes: 37


Valar Morghulis


Ver Perfil
Re: Como salir del bucle (preferiblemente con algun system())
« Respuesta #2 en: 23 Octubre 2017, 19:45 pm »

La función EditVector esta a nivel del while ??

La función esta dentro de un do while con dos condiciones bool y la funcion en principio es un void. Lo que me has pasado es un buen metodo para hacerlo  :D Gracias!

Pero al final lo que he hecho ha sido:
Código:
case 't': case 'T':
system("cls");
cout<<"Gracias por jugar.";
exit(0);
break;

Lo dejo aqui por si le sirve a alguien en un futuro. El exit (0) finaliza el programa directamente sin tener que hacer nada mas, muy simple. Aunque me han dicho que el uso de system () no es muy recomendable no se si con esto ocurrirá lo mismo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Salir de bucle cuando el caracter es un espacio [Resuelta]
Programación C/C++
diegoCmC 8 6,161 Último mensaje 7 Junio 2011, 16:27 pm
por diegoCmC
[QT C++] Como salir del bucle??
Programación C/C++
x7uk 3 2,988 Último mensaje 28 Noviembre 2012, 17:21 pm
por febef
Salir de un bucle while sin pulsar Ctrl + d [getchar -Lenguaje C]
Programación C/C++
NOB2014 2 1,520 Último mensaje 30 Noviembre 2015, 03:09 am
por NOB2014
No consigo salir de un bucle While
Programación C/C++
mario290386 4 1,756 Último mensaje 5 Agosto 2018, 20:35 pm
por mario290386
salir de un bucle presionando la tecla ESC
Programación C/C++
kakshi 2 1,081 Último mensaje 4 Agosto 2019, 21:49 pm
por kakshi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines