Java AWT Tres en Raya

5,556 views

Published on

Juego del Tres en Raya utilizando el framework AWT (Abstract Window Toolkit) de Java.

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,556
On SlideShare
0
From Embeds
0
Number of Embeds
3,404
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Java AWT Tres en Raya

  1. 1. En esta práctica vamos a desarrollar de forma sencilla el juego del Tres en Raya utilizando el framework AWT (AbstractWindow Toolkit) de Java. Habrá dos modalidades de juego, Humano contra Humano y Humano contra Computadora. Eneste último caso la lógica de la computadora se limita a buscar de forma aleatoria una casilla vacía.Etiquetas: Frame, Panel, paquete AWT, Gestión de eventos, Notificador, Listener, interfaces y adaptadores, ActionListener,WindowAdapter,…TresRaya.javapackage practicas.java.paqueteAWT;import java.awt.Checkbox;import java.awt.CheckboxGroup;import java.awt.Color;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Label;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.Button;import java.util.ArrayList;public class TresRaya extends Frame implements ActionListener, WindowListener { private static final long serialVersionUID = 1L; Button[][] teclas = new Button[3][3]; CheckboxGroup cbg = null; int jugador = 1; boolean hayganador = false; String modalidad = ""; int contteclas = 0; boolean partidaIniciada = false; Label msg = null; bitCoach::Juan Bautista Cascallar Lorenzo
  2. 2. public TresRaya(){ this.addWindowListener(this); this.setTitle("Tres en Raya"); this.setSize(425,180); this.setLayout(null); Panel panel01 = new Panel(); panel01.setBounds(15, 39, 120, 120); panel01.setLayout(new GridLayout(3,3)); for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ teclas[i][j] = new Button(); teclas[i][j].setName(String.valueOf(i)+String.valueOf(j)); teclas[i][j].setLabel(""); teclas[i][j].addActionListener(this); panel01.add(teclas[i][j]); } } this.add(panel01); Panel panel02 = new Panel(); panel02.setBounds(180, 40, 200, 100); panel02.setLayout(new GridLayout(4,0)); cbg = new CheckboxGroup(); Checkbox HvsC = new Checkbox("Humano vs Computadora",cbg,true); HvsC.setName("HC"); Checkbox HvsH = new Checkbox("Humano vs Humano",cbg,false); HvsH.setName("HH"); panel02.add(HvsC); panel02.add(HvsH); msg = new Label(); msg.setBackground(Color.YELLOW); msg.setText("Selc. modalidad -> Reiniciar"); panel02.add(msg); Button btn_Reiniciar = new Button("Reiniciar"); btn_Reiniciar.setName("reiniciar"); btn_Reiniciar.addActionListener(this); panel02.add(btn_Reiniciar); this.add(panel02);} bitCoach::Juan Bautista Cascallar Lorenzo
  3. 3. private void MarcacionDePosicionJugada(Button t){ int f = Integer.valueOf(t.getName().charAt(0)+""); int c = Integer.valueOf(t.getName().charAt(1)+""); if(modalidad.equals("HH")){ if((partidaIniciada == true) && (contteclas < 9)){ if(jugador == 1){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("X"); jugador = 2; contteclas++; comprobarGanador("X"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[X]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } }else if(jugador == 2){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("O"); jugador = 1; contteclas++; comprobarGanador("O"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[O]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } } }else if(modalidad.equals("HC")){ if((partidaIniciada == true) && (contteclas < 9)){ if(jugador == 1){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("H"); jugador = 2; contteclas++; comprobarGanador("H"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[H]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } bitCoach::Juan Bautista Cascallar Lorenzo
  4. 4. if(jugador == 2){ //Casilla libre de forma aleatoria... if((hayganador == false) && (contteclas < 9)){ ArrayList<String> casillas_libres = new ArrayList<String>(); int indice = 0; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ if(teclas[i][j].getLabel().equals("")){ casillas_libres.add(indice,teclas[i][j].getName()); indice++; } } } int x = (int) (Math.random()*casillas_libres.size()-1); String libre = casillas_libres.get(x); f = Integer.valueOf(libre.charAt(0)+""); c = Integer.valueOf(libre.charAt(1)+""); teclas[f][c].setLabel("C"); jugador = 1; contteclas++; comprobarGanador("C"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[C]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } } }//Fin if modalidad }//Fin funcion private void comprobarGanador(String jug){ //Comprobar filas for(int f=0; f<3; f++){ if((teclas[f][0].getLabel().equals(jug)) &&(teclas[f][0].getLabel().equals(teclas[f][1].getLabel())) && (teclas[f][0].getLabel().equals(teclas[f][2].getLabel()))){ this.hayganador = true; break; } } //Comprobar columnas for(int c=0; c<3; c++){ if((teclas[0][c].getLabel().equals(jug)) &&(teclas[0][c].getLabel().equals(teclas[1][c].getLabel())) && (teclas[0][c].getLabel().equals(teclas[2][c].getLabel()))){ this.hayganador = true; break; } } //Comprobar diagonales if(((teclas[0][0].getLabel().equals(jug)) &&(teclas[0][0].getLabel().equals(teclas[1][1].getLabel())) && (teclas[0][0].getLabel().equals(teclas[2][2].getLabel()))) ||((teclas[2][0].getLabel().equals(jug)) &&(teclas[2][0].getLabel().equals(teclas[1][1].getLabel())) && (teclas[2][0].getLabel().equals(teclas[0][2].getLabel())))){ this.hayganador = true; } }//Fin función bitCoach::Juan Bautista Cascallar Lorenzo
  5. 5. public void ReiniciarJuego(){ partidaIniciada = true; jugador = 1; contteclas = 0; hayganador = false; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ teclas[i][j].setLabel(""); } } Checkbox ck = cbg.getSelectedCheckbox(); modalidad = ck.getName(); msg.setText("Jugando en Modalidad: " + modalidad); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Button teclaPulsada = (Button)e.getSource(); if(teclaPulsada.getName().equals("reiniciar")){ ReiniciarJuego(); }else{ MarcacionDePosicionJugada(teclaPulsada); } } @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub System.exit(0); } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub }} bitCoach::Juan Bautista Cascallar Lorenzo

×