Você está na página 1de 6

Jogo Da Velha

- Parte 1 -

Fazendo a parte
grfica do jogo da Velha

por: Leri Oliveira


Equipe PAJ cti.paje@gmail.com
http://www.cti.furg.br/informatica/paje

Primeiro vamos usar a classe JFrame para criar a janela. No esquea que preciso salvar o arquivo com o
nome de Velha.java
import javax.swing.JFrame;
public class Velha {
private static JFrame frame = new JFrame("Jogo da Velha");
public static void main(String[] args) {
// determina o tamanho do frame
frame.setSize(460,480);
// torna o frame visvel
frame.setVisible(true);
}
}
Provavelmente depois de rodar a aplicao no foi possvel finalizar ela. Isso acontece porque no foi
determinada a ao de fechar o programa, ento vamos tratar o evento da janela para fazer isso.
import javax.swing.JFrame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Velha {
private static JFrame frame = new JFrame("Jogo da Velha");
public static void main(String[] args) {
// adiciona o evento ao frame
frame.addWindowListener(new eventojanela());
// determina o tamanho do frame
frame.setSize(460,480);
// torna o frame visvel
frame.setVisible(true);
}
/*
* classe de Eventos da Janela
*/
private static class eventojanela extends WindowAdapter
{

// mtodo para fechar a janela


public void windowClosing(WindowEvent e) {
// mtodo para finalizar a aplicao
System.exit(0);
}

}
}

Agora j conseguimos fechar a aplicao. Para fazer um jogo da velha temos varias opes, vou usar a
mais fcil, que no fica to bem apresentvel, mas serve para aprendizado. Vamos adicionar um layout ao Frame.
Utilizando o layout de grade 3x3 conseguiremos chegar a um tabuleiro de jogo da velha.
import javax.swing.JFrame;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Velha {
private static JFrame frame = new Jframe("Jogo da Velha");
public static void main(String[] args) {
// GridLayout cria um layout de grade do tipo 3x3 para o frame
frame.getContentPane().setLayout(new GridLayout(3,3));
// adiciona o evento ao frame
frame.addWindowListener(new eventojanela());
// determina o tamanho do frame
frame.setSize(460,480);
// torna o frame visvel
frame.setVisible(true);
}
/*
* classe de eventos da janela
*/
private static class eventojanela extends WindowAdapter
{

// mtodo para fechar a janela


public void windowClosing(WindowEvent e) {
// mtodo para finalizar a aplicao
System.exit(0);
}

}
}
Aparentemente no ocorreu nada, pois ainda no adicionamos nada na grade. Vamos adicionar Botes.
Vamos criar um vetor de Objetos do tipo JButton para adicionar grade. No se esquecendo que todos os
atributos devem ser estticos(static) para serem usados no public static void main(String args[]).
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Velha {


private static JFrame frame = new Jframe("Jogo da Velha");
// vetor de objetos da classe JButton.
private static JButton botoes[] = new JButton[9];
public static void main(String[] args) {
// GridLayout cria um layout de grade do tipo 3x3 para o frame
frame.getContentPane().setLayout(new GridLayout(3,3));
for(int pos = 0; (pos < 9); pos++) {
/* cria um novo objeto de JButton para cada posio do vetor
o ImageIcon serve para colocar imagens no boto:
ex: new ImageIcon( "imagens/botao.jpg" ) /*
botoes[pos] = new JButton(new ImageIcon(""));
// adiciona os botes ao frame
frame.getContentPane().add(botoes[pos]);
}
// adiciona o evento ao frame
frame.addWindowListener(new eventojanela());
// determina o tamanho do frame
frame.setSize(460,480);
// torna o frame visvel
frame.setVisible(true);
}
/*
* classe de eventos da janela
*/
private static class eventojanela extends WindowAdapter {
// mtodo para fechar a janela
public void windowClosing(WindowEvent e) {
// mtodo para finalizar a aplicao
System.exit(0);
}
}
}
Agora j conseguimos ver os botes s que sem as imagens. Voc pode colocar qualquer imagem no local
indicado no cdigo, que elas aparecero. Uma boa idia inicializ-los com uma imagem somente com o fundo
branco. E depois, a medida que for acontecendo as jogadas, trocar a imagem por crculo ou xis, mas para isto
precisamos criar uma classe de eventos do mouse, e adicionar o evento aos botes.
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Velha {


private static JFrame frame = new Jframe("Jogo da Velha");
// vetor de objetos da classe JButton.
private static JButton botoes[] = new JButton[9];
public static void main(String[] args) {
// GridLayout cria um layout de grade do tipo 3x3 para o frame
frame.getContentPane().setLayout(new GridLayout(3,3));
for(int pos = 0; (pos < 9) ; pos++) {
/* cria um novo objeto de JButton para cada posio do vetor
o ImageIcon serve para colocar imagens no boto:
ex: new ImageIcon( "imagens/botao.jpg" ) */
botoes[pos] = new JButton(new ImageIcon(""));
// adiciona os botes ao frame
frame.getContentPane().add(botoes[pos]);
}
//adiciona o evento ao frame
frame.addWindowListener(new eventojanela());
//determina o tamanho do frame
frame.setSize(460,480);
//torna o frame visvel
frame.setVisible(true);
}
/*
* classe de eventos da janela
*/
private static class eventojanela extends WindowAdapter {
// mtodo para fechar a janela
public void windowClosing(WindowEvent e) {
// mtodo para finalizar a aplicao
System.exit(0);
}
}
/*
* classe de eventos do mouse
*/
private static class EventoMouse implements ActionListener
{

/* atravs deste mtodo conseguimos saber o que foi clicado, entre outras
coisas para maiores informaes sempre vlido dar uma olhada na API do
Java. Mas o mtodo getSource() retorna um objeto do que foi clicado e dando
um casting ((JButton)e.getSource()) conseguimos manipular o objeto JButton
clicado. */

public void actionPerformed(ActionEvent e) {


/* com o mtodo setIcon podemos modificar o ImageIcon, e
conseqentemente a imagem do boto no caso a nova imagem ser
bola.jpg. */
((JButton)e.getSource()).setIcon(new ImageIcon("images/bola.jpg"));
}
}
}
Com isso j conseguimos fazer a parte grfica de um jogo da velha. Ento daqui em diante pura lgica...
at a prxima!

Você também pode gostar