Java AWT Tres en Raya

  • 3,736 views
Uploaded on

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

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

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,736
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. 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. 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. 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