package newpackage; import java.awt.Color; import javax.swing.JOptionPane; public class NewJFrame extends javax.swing.JFrame {
private final String usuario, computadora;//Variables que guardan los signos utilizados por el usuario y la computadora private final String[] signo = {"X","0"};//Arreglo unidimensional con los dos posibles signos a utilizar. private int ganado=0, empatado=0, perdido=0, can;//Variables que llevan la cuenta de las partidas y las casillas ocupadas.
public NewJFrame() { usuario = (String) JOptionPane.showInputDialog(null, "Seleccione el signo (X/0) para empezar a jugar.", "Signo",JOptionPane.INFORMATION_MESSAGE, null ,signo,signo[0]); if (usuario.equals("X")) computadora = "0"; else computadora = "X"; initComponents(); getContentPane().setBackground(Color.WHITE); cant_gan.setText(String.valueOf(ganado)); cant_emp.setText(String.valueOf(empatado)); cant_per.setText(String.valueOf(perdido)); if(computadora.equals("X")) turnoComputadora(); }
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" BEGIN:initComponents private void initComponents() {
jSeparator2 = new javax.swing.JSeparator(); jSeparator3 = new javax.swing.JSeparator(); jSeparator4 = new javax.swing.JSeparator(); jSeparator5 = new javax.swing.JSeparator(); jLabel1 = new javax.swing.JLabel(); cant_per = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); cant_gan = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); cant_emp = new javax.swing.JLabel(); boton_pos9 = new javax.swing.JButton(); boton_pos1 = new javax.swing.JButton(); boton_pos2 = new javax.swing.JButton(); boton_pos3 = new javax.swing.JButton(); boton_pos4 = new javax.swing.JButton(); boton_pos5 = new javax.swing.JButton(); boton_pos6 = new javax.swing.JButton(); boton_pos7 = new javax.swing.JButton(); boton_pos8 = new javax.swing.JButton(); jLabel7 = new javax.swing.JLabel(); pos9 = new javax.swing.JLabel(); pos1 = new javax.swing.JLabel(); pos2 = new javax.swing.JLabel(); pos3 = new javax.swing.JLabel(); pos4 = new javax.swing.JLabel();
desc="Generated
Code">//GEN-
pos5 = new javax.swing.JLabel(); pos6 = new javax.swing.JLabel(); pos7 = new javax.swing.JLabel(); pos8 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("X-0"); setPreferredSize(new java.awt.Dimension(470, 525)); setResizable(false); getContentPane().setLayout(null);
jSeparator2.setBackground(new java.awt.Color(0, 0, 0)); jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL); getContentPane().add(jSeparator2); jSeparator2.setBounds(170, 50, 20, 300);
jSeparator3.setBackground(new java.awt.Color(0, 0, 0)); getContentPane().add(jSeparator3); jSeparator3.setBounds(70, 150, 300, 40);
jSeparator4.setBackground(new java.awt.Color(0, 0, 0)); jSeparator4.setOrientation(javax.swing.SwingConstants.VERTICAL); getContentPane().add(jSeparator4); jSeparator4.setBounds(270, 50, 20, 300);
jSeparator5.setBackground(new java.awt.Color(0, 0, 0)); getContentPane().add(jSeparator5); jSeparator5.setBounds(70, 250, 300, 40);
jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setForeground(new java.awt.Color(153, 0, 0)); jLabel1.setText("Partidas perdidas:"); getContentPane().add(jLabel1); jLabel1.setBounds(300, 10, 120, 15);
cant_per.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N cant_per.setForeground(new java.awt.Color(153, 0, 0)); cant_per.setText("0"); getContentPane().add(cant_per); cant_per.setBounds(410, 10, 40, 15);
jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setForeground(new java.awt.Color(0, 102, 0)); jLabel3.setText("Partidas ganadas:"); getContentPane().add(jLabel3); jLabel3.setBounds(20, 10, 110, 15);
cant_gan.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N cant_gan.setForeground(new java.awt.Color(0, 102, 0)); cant_gan.setText("0"); getContentPane().add(cant_gan); cant_gan.setBounds(130, 10, 40, 15);
jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel5.setForeground(new java.awt.Color(102, 102, 0)); jLabel5.setText("Partidas empatadas:");
getContentPane().add(jLabel5); jLabel5.setBounds(150, 10, 120, 15);
cant_emp.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N cant_emp.setForeground(new java.awt.Color(102, 102, 0)); cant_emp.setText("0"); getContentPane().add(cant_emp); cant_emp.setBounds(270, 10, 40, 15);
boton_pos9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos9.setText("9"); boton_pos9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos9ActionPerformed(evt); } }); getContentPane().add(boton_pos9); boton_pos9.setBounds(240, 450, 50, 30);
boton_pos1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos1.setText("1"); boton_pos1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos1ActionPerformed(evt); } }); getContentPane().add(boton_pos1); boton_pos1.setBounds(140, 390, 50, 30);
boton_pos2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos2.setText("2"); boton_pos2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos2ActionPerformed(evt); } }); getContentPane().add(boton_pos2); boton_pos2.setBounds(190, 390, 50, 30);
boton_pos3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos3.setText("3"); boton_pos3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos3ActionPerformed(evt); } }); getContentPane().add(boton_pos3); boton_pos3.setBounds(240, 390, 50, 30);
boton_pos4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos4.setText("4"); boton_pos4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos4ActionPerformed(evt); } });
getContentPane().add(boton_pos4); boton_pos4.setBounds(140, 420, 50, 30);
boton_pos5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos5.setText("5"); boton_pos5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos5ActionPerformed(evt); } }); getContentPane().add(boton_pos5); boton_pos5.setBounds(190, 420, 50, 30);
boton_pos6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos6.setText("6"); boton_pos6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos6ActionPerformed(evt); } }); getContentPane().add(boton_pos6); boton_pos6.setBounds(240, 420, 50, 30);
boton_pos7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos7.setText("7"); boton_pos7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos7ActionPerformed(evt);
} }); getContentPane().add(boton_pos7); boton_pos7.setBounds(140, 450, 50, 30);
boton_pos8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N boton_pos8.setText("8"); boton_pos8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { boton_pos8ActionPerformed(evt); } }); getContentPane().add(boton_pos8); boton_pos8.setBounds(190, 450, 50, 30);
jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel7.setText("Posiciones"); getContentPane().add(jLabel7); jLabel7.setBounds(190, 370, 70, 15);
pos9.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos9); pos9.setBounds(270, 250, 100, 100);
pos1.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos1);
pos1.setBounds(70, 50, 100, 100);
pos2.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos2); pos2.setBounds(170, 50, 100, 100);
pos3.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos3); pos3.setBounds(270, 50, 100, 100);
pos4.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos4); pos4.setBounds(70, 150, 100, 100);
pos5.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos5); pos5.setBounds(170, 150, 100, 100);
pos6.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos6); pos6.setBounds(270, 150, 100, 100);
pos7.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N
pos7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos7); pos7.setBounds(70, 250, 100, 100);
pos8.setFont(new java.awt.Font("DotumChe", 1, 76)); // NOI18N pos8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(pos8); pos8.setBounds(170, 250, 100, 100);
pack(); }// //GEN-END:initComponents
//En estos métodos se activan los eventos click de los botones y se asigna el valor a la casilla correspondiente. private void boton_pos1ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos1ActionPerformed pos1.setText(usuario);//Asigna el signo del usuario a la casilla. pos1.setForeground(Color.red); boton_pos1.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos1ActionPerformed
private void boton_pos2ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos2ActionPerformed pos2.setText(usuario);//Asigna el signo del usuario a la casilla. pos2.setForeground(Color.red); boton_pos2.setEnabled(false);//Deshabilita el botón.
can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos2ActionPerformed
private void boton_pos3ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos3ActionPerformed pos3.setText(usuario);//Asigna el signo del usuario a la casilla. pos3.setForeground(Color.red); boton_pos3.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos3ActionPerformed
private void boton_pos4ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos4ActionPerformed pos4.setText(usuario);//Asigna el signo del usuario a la casilla. pos4.setForeground(Color.red); boton_pos4.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos4ActionPerformed
private void boton_pos5ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos5ActionPerformed pos5.setText(usuario);//Asigna el signo del usuario a la casilla. pos5.setForeground(Color.red);
boton_pos5.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos5ActionPerformed
private void boton_pos6ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos6ActionPerformed pos6.setText(usuario);//Asigna el signo del usuario a la casilla. pos6.setForeground(Color.red); boton_pos6.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos6ActionPerformed
private void boton_pos7ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos7ActionPerformed pos7.setText(usuario);//Asigna el signo del usuario a la casilla. pos7.setForeground(Color.red); boton_pos7.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos7ActionPerformed
private void boton_pos8ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos8ActionPerformed pos8.setText(usuario);//Asigna el signo del usuario a la casilla.
pos8.setForeground(Color.red); boton_pos8.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos8ActionPerformed
private void boton_pos9ActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_boton_pos9ActionPerformed pos9.setText(usuario);//Asigna el signo del usuario a la casilla. pos9.setForeground(Color.red); boton_pos9.setEnabled(false);//Deshabilita el botón. can++;//Aumenta en uno la cantidad de casillas ocupadas. if (determinarGanador()==0)//Sigue el juego y toma el turno la computadora. turnoComputadora(); }//GEN-LAST:event_boton_pos9ActionPerformed
private void seguirJugando(){ //Reinicia todos los controles. boton_pos1.setEnabled(true); boton_pos2.setEnabled(true); boton_pos3.setEnabled(true); boton_pos4.setEnabled(true); boton_pos5.setEnabled(true); boton_pos6.setEnabled(true); boton_pos7.setEnabled(true); boton_pos8.setEnabled(true); boton_pos9.setEnabled(true); pos1.setText("");
pos2.setText(""); pos3.setText(""); pos4.setText(""); pos5.setText(""); pos6.setText(""); pos7.setText(""); pos8.setText(""); pos9.setText(""); if(computadora.equals("X")) turnoComputadora(); }
//Método que controla los turnos de la computadora verificando las posibles jugadas para que gane la partida //o que el usuario no pueda ganar. private void turnoComputadora(){ int pos;//Variable pos asigna el valor a la casilla. boolean valido;//Variable utilizada para los ciclos que se utilizan al asignar la casilla. switch (can) { case 0: //Todas las casillas están vacías, y entonces se asigna el valor a una casilla aleatoria //y deshabilita el botón correspondiente. pos = (int)(Math.random()*9);//Genera aleatoriamente la posición a colocar el signo. if (pos<1){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if (pos<2){
pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); } else if (pos<3){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if (pos<4){ pos4.setText(computadora); pos4.setForeground(Color.blue); boton_pos4.setEnabled(false); } else if (pos<5){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if (pos<6){ pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); } else if (pos<7){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if (pos<8){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); } else {
pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } break; case 1: //En caso de que una casilla esté ocupada. valido = false;//Variable que controla si la posición es válida. while(valido == false){//Ciclo que se repetirá hasta que la posición sea válida. pos = (int)(Math.random()*9);//Genera un número aleatorio de 0-8. if (pos<1 && boton_pos1.isEnabled()){//Verifica que la posición no esté ocupada viendo si el botón está habilitado. pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); valido = true; } else if (pos<2 && boton_pos2.isEnabled()){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); valido = true; } else if (pos<3 && boton_pos3.isEnabled()){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); valido = true; } else if (pos<4 && boton_pos4.isEnabled()){ pos4.setText(computadora); pos4.setForeground(Color.blue);
boton_pos4.setEnabled(false); valido = true; } else if (pos<5 && boton_pos5.isEnabled()){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); valido = true; } else if (pos<6 && boton_pos6.isEnabled()){ pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); valido = true; } else if (pos<7 && boton_pos7.isEnabled()){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); valido = true; } else if (pos<8 && boton_pos8.isEnabled()){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); valido = true; } else if (pos<9 && boton_pos9.isEnabled()){ pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); valido = true; }
} break; default: //Evalúa todas las posibles opciones para ganar. Después asigna el signo a la casilla //y deshabilita el botón correspondiente. if(pos1.getText().equals(computadora) && pos2.getText().equals(computadora) && pos3.getText().equals("")){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if(pos1.getText().equals(computadora) && pos2.getText().equals("") && pos3.getText().equals(computadora)){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); } else if(pos1.getText().equals("") && pos2.getText().equals(computadora) && pos3.getText().equals(computadora)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos4.getText().equals(computadora) pos5.getText().equals(computadora) && pos6.getText().equals("")){
&&
pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); } else if(pos4.getText().equals(computadora) && pos5.getText().equals("") && pos6.getText().equals(computadora)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false);
} else if(pos4.getText().equals("") && pos5.getText().equals(computadora) && pos6.getText().equals(computadora)){ pos4.setText(computadora); pos4.setForeground(Color.blue); boton_pos4.setEnabled(false); } else if(pos7.getText().equals(computadora) pos8.getText().equals(computadora) && pos9.getText().equals("")){
&&
pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos7.getText().equals(computadora) && pos8.getText().equals("") && pos9.getText().equals(computadora)){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); } else if(pos7.getText().equals("") && pos8.getText().equals(computadora) && pos9.getText().equals(computadora)){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos1.getText().equals(computadora) pos4.getText().equals(computadora) && pos7.getText().equals("")){
&&
pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos1.getText().equals(computadora) && pos4.getText().equals("") && pos7.getText().equals(computadora)){ pos4.setText(computadora); pos4.setForeground(Color.blue); boton_pos4.setEnabled(false);
} else if(pos1.getText().equals("") && pos4.getText().equals(computadora) && pos7.getText().equals(computadora)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos2.getText().equals(computadora) pos5.getText().equals(computadora) && pos8.getText().equals("")){
&&
pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); } else if(pos2.getText().equals(computadora) && pos5.getText().equals("") && pos8.getText().equals(computadora)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos2.getText().equals("") && pos5.getText().equals(computadora) && pos8.getText().equals(computadora)){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); } else if(pos3.getText().equals(computadora) pos6.getText().equals(computadora) && pos9.getText().equals("")){
&&
pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos3.getText().equals(computadora) && pos6.getText().equals("") && pos9.getText().equals(computadora)){ pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false);
} else if(pos3.getText().equals("") && pos6.getText().equals(computadora) && pos9.getText().equals(computadora)){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if(pos1.getText().equals(computadora) pos5.getText().equals(computadora) && pos9.getText().equals("")){
&&
pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos1.getText().equals(computadora) && pos5.getText().equals("") && pos9.getText().equals(computadora)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos1.getText().equals("") && pos5.getText().equals(computadora) && pos9.getText().equals(computadora)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos3.getText().equals(computadora) pos5.getText().equals(computadora) && pos7.getText().equals("")){
&&
pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos3.getText().equals(computadora) && pos5.getText().equals("") && pos7.getText().equals(computadora)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false);
} else if(pos3.getText().equals("") && pos5.getText().equals(computadora) && pos7.getText().equals(computadora)){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); }//Evalúa todas las posible opciones para que el usuario no gane. Después agrega el signo a la casilla //y deshabilita el botón correspondiente. else if(pos1.getText().equals(usuario) && pos2.getText().equals(usuario) && pos3.getText().equals("")){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if(pos1.getText().equals(usuario) && pos2.getText().equals("") && pos3.getText().equals(usuario)){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); } else if(pos1.getText().equals("") && pos2.getText().equals(usuario) && pos3.getText().equals(usuario)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos4.getText().equals(usuario) && pos5.getText().equals(usuario) && pos6.getText().equals("")){ pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); } else if(pos4.getText().equals(usuario) && pos5.getText().equals("") && pos6.getText().equals(usuario)){ pos5.setText(computadora);
pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos4.getText().equals("") && pos5.getText().equals(usuario) && pos6.getText().equals(usuario)){ pos4.setText(computadora); pos4.setForeground(Color.blue); boton_pos4.setEnabled(false); } else if(pos7.getText().equals(usuario) && pos8.getText().equals(usuario) && pos9.getText().equals("")){ pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos7.getText().equals(usuario) && pos8.getText().equals("") && pos9.getText().equals(usuario)){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); } else if(pos7.getText().equals("") && pos8.getText().equals(usuario) && pos9.getText().equals(usuario)){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos1.getText().equals(usuario) && pos4.getText().equals(usuario) && pos7.getText().equals("")){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos1.getText().equals(usuario) && pos4.getText().equals("") && pos7.getText().equals(usuario)){ pos4.setText(computadora);
pos4.setForeground(Color.blue); boton_pos4.setEnabled(false); } else if(pos1.getText().equals("") && pos4.getText().equals(usuario) && pos7.getText().equals(usuario)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos2.getText().equals(usuario) && pos5.getText().equals(usuario) && pos8.getText().equals("")){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); } else if(pos2.getText().equals(usuario) && pos5.getText().equals("") && pos8.getText().equals(usuario)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos2.getText().equals("") && pos5.getText().equals(usuario) && pos8.getText().equals(usuario)){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); } else if(pos3.getText().equals(usuario) && pos6.getText().equals(usuario) && pos9.getText().equals("")){ pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos3.getText().equals(usuario) && pos6.getText().equals("") && pos9.getText().equals(usuario)){ pos6.setText(computadora);
pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); } else if(pos3.getText().equals("") && pos6.getText().equals(usuario) && pos9.getText().equals(usuario)){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if(pos1.getText().equals(usuario) && pos5.getText().equals(usuario) && pos9.getText().equals("")){ pos9.setText(computadora); pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); } else if(pos1.getText().equals(usuario) && pos5.getText().equals("") && pos9.getText().equals(usuario)){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos1.getText().equals("") && pos5.getText().equals(usuario) && pos9.getText().equals(usuario)){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); } else if(pos3.getText().equals(usuario) && pos5.getText().equals(usuario) && pos7.getText().equals("")){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); } else if(pos3.getText().equals(usuario) && pos5.getText().equals("") && pos7.getText().equals(usuario)){ pos5.setText(computadora);
pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); } else if(pos3.getText().equals("") && pos5.getText().equals(usuario) && pos7.getText().equals(usuario)){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false); } else if(can!=9){ valido = false;//Variable que controla si la posición es válida. while(valido == false){//Ciclo que se repetirá hasta que la posición sea válida. pos = (int)(Math.random()*9);//Genera un número aleatorio de 0-8. //Verifica que la posición no esté ocupada viendo si el botón está habilitado. En caso de estarlo se asigna el signo //se deshabilita el botón y cambia el valor de la variable que controla el ciclo para que se salga de él. if (pos<1 && boton_pos1.isEnabled()){ pos1.setText(computadora); pos1.setForeground(Color.blue); boton_pos1.setEnabled(false); valido = true; } else if (pos<2 && boton_pos2.isEnabled()){ pos2.setText(computadora); pos2.setForeground(Color.blue); boton_pos2.setEnabled(false); valido = true; } else if (pos<3 && boton_pos3.isEnabled()){ pos3.setText(computadora); pos3.setForeground(Color.blue); boton_pos3.setEnabled(false);
valido = true; } else if (pos<4 && boton_pos4.isEnabled()){ pos4.setText(computadora); pos4.setForeground(Color.blue); boton_pos4.setEnabled(false); valido = true; } else if (pos<5 && boton_pos5.isEnabled()){ pos5.setText(computadora); pos5.setForeground(Color.blue); boton_pos5.setEnabled(false); valido = true; } else if (pos<6 && boton_pos6.isEnabled()){ pos6.setText(computadora); pos6.setForeground(Color.blue); boton_pos6.setEnabled(false); valido = true; } else if (pos<7 && boton_pos7.isEnabled()){ pos7.setText(computadora); pos7.setForeground(Color.blue); boton_pos7.setEnabled(false); valido = true; } else if (pos<8 && boton_pos8.isEnabled()){ pos8.setText(computadora); pos8.setForeground(Color.blue); boton_pos8.setEnabled(false); valido = true; } else if (pos<9 && boton_pos9.isEnabled()){ pos9.setText(computadora);
pos9.setForeground(Color.blue); boton_pos9.setEnabled(false); valido = true; } } } break; } can++; determinarGanador(); }
//Método que evalúa el juego y devuelve 1 en caso de que haya ganado el usuario, 2 si ganó la computadora, 3 si hay empate //o 0 para indicar que siga el juego. private int determinarGanador(){ //Evaluar todas las posibles combinaciones para que el usuario gane. int seguir; if((pos1.getText().equals(usuario) pos3.getText().equals(usuario)) ||
&&
pos2.getText().equals(usuario)
&&
(pos4.getText().equals(usuario) pos6.getText().equals(usuario)) ||
&&
pos5.getText().equals(usuario)
&&
(pos7.getText().equals(usuario) pos9.getText().equals(usuario)) ||
&&
pos8.getText().equals(usuario)
&&
(pos1.getText().equals(usuario) pos7.getText().equals(usuario)) ||
&&
pos4.getText().equals(usuario)
&&
(pos2.getText().equals(usuario) pos8.getText().equals(usuario)) ||
&&
pos5.getText().equals(usuario)
&&
(pos3.getText().equals(usuario) pos9.getText().equals(usuario)) ||
&&
pos6.getText().equals(usuario)
&&
(pos1.getText().equals(usuario) pos9.getText().equals(usuario)) ||
&&
pos5.getText().equals(usuario)
&&
(pos3.getText().equals(usuario) pos7.getText().equals(usuario))){
&&
pos5.getText().equals(usuario)
&&
deshabilitar(); ganado++; cant_gan.setText(String.valueOf(ganado)); //Envía un mensaje al usuario con el resultado del juego y le pregunta si quiere seguir jugando. JOptionPane.showMessageDialog(null, "El juego ha sido ganado por el usuario.", "Resultado", JOptionPane.INFORMATION_MESSAGE); seguir = JOptionPane.showConfirmDialog(null, "¿Desea jugar de nuevo?", "Jugar de nuevo", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(seguir == JOptionPane.YES_OPTION){//En caso de que la respuesta sea SÍ se reinician los controles y empieza de nuevo el juego. can=0; seguirJugando(); } return 1; } //Evaluar todas las posibles combinaciones para que la computadora gane. if((pos1.getText().equals(computadora) && pos2.getText().equals(computadora) && pos3.getText().equals(computadora)) || (pos4.getText().equals(computadora) && pos5.getText().equals(computadora) && pos6.getText().equals(computadora)) || (pos7.getText().equals(computadora) && pos8.getText().equals(computadora) && pos9.getText().equals(computadora)) || (pos1.getText().equals(computadora) && pos4.getText().equals(computadora) && pos7.getText().equals(computadora)) || (pos2.getText().equals(computadora) && pos5.getText().equals(computadora) && pos8.getText().equals(computadora)) ||
(pos3.getText().equals(computadora) && pos6.getText().equals(computadora) && pos9.getText().equals(computadora)) || (pos1.getText().equals(computadora) && pos5.getText().equals(computadora) && pos9.getText().equals(computadora)) || (pos3.getText().equals(computadora) && pos5.getText().equals(computadora) && pos7.getText().equals(computadora))){ deshabilitar(); perdido++; cant_per.setText(String.valueOf(perdido)); //Envía un mensaje al usuario con el resultado del juego y le pregunta si quiere seguir jugando. JOptionPane.showMessageDialog(null, "El juego ha sido ganado por la computadora.", "Resultado", JOptionPane.INFORMATION_MESSAGE); seguir = JOptionPane.showConfirmDialog(null, "¿Desea jugar de nuevo?", "Jugar de nuevo", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(seguir == JOptionPane.YES_OPTION){//En caso de que la respuesta sea SÍ se reinician los controles y empieza de nuevo el juego. can=0; seguirJugando(); } return 2; } if(can==9){ //En caso de que quede empatado el juego. deshabilitar(); empatado++; cant_emp.setText(String.valueOf(empatado)); //Envía un mensaje al usuario con el resultado del juego y le pregunta si quiere seguir jugando. JOptionPane.showMessageDialog(null, "El juego ha terminado empatado.", "Resultado", JOptionPane.INFORMATION_MESSAGE); seguir = JOptionPane.showConfirmDialog(null, "¿Desea jugar de nuevo?", "Jugar de nuevo", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if(seguir == JOptionPane.YES_OPTION){//En caso de que la respuesta sea SÍ se reinician los controles y empieza de nuevo el juego. can=0; seguirJugando(); } return 3; } return 0; }
private void deshabilitar(){ //Deshabilita todos los botones boton_pos1.setEnabled(false); boton_pos2.setEnabled(false); boton_pos3.setEnabled(false); boton_pos4.setEnabled(false); boton_pos5.setEnabled(false); boton_pos6.setEnabled(false); boton_pos7.setEnabled(false); boton_pos8.setEnabled(false); boton_pos9.setEnabled(false); }
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
see
*/ try { for (javax.swing.UIManager.LookAndFeelInfo javax.swing.UIManager.getInstalledLookAndFeels()) {
info
if ("Windows".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Lev el.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Lev el.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Lev el.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Lev el.SEVERE, null, ex); } //
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
:
new NewJFrame().setVisible(true); } }); }
// Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton boton_pos1; private javax.swing.JButton boton_pos2; private javax.swing.JButton boton_pos3; private javax.swing.JButton boton_pos4; private javax.swing.JButton boton_pos5; private javax.swing.JButton boton_pos6; private javax.swing.JButton boton_pos7; private javax.swing.JButton boton_pos8; private javax.swing.JButton boton_pos9; private javax.swing.JLabel cant_emp; private javax.swing.JLabel cant_gan; private javax.swing.JLabel cant_per; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel7; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4; private javax.swing.JSeparator jSeparator5; private javax.swing.JLabel pos1; private javax.swing.JLabel pos2;
private javax.swing.JLabel pos3; private javax.swing.JLabel pos4; private javax.swing.JLabel pos5; private javax.swing.JLabel pos6; private javax.swing.JLabel pos7; private javax.swing.JLabel pos8; private javax.swing.JLabel pos9; // End of variables declaration//GEN-END:variables }