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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [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 3,623 veces)
Manimecker

Desconectado Desconectado

Mensajes: 47



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

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
  1. ///EL GATO EN C++ CON VECTORES
  2. ///MANIMECKER
  3. ///JORGEJUVA@GMAIL.COM
  4. ///ERES LIBRE DE MODIFICAR ESTE CODIGO A TU CONVENIENCIA
  5. ///YOU ARE FREE TO MODIFY THIS CODE AS YOU WANT
  6.  
  7. #include <stdio.h>
  8. #include <conio2.h> //Tuve que usar esta libreria con CodeBlocks
  9.  
  10. int op=0, gana=0, emp=1, pla1=0, pla2=0, pjug=1, repe1;
  11. char n2[2];
  12. char n[9];          ///     TABLERO
  13.                    /// ================
  14.                    /// |n[0]|n[1]|n[2]|
  15.                    /// ================
  16.                    /// |n[3]|n[4]|n[5]|
  17.                    /// ================
  18.                    /// |n[6]|n[7]|n[8]|
  19.                    /// ================
  20.  
  21. void tablero()
  22. {
  23.    gotoxy(25,1); printf(" ***EL GATO***");
  24.    gotoxy(15,2); printf("UTILIZA EL TELCADO NUMERICO PARA JUGAR");
  25.    gotoxy(15,5); printf("===== \n");
  26.    gotoxy(15,6); printf("%c|%c|%c \n",n[6], n[7], n[8]);
  27.    gotoxy(15,7); printf("===== \n");
  28.    gotoxy(15,8); printf("%c|%c|%c \n",n[3], n[4], n[5]);
  29.    gotoxy(15,9); printf("===== \n");
  30.    gotoxy(15,10); printf("%c|%c|%c \n",n[0], n[1], n[2]);
  31.    gotoxy(15,11); printf("===== \n");
  32.    gotoxy(30,5); printf("        GANADAS  ");
  33.    gotoxy(30,6); printf("Jugador 1    Jugador 2");
  34.    gotoxy(30,7); printf("   %d            %d ", pla1, pla2);
  35. }
  36.  
  37. void valores()
  38. {
  39.    gana=0; emp=0; pjug=1;
  40.    int i, j;
  41.    for (i=0; i<=9; i++)
  42.        n[i]=' ';
  43. }
  44.  
  45. void casillas()
  46. {
  47.    char oc;
  48.    if (pjug == 1)
  49.        oc='X';
  50.    else
  51.        oc='O';
  52.    switch (op) {
  53.        case 1 : if (n[0] != ' ') { repe1=1; break; } else {n[0]=oc; emp++; break;}
  54.        case 2 : if (n[1] != ' ') { repe1=1; break; } else {n[1]=oc; emp++; break;}
  55.        case 3 : if (n[2] != ' ') { repe1=1; break; } else {n[2]=oc; emp++; break;}
  56.        case 4 : if (n[3] != ' ') { repe1=1; break; } else {n[3]=oc; emp++; break;}
  57.        case 5 : if (n[4] != ' ') { repe1=1; break; } else {n[4]=oc; emp++; break;}
  58.        case 6 : if (n[5] != ' ') { repe1=1; break; } else {n[5]=oc; emp++; break;}
  59.        case 7 : if (n[6] != ' ') { repe1=1; break; } else {n[6]=oc; emp++; break;}
  60.        case 8 : if (n[7] != ' ') { repe1=1; break; } else {n[7]=oc; emp++; break;}
  61.        case 9 : if (n[8] != ' ') { repe1=1; break; } else {n[8]=oc; emp++; break;} }
  62. }
  63.  
  64. void ganador()
  65. {
  66.    n2[0]='X'; n2[1]='O';
  67.    int i;
  68.    if (emp <= 9) {
  69.        for (i=0; i<2; i++) {
  70.        if (n[0]==n2[i] && n[3]==n2[i] && n[6]==n2[i])
  71.            gana=i+1;
  72.        if (n[1]==n2[i] && n[4]==n2[i] && n[7]==n2[i])
  73.            gana=i+1;
  74.        if (n[2]==n2[i] && n[5]==n2[i] && n[8]==n2[i])
  75.            gana=i+1;
  76.        if (n[6]==n2[i] && n[7]==n2[i] && n[8]==n2[i])
  77.            gana=i+1;
  78.        if (n[3]==n2[i] && n[4]==n2[i] && n[5]==n2[i])
  79.            gana=i+1;
  80.        if (n[0]==n2[i] && n[1]==n2[i] && n[2]==n2[i])
  81.            gana=i+1;
  82.        if (n[6]==n2[i] && n[4]==n2[i] && n[2]==n2[i])
  83.            gana=i+1;
  84.        if (n[0]==n2[i] && n[4]==n2[i] && n[8]==n2[i])
  85.            gana=i+1; }
  86.    }
  87.    else
  88.        gana=3;
  89. }
  90.  
  91. void jug1()
  92. {
  93.    gotoxy(1,14); printf("Jugador 1 - Introduce el numero: ");
  94.    scanf("%d", &op);
  95.    while (op>9 || op<1) {
  96.        gotoxy(1,14); printf("Opcion NO VALIDA, introduce una correcta: ");
  97.        scanf("%d", &op); }
  98.    casillas();
  99.    if (repe1 == 1) {
  100.        gotoxy(1,13);
  101.        printf("Casilla ya elegida! ");
  102.        repe1=0;
  103.        jug1();}
  104.    clrscr();
  105.    ganador();
  106.    pjug=2;
  107. }
  108.  
  109. void jug2()
  110. {
  111.    gotoxy(1,14); printf("Jugador 2 - Introduce el numero: ");
  112.    scanf("%d", &op);
  113.    while (op>9 || op<1) {
  114.        gotoxy(1,14); printf("Opcion NO VALIDA, introduce una correcta: ");
  115.        scanf("%d", &op); }
  116.    casillas();
  117.    if (repe1 == 1) {
  118.        gotoxy(1,13);
  119.        printf("Casilla ya elegida! ");
  120.        repe1=0;
  121.        jug1();}
  122.    clrscr();
  123.    ganador();
  124.    pjug=1;
  125. }
  126.  
  127. int main()
  128. {
  129.    char cp;
  130.    do {
  131.    clrscr();
  132.    valores();
  133.    while (gana == 0)
  134.    {
  135.        tablero();
  136.        switch(pjug)
  137.        {
  138.            case 1 : jug1(); break;
  139.            case 2 : jug2(); break;
  140.        }
  141.    }
  142.    switch(gana) {
  143.        case 1 : pla1++; gotoxy(1,13); printf("Gana el jugador 1."); break;
  144.        case 2 : pla2++; gotoxy(1,13); printf("Gana el jugador 2."); break;
  145.        case 3 : gotoxy(1,13); printf("Es un empate."); break; }
  146.    tablero();
  147.    gotoxy(1, 15); printf("Deseas otro juego (S/N): ");
  148.    scanf(" %c", &cp);
  149.    } while (cp == 'S');
  150.    return 0;
  151. }
  152.  

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 am 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 2,605 Último mensaje 22 Julio 2007, 17:33 pm
por Tengu
Aporte - Tres en Raya (con IA)
Programación Visual Basic
rob1104 9 10,232 Último mensaje 9 Marzo 2009, 22:35 pm
por peib0l
4 en raya
Programación C/C++
vaXy 5 8,585 Último mensaje 18 Marzo 2011, 20:56 pm
por anonimo12121
3 en raya Help
Programación C/C++
safkevin 3 4,438 Último mensaje 11 Mayo 2010, 05:09 am
por Og.
[Aporte] Tres en raya con minimax
Programación C/C++
0xFer 9 5,533 Último mensaje 25 Mayo 2015, 22:02 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines