Proyecto tres en_raya_f_inal_mathias_y_grupo

5,638 views
5,379 views

Published on

2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
5,638
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
199
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

Proyecto tres en_raya_f_inal_mathias_y_grupo

  1. 1. Roberto Matías Edisson Gudiño Victoria Hernández Kevin CruzDocente: Ing. Orlando Barcia Ayala
  2. 2. *** Idea Base Del Proyecto ***Efectuar un juego de tres en RAYA REALIZANDO UN ANALISIS, DISEÑO EImplementación orientado a objetos. Las relaciones son las siguientes:Los Juegos de Computadora se pueden clasificar en Juegos Totalmentealeatorios y juegos de destrezas: el juego de tres en raya es un juego dedestreza, en este juego participan dos jugadores, de los cuales unoincluso puede ser el computador. x 0 x 0 xAl iniciar el juego se solicitaran los nombres d cada jugador y su Nick. Enel juego se debe especificar cuál de los jugadores es el primero (porelección o al azar). Así también puede seleccionarse que uno de losjugadores sea la computadora (nombre y Nick será “computer”).Las clases q implementan en el juego deber tener un arreglo privadobidimensional de enteros con un tamaño de 3 por 3 que simulara eltablero del juego. El constructor debe inicializar el arreglo con creso: Losjugadores tiene un orden de juego especifico, el primer jugado realiza unmovimiento y mostrara un 1 en el cuadro que desee escoger (ver nota alFinal).Cuando toque al segundo jugador, este realizara un movimiento en elcuadro que desea escoger y mostrara un 2 *. Cada movimiento debevalidarse para q se realice un cuadro vacío, mostrando los mensajes deadvertencias correspondientes.
  3. 3. Al realizar cada movimiento el juego debe determinar si se ha ganado oexiste un empate. Las clases deben tener atributos, métodos,constructores y sobrecargas. Debe Utilizar método setter, getter,sobrecarga de métodos. Y constructores, así como una interfaz deusuario básica.Nota: La interfaz grafía de usuario puede mostrar el tablero del juego deajedrez como un conjunto de botones con o sin imágenes ( a criterio delProgramador) o un conjunto de cuadros de texto. 1. Implementamos en el editor de NetBeans IDE 6.8 Creamos los paquetes Necesarios q pide el Software
  4. 4. CODIGO FUENTE:package mathias.cruz.gudinho.hernandez;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Maticruzgudinhernad extends JFrame implements ActionListener { //Etiquetas del JFrame JLabel l1, l2, l3, l4, l5; // Cuadros de Textos JTextField jugador1, jugador2; //Opciones de radio JRadioButton computador, jugador; ButtonGroup opciones; //Boton empezar a jugar JButton jugar; public Maticruzgudinhernad() { crearJugadores(); } public void crearJugadores() { setTitle("Tres en Raya"); //setLocationRelativeTo(null); setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(8, 2)); // Creacion de las etiquetas de la pantalla y asignamos tamaño de la etiqueta l1 = new JLabel("* JUGADORES *"); l1.setSize(100, 20); l2 = new JLabel("Jugador # 1"); l2.setSize(100, 20); l4 = new JLabel("Jugador # 2"); l4.setSize(100, 20);
  5. 5. //Fuentes a los controles JLabel l1.setFont(new Font("Algerian", 1, 18)); l1.setForeground(Color.blue); l2.setFont(new Font("Algerian", 1, 14)); l4.setFont(new Font("Algerian", 1, 14)); // Creacion de los Cuadros de texto para el ingreso de nombres jugador1 = new JTextField(""); jugador1.setSize(50, 20); jugador2 = new JTextField(""); jugador2.setSize(50, 20); // Opciones, creacion de radio button opciones = new ButtonGroup(); computador = new JRadioButton("Computador"); computador.setSelected(true); computador.setSize(100, 20); jugador = new JRadioButton("Jugador"); jugador.setSize(100, 20); opciones.add(computador); opciones.add(jugador); // Boton para jugar jugar = new JButton("Jugar"); jugar.setSize(50, 20); // Añadimos el listener al boton jugar.addActionListener(this); // Añadimos los controles al JFrame add(l1); add(new Label()); add(l2); add(jugador1); add(l4); add(new Label()); add(computador); add(new Label()); add(jugador); add(jugador2); add(jugar); setVisible(true);}
  6. 6. // Metodos para manejar Eventos// public void actionPerformed(ActionEvent e) { //Validar que se haya ingresado el nick al jugador 1 if (jugador1.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 1"); } else { //Validar que el segundo jugador haya ingresado nombre si se selecciono jugarcontra otro jugador if (jugador.isSelected() && jugador2.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 2"); } else { //Sortear quien juega primero aleatoriamente int empieza = (int) (Math.random() * 2 + 1); String jug1,jug2; //Cojemos el nombre del jugador que va a empezar //Si es uno escojemos el nombre que ingreso el primer jugador if (empieza == 1) { jug1 = jugador1.getText(); if (jugador.isSelected() && !jugador2.getText().trim().equals("")) { jug2=jugador2.getText(); } else { jug2="Computer"; } } else { //Si es 2 se verifica si se juga contra otro jugador o contra la computadora if (jugador.isSelected() && !jugador2.getText().trim().equals("")) { jug1=jugador2.getText(); } else { jug1="Computer"; } jug2 = jugador1.getText(); } JOptionPane.showMessageDialog(null, "Empieza el jugador: "+jug1); setVisible(false); new Raya(jug1,jug2); } } }
  7. 7. public static void main(String[] args) { new Maticruzgudinhernad(); }}Tenemos L a Clase Raya:package mathias.cruz.gudinho.hernandez;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Raya extends JFrame implements ActionListener { // Botones JButton botones[][]; JPanel p1; //Tamaño del Tablero de Tres en Raya int a = 3; //Matriz del tablero de Tres en raya private int tablero[][]; //Iconos para los botones ImageIcon equis, circulo; //Nicks de los jugadores String nick1, nick2; int turno = 1; public Raya(String jug1, String jug2) { nick1 = jug1; nick2 = jug2; System.out.println(jug1); System.out.println(jug2); dibujarTablero(); jugar(nick1); }
  8. 8. public void dibujarTablero() { //Crear matriz de posiciones del tablero tablero = new int[a][a]; // Crear iconos para los botones equis = new ImageIcon("src/mathias/cruz/gudinho/hernandez/equis.gif"); circulo = new ImageIcon("src/mathias/cruz/gudinho/hernandez/circulo.gif"); //Iniciar todo el tablero en cero (Si esta cero se puede escojer si es 1 no se puedeescojer for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { tablero[i][j] = 0; } } setTitle("Tres en Raya"); //setLocationRelativeTo(null); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(a, 2)); botones = new JButton[a][a]; // Creacion de los botones del tablero for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { //Creamos el boton botones[i][j] = new JButton(); //Le damos el oyente de evento botones[i][j].addActionListener(this); //Le damos un nombre a la accion botones[i][j].setActionCommand("" + i + j); botones[i][j].setSize(200, 200); add(botones[i][j]); } } setVisible(true); }
  9. 9. // Metodo para presentar el jugador que tiene el turno de jugar public void jugar(String jugador) { JOptionPane.showMessageDialog(null, "Turno: " + jugador); } //Variables que sirven para saber si un jugador ha hecho tres en raya en alguna // de dos forma vertical, horizontal boolean ganaron1, ganaron2; // Variable para controlar si algun jugador ya gano boolean ganaron = false; public void validarTablero() { int i, j; for (i = 0; i < a; i++) { ganaron1 = true; ganaron2 = true; for (j = 0; j < a - 1; j++) { //validar si se hizo tres en raya de forma horizontal ganaron1 = (tablero[i][j] == tablero[i][j + 1]) && ganaron1 && tablero[i][j] !=0; //validar si se hizo tres en raya de forma vertical ganaron2 = (tablero[j][i] == tablero[j + 1][i]) && ganaron2 && tablero[j][i] !=0; } //Si se hizo tres en raya de forma horizontal o vertical presentamos un mensaje if (ganaron1 || ganaron2) { //Asignamos true a la variable ganaron para indicar que un jugador ya gano ganaron = true; //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2 if (turno == 1) { JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick1); break; } else { JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick2); break; } } }
  10. 10. //Si no se hizo tres en raya de forma horizontal valido si se hizo tres en raya // de forma diagonal if (!ganaron) { if ((tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] &&tablero[1][1] != 0) || (tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2]&& tablero[1][1] != 0)) { //Asignamos true a la variable ganaron para indicar que un jugador ya gano ganaron = true; //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2 if (turno == 1) { JOptionPane.showMessageDialog(null, "Wiiner!!! Jugador: " + nick1); } else { JOptionPane.showMessageDialog(null, "Winner!!!! Jugador: " + nick2); } } } } // Metodo para controlar el turno de juego public void verificarTurno() { // Verificar a quien le toca jugar if (turno == 1) { turno = 2; jugar(nick2); } else { turno = 1; jugar(nick1); } } //Variable para saber si se escogio un cuadro vacío del tablero boolean correcto;
  11. 11. // Metodo oyente para eventos de dar clic en los botones del tabler0 public void actionPerformed(ActionEvent e) { if (!ganaron) { correcto=false; //Preguntar por que boton se dio clic y si esta for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { if (e.getActionCommand().equals("" + i + j)) { if (tablero[i][j] == 0) { tablero[i][j] = turno; if (turno == 1) { botones[i][j].setIcon(equis); } else { botones[i][j].setIcon(circulo); } correcto=true; } else { JOptionPane.showMessageDialog(null,"Debe escoger otro cuadro esteya ha sido escogido"); } } } } if(correcto){ validarTablero(); if (!ganaron) { verificarTurno(); } } } }}
  12. 12. Probamos el Programa!
  13. 13. Bueno el principal Objetivo del Proyecto es crecer como estudiantes de la UPS. En base anuestro desempeño q le estamos poniendo a este proyecto el cual nos servirá para un futuroponernos nuestras metas. El Principal objetivo del proyecto es cumplir con las necesidades qeste pida y dar con todos los requerimientos posibles ya sean gráfica, etc.En si tenemos las dudas q se la preguntaremos a usted Ing.! Sobre el tema de los aleatoriosen la pizarra del juego de tres en raya.
  14. 14. http://www.java.com/es/

×