Baixem este .jar para você ver o que eu quero lhe dizer
O jogo da velha está em resolução 200x200, com o mouse, redimensione a janela para uma resolução bem menor, por exemplo e tente jogar, o que aparece nos botões em vez de X ou O é “…”.
https://skydrive.live.com/#cid=0FAD79BBDD195383&id=FAD79BBDD195383%21137
Eu quero poder executar em qualquer resolução em que o X e O aparecessem em vez de “…”.
PS: em Jogo da Velha.jar, clique com o botão direito do mouse, depois clique em baixar, tente executá-lo.
Guilherme Albuquerque
Acho que a solução mais simples seria bloquear o redimensionamento da tela com setResizable(false). Outra opção seria definir o minimumSize (com setMinimumSize() ) para 200,200. Assim, o usuário poderia aumentar a tela, inclusive maximizar, mas nunca deixá-la menor que 200x200.
Abraço.
Outra forma é não usar uma fonte para desenhar o O ou o X (ou seja, não usar texto), mas desenhar o O ou o X dependendo do tamanho do botão.
Como são formas geométricas simples, o único problema é determinar a grossura do “stroke” usado para desenhar o X ou o O.
[quote=TerraSkilll]Guilherme Albuquerque
Acho que a solução mais simples seria bloquear o redimensionamento da tela com setResizable(false). Outra opção seria definir o minimumSize (com setMinimumSize() ) para 200,200. Assim, o usuário poderia aumentar a tela, inclusive maximizar, mas nunca deixá-la menor que 200x200.
Abraço.[/quote]
Ok, muito grato
, agora é o seguinte, se você baixou o arquivo .jar no SkyDrive e jogou, deve ter percebido que quando alguém ou ninguém ganha, ele não inicia outra partida.
Segue abaixo o código-fonte:
package jogo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jogodavelha implements ActionListener {
//Instanciar Variáveis
private JFrame janela = new JFrame("Jogo da Velha");
private JButton button1 = new JButton("");
private JButton button2 = new JButton("");
private JButton button3 = new JButton("");
private JButton button4 = new JButton("");
private JButton button5 = new JButton("");
private JButton button6 = new JButton("");
private JButton button7 = new JButton("");
private JButton button8 = new JButton("");
private JButton button9 = new JButton("");
private String letter = "";
private int count = 0;
private boolean win = false;
public Jogodavelha(){
//Criar Janela do Jogo
janela.setResizable(false);
janela.setSize(200,200);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new GridLayout(3,3));
//Adicionar botões ao Jogo
janela.add(button1);
janela.add(button2);
janela.add(button3);
janela.add(button4);
janela.add(button5);
janela.add(button6);
janela.add(button7);
janela.add(button8);
janela.add(button9);
//Adicionar o ActionListener aos Botões
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
//Tornar a Janela do Jogo Visível
janela.setVisible(true);
}
public void actionPerformed(ActionEvent a) {
count++;
//Calcular de Quem é a Vez
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){
letter = "x";
} else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){
letter = "o";
}
//Mostrar x ou o nos Botões
if(a.getSource() == button1){
button1.setText(letter);
button1.setEnabled(false);
} else if(a.getSource() == button2){
button2.setText(letter);
button2.setEnabled(false);
} else if(a.getSource() == button3){
button3.setText(letter);
button3.setEnabled(false);
} else if(a.getSource() == button4){
button4.setText(letter);
button4.setEnabled(false);
} else if(a.getSource() == button5){
button5.setText(letter);
button5.setEnabled(false);
} else if(a.getSource() == button6){
button6.setText(letter);
button6.setEnabled(false);
} else if(a.getSource() == button7){
button7.setText(letter);
button7.setEnabled(false);
} else if(a.getSource() == button8){
button8.setText(letter);
button8.setEnabled(false);
} else if(a.getSource() == button9){
button9.setText(letter);
button9.setEnabled(false);
}
//Determine Quem Ganhou
//Ganhar na horizontal
if( button1.getText() == button2.getText() && button2.getText() == button3.getText() && button1.getText() != ""){
win = true;
}
else if(button4.getText() == button5.getText() && button5.getText() == button6.getText() && button4.getText() != ""){
win = true;
}
else if(button7.getText() == button8.getText() && button8.getText() == button9.getText() && button7.getText() != ""){
win = true;
}
//Ganhar na vertical
else if(button1.getText() == button4.getText() && button4.getText() == button7.getText() && button1.getText() != ""){
win = true;
}
else if(button2.getText() == button5.getText() && button5.getText() == button8.getText() && button2.getText() != ""){
win = true;
}
else if(button3.getText() == button6.getText() && button6.getText() == button9.getText() && button3.getText() != ""){
win = true;
}
//Ganhar na diagonal
else if(button1.getText() == button5.getText() && button5.getText() == button9.getText() && button1.getText() != ""){
win = true;
}
else if(button3.getText() == button5.getText() && button5.getText() == button7.getText() && button3.getText() != ""){
win = true;
}
else {
win = false;
}
//Mostrar em JOptionPane como diálogo de mensagem se alguém ganhou ou se deu velha
if(win == true){
JOptionPane.showMessageDialog(null,"O jogador de " + letter + " Ganhou!");
} else if(count == 9 && win == false){
JOptionPane.showMessageDialog(null, "Deu Velha!");
}
}
public static void main(String[] args){
new Jogodavelha();
}
}//Fim da Classe Jogodavelha
Isto é, eu gostaria de iniciar outra partida quando o jogo fosse concluído (alguém ou ninguém ganhasse).
Você precisa de um método para reiniciar o jogo, oras!
Algo do tipo:
public void zerarJogo(){
button1.setText("");
button2.setText("");
button3.setText("");
button4.setText("");
button5.setText("");
button6.setText("");
button7.setText("");
button8.setText("");
button9.setText("");
}
// se o jogo encerrar (com vitória ou empate), exibe a mensagem e zera os buttons
if(win == true){
JOptionPane.showMessageDialog(null,"O jogador de " + letter + " Ganhou!");
zerarJogo();
} else if(count == 9 && win == false){
JOptionPane.showMessageDialog(null, "Deu Velha!");
zerarJogo();
}
Abraço.
Bacana, o Java tem uma solução lógica para cada problema, o que mostra que tem várias possibilidades, pra isso deve-se ter criatividade, certo?
Legal, agradeço ![:smiley: :smiley:](//www.guj.com.br/images/emoji/twitter/smiley.png?v=5)
Mas, existe algo de errado com o NetBeans, ou sou eu (o que é mais fácil) porque, quando fiz isso, ele diz:
" expected
could not find symbol" eu detalho melhor abaixo:
[code]public void zerarJogo(){
button1.setText("");
button2.setText("");
button3.setText("");
button4.setText("");
button5.setText("");
button6.setText("");
button7.setText("");
button8.setText("");
button9.setText("");
}
// se o jogo encerrar (com vitória ou empate), exibe a mensagem e zera os buttons
if(win == true){ \aqui o NetBeans diz " expected" could not find symbol;
JOptionPane.showMessageDialog(null,“O jogador de " + letter + " Ganhou!”);
zerarJogo();
} else if(count == 9 && win == false){ \aqui ele diz expected" could not find symbol;
JOptionPane.showMessageDialog(null, “Deu Velha!”);
zerarJogo();
}
public static void main(String[] args){
new Jogodavelha();
}
}[/code]
será melhor usar outro programa? Ou eu estou errado?