Advertisement
idsystems

CPP2_Practica12_TicTacToe

Aug 5th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.54 KB | None | 0 0
  1. /* Practica 12
  2. gato3.cpp
  3. Programa basado en el ejercicio 29 (Juego del Gato) del Cuaderno de Ejercicios
  4. de Programacion I. pag 60.
  5. Ahora con una interfaz grafica.
  6.  
  7. *NOTA IMPORTANTE: Debido a las limitantes de la libreria RAD C++, las cajas de
  8. texto no pueden establecer una longitud, por lo que necesita ponerse el ancho
  9. de las cajas en 15. Esto hace que solamente acepte UN CARACTER, de lo contrario
  10. la caja de texto contendra mas de uno (espacios en blanco) y la evaluacion de
  11. las condiciones no se llevara a cabo
  12.  
  13. Ademas, debido a la libreria, tampoco es posible evaluar de manera directa el
  14. contenido de las cajas de texto, con su valor almacenado en la propiedad TEXT.
  15. Para ello, se ha creado un ARRAY ASOCIATIVO DE CADENA (ver mas abajo) para
  16. almacenar en dicha matriz los valores introducidos por el usuario a traves de
  17. la interfaz. De esta forma, es posible hacer las condiciones para saber que
  18. jugador gana.
  19. Por: LSC Sergio Hugo Sanchez O.
  20. Fecha: 15/Mayo/2011
  21. */
  22. #include <radc++.h>
  23.  
  24. Form         form1("Juego del Gato",10,10,300,200);
  25. TextBox t1("",AUTO_ID, 10,10,15,20,form1);
  26. TextBox t2("",AUTO_ID, 45,10,15,20,form1);
  27. TextBox t3("",AUTO_ID, 80,10,15,20,form1);
  28.  
  29. TextBox t4(" ",AUTO_ID, 10,35,15,20,form1);
  30. TextBox t5(" ",AUTO_ID, 45,35,15,20,form1);
  31. TextBox t6(" ",AUTO_ID, 80,35,15,20,form1);
  32.  
  33. TextBox t7(" ",AUTO_ID, 10,60,15,20,form1);
  34. TextBox t8(" ",AUTO_ID, 45,60,15,20,form1);
  35. TextBox t9(" ",AUTO_ID, 80,60,15,20,form1);
  36.  
  37. SunkLine    line1(10,100,200,2,form1);
  38. Label       label1("Resultado ",-1,10,120,250,20,form1);
  39. Button     b1("Instrucciones",AUTO_ID,180,90,100,30,form1);
  40.  
  41.  
  42. //create an associative array to hold  string values
  43. createAssocArray(String, movs);
  44.  
  45. int Check(void)
  46. {  
  47.    /* Se evaluara lo que ha introducido el usuario en cada caja de texto, si
  48.    lo ha puesto por fila, columna o en diagonal para cada una de las 2 letras:
  49.     X o O. segun el jugador */
  50.  
  51.     if (movs[0]=="X" & movs[1]=="X" & movs[2]=="X"){
  52.        label1.caption = "Gano X " ;
  53.     }
  54.     else if (movs[3]=="X" && movs[4]=="X" && movs[5]=="X"){
  55.              label1.caption = "Gano X" ;
  56.          }
  57.          else if (movs[6]=="X" && movs[7]=="X" && movs[8]=="X"){
  58.                  label1.caption = "Gano X ";
  59.               }
  60.               else if (movs[0]=="X" && movs[4]=="X" && movs[8]=="X"){
  61.                      label1.caption = "Gano X " ;
  62.                    }
  63.                    else if (movs[2]=="X" && movs[4]=="X" && movs[6]=="X"){
  64.                          label1.caption = "Gano X " ;
  65.                         }
  66.                         else if (movs[0]=="X" && movs[3]=="X" && movs[6]=="X"){
  67.                                label1.caption = "Gano X " ;
  68.                              }
  69.                         else if (movs[1]=="X" && movs[4]=="X" && movs[7]=="X"){
  70.                                 label1.caption = "Gano X " ;
  71.                              }
  72.                            else if (movs[2]=="X" && movs[5]=="X" && movs[8]=="X"){
  73.                                    label1.caption = "Gano X " ;
  74.                                 }
  75.                                
  76.        /* Ahora evaluamos la O mayuscula para el otro jugador. El codigo es el mismo que para la X
  77.        solamente que pondremos O en lugar de X */
  78.     if (movs[0]=="O" & movs[1]=="O" & movs[2]=="O"){
  79.        label1.caption = "Gano O " ;
  80.     }
  81.     else if (movs[3]=="O" && movs[4]=="O" && movs[5]=="O"){
  82.              label1.caption = "Gano O" ;
  83.          }
  84.          else if (movs[6]=="O" && movs[7]=="O" && movs[8]=="O"){
  85.                  label1.caption = "Gano O ";
  86.               }
  87.               else if (movs[0]=="O" && movs[4]=="O" && movs[8]=="O"){
  88.                      label1.caption = "Gano O " ;
  89.                    }
  90.                    else if (movs[2]=="O" && movs[4]=="O" && movs[6]=="O"){
  91.                          label1.caption = "Gano O " ;
  92.                         }
  93.                         else if (movs[0]=="O" && movs[3]=="O" && movs[6]=="O"){
  94.                                label1.caption = "Gano O " ;
  95.                              }
  96.                         else if (movs[1]=="O" && movs[4]=="O" && movs[7]=="O"){
  97.                                 label1.caption = "Gano O " ;
  98.                              }
  99.                            else if (movs[2]=="O" && movs[5]=="O" && movs[8]=="O"){
  100.                                    label1.caption = "Gano O " ;
  101.                                 }
  102.                                        
  103.  
  104. //       label1.caption = "NADIE GANO " ;
  105.  
  106.  return 0;  
  107. }
  108.  
  109. //NOTE: function createAssocArray accepts two arguments, where 1st is type of array elements,
  110. //      and second is the name of variable.
  111. FormProcedure proc1(FormProcArgs){
  112.     //Cuando se cierra la aplicacion.
  113.    
  114.     ON_CLOSE() Application.close();
  115.     /*Aqui van todos los eventos segun se pone una letra en cada caja de texto.
  116.     Tenemos una matriz de 3x3.
  117.    
  118.     Necesitamos poner el valor del texto de cada caja en una variable para que
  119.     pueda ser evaluada correctamente con una X o O. Por lo tanto se creo una
  120.     matriz que almacene dichos valores. Una vez pasado el valor, vamos a la
  121.     funcion CHECK() que es la que evaluara como va el juego */
  122.     ON_TEXT_CHANGED( t1){
  123.         movs[0] = t1.text;
  124.         Check();
  125.      }
  126.     ON_TEXT_CHANGED( t2){
  127.         movs[1] = t2.text;
  128.         Check();
  129.      }
  130.     ON_TEXT_CHANGED(t3) {
  131.         movs[2] = t3.text;
  132.         Check();
  133.      }
  134.     // Segunda fila
  135.     ON_TEXT_CHANGED( t4){
  136.         movs[3] = t4.text;
  137.         Check();
  138.      }
  139.     ON_TEXT_CHANGED( t5){
  140.         movs[4] = t5.text;
  141.         Check();
  142.      }
  143.     ON_TEXT_CHANGED(t6) {
  144.         movs[5] = t6.text;
  145.         Check();
  146.      }
  147.     // Tercera fila
  148.     ON_TEXT_CHANGED( t7){
  149.         movs[6] = t7.text;
  150.         Check();
  151.      }
  152.     ON_TEXT_CHANGED( t8){
  153.         movs[7] = t8.text;
  154.         Check();
  155.      }
  156.     ON_TEXT_CHANGED(t9) {
  157.         movs[8] = t9.text;
  158.         Check();
  159.      }
  160.      // Instrucciones
  161.      ON_COMMAND_BY( b1) {
  162.          form1.infoBox("Use las letras X y O en mayusculas\nsolamente.\nDe lo contrario el programa no funcionara","Info");
  163.      }
  164.     return 0;
  165. }
  166.  
  167. //Programa principal
  168. rad_main()
  169.  
  170.      //Agregamos valores nulos a la matriz de cadena creada anteriormente
  171.      movs["0"]      = "";
  172.      movs["1"]      = "";
  173.      movs["2"]      = "";
  174.      movs["3"]      = "";
  175.      movs["4"]      = "";
  176.      movs["5"]      = "";
  177.      movs["6"]      = "";
  178.      movs["7"]      = "";
  179.      movs["8"]      = "";
  180.      movs["9"]      = "";
  181.  
  182.      t1.focus();                //Ponemos el cursor en la primera caja
  183.      form1.procedure = proc1;
  184. rad_end()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement