Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: safkevin en 8 Mayo 2010, 05:59 am



Título: 3 en raya Help
Publicado por: safkevin en 8 Mayo 2010, 05:59 am
Necesito ayuda no se porque nunca me acepta los movimientos mi programa ya lo revise de arriba a abajo y todo esta bien  :(

Código:
#include <stdio.h>
int main()
{
char c1,c2,c3,c4,c5,c6,c7,c8,c9,movimiento,marcajugador,jugar_otra;
int turno_jugador;
c1='1'; //Inicializacion Variables
c2='2';
c3='3';
c4='4';
c5='5';
c6='6';
c7='7';
c8='8';
c9='9';
turno_jugador=1;
bool juegoterminado(true),juego_ganado(true),movalido;
do{
printf("\t\t\t\t||%c||%c||%c||\n",c1,c2,c3);
printf("\t\t\t\t||+||+||+||\n");
printf("\t\t\t\t||%c||%c||%c||\n",c4,c5,c6);
printf("\t\t\t\t||+||+||+||\n");
printf("\t\t\t\t||%c||%c||%c||\n",c7,c8,c9);
printf("\t\t\t\t||+||+||+||\n\n");
if(turno_jugador==1)//Marca Jugador
{marcajugador= 'X';}
else
{marcajugador= 'O';}
printf("Jugador: %d Movimiento: ",turno_jugador);
do{
scanf("%c",&movimiento);
movalido=true;
//Checar movimientos
if (movimiento == '1' && c1 == '1')
{c1 = marcajugador;}
else if (movimiento == '2' && c2 == '2')
{c2 = marcajugador;}
else if (movimiento == '3' && c3 == '3')
{c3 = marcajugador;}
else if (movimiento == '4' && c4 == '4')
{c4 = marcajugador;}
else if (movimiento == '5' && c5 == '5')
{c5 = marcajugador;}
else if (movimiento == '6' && c6 == '6')
{c6 = marcajugador;}
else if (movimiento == '7' && c7 == '7')
{c7 = marcajugador;}
else if (movimiento == '8' && c8 == '8')
{c8 = marcajugador;}
else if (movimiento == '9' && c9 == '9')
{c9 = marcajugador;}
else {printf("Movimiento Invalido, Intenta Otra Vez\n");}
movalido = false;
  }
while(!movalido);
juegoterminado=false;
juego_ganado=true;
if (c1 != '1')
{
if (c2 == c1 && c3 == c1)
{juegoterminado = true;}

if (c4 == c1 && c7 == c1)
{juegoterminado = true;}
}
if (c5 != '5')
{
if (c1 == c5 && c9 == 5)
{juegoterminado = true;}
if (c2 == c5 && c8 == c5)
{juegoterminado = true;}
if (c4 == c5 && c6 == c5)
{juegoterminado = true;}
if (c3 == c5 && c7 == c5)
{juegoterminado = true;}
}
if (c9 != '9')
{
if (c3 == c9 && c6 == c9)
{juegoterminado = true;}
if (c7 == c9 && c8 == c9)
{juegoterminado = true;}

}
if (c1 != '1' && c2 != '2' && c3 != '3' &&
c4 != '4' && c5 != '5' && c6 != '6' &&
c7 != '7' && c8 != '8' && c9 != '9' && !juegoterminado)
{
juegoterminado = true;
juego_ganado = false;
   }
if (juegoterminado)
{
if (juego_ganado)
{printf("Juagador: %d Gana!",turno_jugador);}  
// Imprimir Tablero
printf("\t\t\t\t||%c||%c||%c||\n",c1,c2,c3);
printf("\t\t\t\t||+||+||+||\n");
printf("\t\t\t\t||%c||%c||%c||\n",c4,c5,c6);
printf("\t\t\t\t||+||+||+||\n");
printf("\t\t\t\t||%c||%c||%c||\n",c7,c8,c9);
printf("\t\t\t\t||+||+||+||\n\n");
printf("Juego Terminado!");
printf("Jugar De Nuevo (Y/N)?");
scanf("%d",&jugar_otra);
if (jugar_otra == 'y'||jugar_otra == 'Y')
{
juegoterminado = false;
c1 = '1';
c2 = '2';
c3 = '3';
c4 = '4';
c5 = '5';
c6 = '6';
c7 = '7';
c8 = '8';
c9 = '9';
   }
turno_jugador=1;
}
else {
if (turno_jugador == 1)
{turno_jugador = 2;}
else
{turno_jugador = 1;}
 }
} while (!juegoterminado);
}





Título: Re: 3 en raya Help
Publicado por: ralymontes en 9 Mayo 2010, 05:27 am
mm podrias decir como funciona?

Y como se usa (en teoria)..???

 para pdoer entenderlo primero y ver si el code concuerda con lo que queires ahcer.


Título: Re: 3 en raya Help
Publicado por: safkevin en 11 Mayo 2010, 03:49 am
me sorprende que nunca ayas jugado 3 en raya  es algo como esto:

(http://3.bp.blogspot.com/_879bCSPokTg/RorsZNnqZ3I/AAAAAAAAAAs/uAtU537_c2w/s320/tre_en_raya.jpg)


bueno el objetivo de este juego esque el primero tira con una x o y si juntas 3 en raya ya sea en vertical u orizontal o en diagonal ganas algo asi:
(http://treemkt.com/blog/wp-content/uploads/2009/07/tres-en-raya.jpg)

ya he revisado el codigo pero en teoria esta bien no se que mas hacer  :huh:

espero haberte ayudado y espero que me ayudes jaja



Título: Re: 3 en raya Help
Publicado por: Og. en 11 Mayo 2010, 05:09 am
Código
  1. do{
  2. scanf("%c",&movimiento);
  3. movalido=true;
  4. //Checar movimientos
  5.  
  6. if (movimiento == '1' && c1 == '1')
  7. {
  8.  c1 = marcajugador;
  9. } else if (movimiento == '2' && c2 == '2') {
  10.  c2 = marcajugador;
  11. } else if (movimiento == '3' && c3 == '3') {
  12.  c3 = marcajugador;
  13. } else if (movimiento == '4' && c4 == '4') {
  14.  c4 = marcajugador;
  15. } else if (movimiento == '5' && c5 == '5') {
  16.  c5 = marcajugador;
  17. } else if (movimiento == '6' && c6 == '6') {
  18.  c6 = marcajugador;
  19. } else if (movimiento == '7' && c7 == '7') {
  20.  c7 = marcajugador;
  21. } else if (movimiento == '8' && c8 == '8') {
  22.  c8 = marcajugador;
  23. } else if (movimiento == '9' && c9 == '9') {
  24.  c9 = marcajugador;
  25. } else {
  26.  printf("Movimiento Invalido, Intenta Otra Vez\n");
  27.  movalido = false;
  28. }
  29.    } while(!movalido);
Tu error era que la linea
Código
  1. movalido = false;
la tenias fuera del else.