elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:24  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [Aporte] 3 en raya (2 Jugadores)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] 3 en raya (2 Jugadores)  (Leído 382 veces)
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
[Aporte] 3 en raya (2 Jugadores)
« en: 15 Enero 2012, 03:07 »

He decidido publicar mi código del 3 en raya para 2 jugadores humanos.

Se juega utilizando el numpad dependiendo del número es la casilla a jugar.



Código
///EL GATO EN C++ CON VECTORES
///MANIMECKER
///JORGEJUVA@GMAIL.COM
///ERES LIBRE DE MODIFICAR ESTE CODIGO A TU CONVENIENCIA
///YOU ARE FREE TO MODIFY THIS CODE AS YOU WANT
 
#include <stdio.h>
#include <conio2.h> //Tuve que usar esta libreria con CodeBlocks
 
int op=0, gana=0, emp=1, pla1=0, pla2=0, pjug=1, repe1;
char n2[2];
char n[9];          ///     TABLERO
                   /// ================
                   /// |n[0]|n[1]|n[2]|
                   /// ================
                   /// |n[3]|n[4]|n[5]|
                   /// ================
                   /// |n[6]|n[7]|n[8]|
                   /// ================
 
void tablero()
{
   gotoxy(25,1); printf(" ***EL GATO***");
   gotoxy(15,2); printf("UTILIZA EL TELCADO NUMERICO PARA JUGAR");
   gotoxy(15,5); printf("===== \n");
   gotoxy(15,6); printf("%c|%c|%c \n",n[6], n[7], n[8]);
   gotoxy(15,7); printf("===== \n");
   gotoxy(15,8); printf("%c|%c|%c \n",n[3], n[4], n[5]);
   gotoxy(15,9); printf("===== \n");
   gotoxy(15,10); printf("%c|%c|%c \n",n[0], n[1], n[2]);
   gotoxy(15,11); printf("===== \n");
   gotoxy(30,5); printf("        GANADAS  ");
   gotoxy(30,6); printf("Jugador 1    Jugador 2");
   gotoxy(30,7); printf("   %d            %d ", pla1, pla2);
}
 
void valores()
{
   gana=0; emp=0; pjug=1;
   int i, j;
   for (i=0; i<=9; i++)
       n[i]=' ';
}
 
void casillas()
{
   char oc;
   if (pjug == 1)
       oc='X';
   else
       oc='O';
   switch (op) {
       case 1 : if (n[0] != ' ') { repe1=1; break; } else {n[0]=oc; emp++; break;}
       case 2 : if (n[1] != ' ') { repe1=1; break; } else {n[1]=oc; emp++; break;}
       case 3 : if (n[2] != ' ') { repe1=1; break; } else {n[2]=oc; emp++; break;}
       case 4 : if (n[3] != ' ') { repe1=1; break; } else {n[3]=oc; emp++; break;}
       case 5 : if (n[4] != ' ') { repe1=1; break; } else {n[4]=oc; emp++; break;}
       case 6 : if (n[5] != ' ') { repe1=1; break; } else {n[5]=oc; emp++; break;}
       case 7 : if (n[6] != ' ') { repe1=1; break; } else {n[6]=oc; emp++; break;}
       case 8 : if (n[7] != ' ') { repe1=1; break; } else {n[7]=oc; emp++; break;}
       case 9 : if (n[8] != ' ') { repe1=1; break; } else {n[8]=oc; emp++; break;} }
}
 
void ganador()
{
   n2[0]='X'; n2[1]='O';
   int i;
   if (emp <= 9) {
       for (i=0; i<2; i++) {
       if (n[0]==n2[i] && n[3]==n2[i] && n[6]==n2[i])
           gana=i+1;
       if (n[1]==n2[i] && n[4]==n2[i] && n[7]==n2[i])
           gana=i+1;
       if (n[2]==n2[i] && n[5]==n2[i] && n[8]==n2[i])
           gana=i+1;
       if (n[6]==n2[i] && n[7]==n2[i] && n[8]==n2[i])
           gana=i+1;
       if (n[3]==n2[i] && n[4]==n2[i] && n[5]==n2[i])
           gana=i+1;
       if (n[0]==n2[i] && n[1]==n2[i] && n[2]==n2[i])
           gana=i+1;
       if (n[6]==n2[i] && n[4]==n2[i] && n[2]==n2[i])
           gana=i+1;
       if (n[0]==n2[i] && n[4]==n2[i] && n[8]==n2[i])
           gana=i+1; }
   }
   else
       gana=3;
}
 
void jug1()
{
   gotoxy(1,14); printf("Jugador 1 - Introduce el numero: ");
   scanf("%d", &op);
   while (op>9 || op<1) {
       gotoxy(1,14); printf("Opcion NO VALIDA, introduce una correcta: ");
       scanf("%d", &op); }
   casillas();
   if (repe1 == 1) {
       gotoxy(1,13);
       printf("Casilla ya elegida! ");
       repe1=0;
       jug1();}
   clrscr();
   ganador();
   pjug=2;
}
 
void jug2()
{
   gotoxy(1,14); printf("Jugador 2 - Introduce el numero: ");
   scanf("%d", &op);
   while (op>9 || op<1) {
       gotoxy(1,14); printf("Opcion NO VALIDA, introduce una correcta: ");
       scanf("%d", &op); }
   casillas();
   if (repe1 == 1) {
       gotoxy(1,13);
       printf("Casilla ya elegida! ");
       repe1=0;
       jug1();}
   clrscr();
   ganador();
   pjug=1;
}
 
int main()
{
   char cp;
   do {
   clrscr();
   valores();
   while (gana == 0)
   {
       tablero();
       switch(pjug)
       {
           case 1 : jug1(); break;
           case 2 : jug2(); break;
       }
   }
   switch(gana) {
       case 1 : pla1++; gotoxy(1,13); printf("Gana el jugador 1."); break;
       case 2 : pla2++; gotoxy(1,13); printf("Gana el jugador 2."); break;
       case 3 : gotoxy(1,13); printf("Es un empate."); break; }
   tablero();
   gotoxy(1, 15); printf("Deseas otro juego (S/N): ");
   scanf(" %c", &cp);
   } while (cp == 'S');
   return 0;
}
 

Si tienen cualquier observación, por favor díganmela para poder corregir mi programa u optimizarlo.

PD: Presiento que se puede hacer de manera más fácil, pero ya no sé como simplificarlo más y siento que así está bien el código. Digo esto porque siempre tiendo a crear códigos complicados y largos cuando en realidad son fáciles y cortos.

Salu2.


« Última modificación: 15 Enero 2012, 03:55 por Manimecker » En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pequeño aporte(proxy),pero aporte al fin.:D
Programación Visual Basic
Tengu 0 470 Último mensaje 22 Julio 2007, 17:33
por Tengu
Aporte - Tres en Raya (con IA)
Programación Visual Basic
rob1104 9 3,976 Último mensaje 9 Marzo 2009, 22:35
por peib0l
4 en raya
Programación C/C++
eipock 5 3,174 Último mensaje 18 Marzo 2011, 20:56
por Dr.Hacker++
3 en raya Help
Programación C/C++
safkevin 3 1,478 Último mensaje 11 Mayo 2010, 05:09
por Og.
Si un dvd se raya... « 1 2 »
Hardware
Nu|kEr32 18 3,483 Último mensaje 22 Agosto 2010, 03:59
por Nu|kEr32
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines