Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package jogodavelha;
- import java.awt.Font;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.util.Scanner;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.JButton;
- import javax.swing.JComponent;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.border.EmptyBorder;
- /**
- *
- * @author Vinícius Resende
- */
- public class JogoDaVelha extends javax.swing.JFrame {
- /**
- * Creates new form JogoDaVelha
- */
- JButton cor; // botão para reinicializar os botões
- JButton[] botoes; //vetor de botões
- JPanel PainelJogo; // painel onde ficará os botões
- String simbolo; // aloca X ou 0
- int vezDoJogador; // verifica a vez do jogador
- PrintWriter servidor;
- Scanner leitor; // para receber msgs do servidor
- String jogadorAtual; // saber o nome do jogador acabou de jogar
- String nome; // nome do jogador
- int cont = 0;
- public JogoDaVelha(String nome, int numero) throws IOException {
- super("Jogo da velha");
- this.nome = nome;
- this.vezDoJogador = 1;
- ((JComponent) getContentPane()).setBorder(new EmptyBorder(15, 15, 15, 15));// Cria borda
- PainelJogo = new JPanel(); // cria uma painel
- PainelJogo.setLayout(new GridLayout(3, 3, 10, 10)); // define um grid para colocar os botões, com linha colunas e o espaçamento entre os botões
- cor = new JButton();
- botoes = new JButton[9];
- botoes[0] = new JButton("");
- botoes[1] = new JButton("");
- botoes[2] = new JButton("");
- botoes[3] = new JButton("");
- botoes[4] = new JButton("");
- botoes[5] = new JButton("");
- botoes[6] = new JButton("");
- botoes[7] = new JButton("");
- botoes[8] = new JButton("");
- configurarRede();
- //------------- FORMATAÇÃO DOS BOTÕES ---------------//
- botoes[0].setFont(new Font("Calibri", Font.BOLD, 70));
- botoes[0].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){ // só jogo se for a vez dele
- servidor.println("0 " + nome + " " + numero); // envio msg pro servidor indicando minha jogada
- servidor.flush();
- }
- }
- });
- botoes[1].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){
- servidor.println("1 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[2].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){ // só jogo se for a vez dele
- servidor.println("2 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[3].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){ // só jogo se for a vez dele
- servidor.println("3 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[4].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){
- servidor.println("4 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[5].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){
- servidor.println("5 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[6].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){
- servidor.println("6 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[7].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){
- servidor.println("7 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- botoes[8].addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(vezDoJogador == numero){ // só jogo se for a vez dele
- servidor.println("8 " + nome + " " + numero);
- servidor.flush();
- }
- }
- });
- PainelJogo.add(botoes[0]);
- botoes[1].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[1]);
- botoes[2].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[2]);
- botoes[3].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[3]);
- botoes[4].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[4]);
- botoes[5].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[5]);
- botoes[6].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[6]);
- botoes[7].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[7]);
- botoes[8].setFont(new Font("Calibri", Font.BOLD, 70));
- PainelJogo.add(botoes[8]);
- //--------------------- FIM ---------- ---------------//
- add(PainelJogo); // adiciona o Painel ao Frame
- setLocation(470, 200); // determina localização da janela
- setSize(400, 400); // tamanho da janela
- setVisible(true); // torna visível a janela
- }
- public void jogada(int simbol) { // metodo q vai marcar no tabuleiro e passar a vez do jogador
- //verifica a vez e indica o símbolo do jogador
- if (vezDoJogador == 1) {
- simbolo = "X"; // símbolo do jogador 1 é X
- vezDoJogador = 2; // jogador 1 já jogou. Agora é a vez do jogador 2
- } else {
- simbolo = "O"; // símbolo do jogador 1 é O
- vezDoJogador = 1; // jogador 2 já jogou. Agora é a vez do jogador 1
- }
- botoes[simbol].setText(simbolo); // atribui o símbolo ao botão de acordo com o valor do tipo
- botoes[simbol].setEnabled(false); //deixa o botão desativo após atribuir o símbolo a ele
- cont++; // usado para ver se aconteceu empate (caso tiver preenchido todo tabuleiro)
- verificaLinha();
- verificaColuna();
- verificaDiagonais();
- Empate();
- }
- public void Empate() { // verifica se aconteceu empate
- if (cont == 9) {
- JOptionPane.showMessageDialog(null, "EMPATE");
- System.exit(0);
- }
- }
- public void verificaLinha() { // verifica se alguem ganhou nas linhas
- if (!botoes[0].getText().equals("") && !botoes[1].getText().equals("") && !botoes[2].getText().equals("") && botoes[0].getText().equals(botoes[1].getText()) && botoes[0].getText().equals(botoes[2].getText())) {
- vencedor(); // chamo esse metodo que indica o vencedorr e encerra o programa
- } else if (!botoes[3].getText().equals("") && !botoes[4].getText().equals("") && !botoes[5].getText().equals("") && botoes[3].getText().equals(botoes[4].getText()) && botoes[3].getText().equals(botoes[5].getText())) {
- vencedor(); // chamo esse metodo que indica o vencer e encerra o programa
- } else if (!botoes[6].getText().equals("") && !botoes[7].getText().equals("") && !botoes[8].getText().equals("") && botoes[6].getText().equals(botoes[7].getText()) && botoes[6].getText().equals(botoes[8].getText())) {
- vencedor();
- }
- }
- public void verificaColuna() { // verifica se alguem ganhou nas colunas
- if (!botoes[0].getText().equals("") && !botoes[3].getText().equals("") && !botoes[6].getText().equals("") && botoes[0].getText().equals(botoes[3].getText()) && botoes[0].getText().equals(botoes[6].getText())) {
- vencedor(); // chamo esse metodo que indica o vencedor e encerra o programa
- } else if (!botoes[1].getText().equals("") && !botoes[4].getText().equals("") && !botoes[7].getText().equals("") && botoes[1].getText().equals(botoes[4].getText()) && botoes[1].getText().equals(botoes[7].getText())) {
- vencedor();
- } else if (!botoes[2].getText().equals("") && !botoes[5].getText().equals("") && !botoes[8].getText().equals("") && botoes[2].getText().equals(botoes[5].getText()) && botoes[2].getText().equals(botoes[8].getText())) {
- vencedor();
- }
- }
- public void vencedor() {
- JOptionPane.showMessageDialog(null, (jogadorAtual + " venceu o jogo!"));
- servidor.print("Encerrar");
- System.exit(0);
- }
- public void verificaDiagonais() { // verifica se alguem ganhou nas diagonais
- if (!botoes[0].getText().equals("") && !botoes[4].getText().equals("") && !botoes[8].getText().equals("") && botoes[0].getText().equals(botoes[4].getText()) && botoes[0].getText().equals(botoes[8].getText())) {
- vencedor();
- } else if (!botoes[2].getText().equals("") && !botoes[4].getText().equals("") && !botoes[6].getText().equals("") && botoes[2].getText().equals(botoes[4].getText()) && botoes[2].getText().equals(botoes[6].getText())) {
- vencedor();
- }
- }
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
- private void initComponents() {
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 400, Short.MAX_VALUE)
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 300, Short.MAX_VALUE)
- );
- pack();
- }// </editor-fold>
- private void configurarRede() throws IOException{
- Socket socket = new Socket("192.168.1.120", 5000);
- servidor = new PrintWriter(socket.getOutputStream()); //esse vai enviar msgs pro servidor
- leitor = new Scanner(socket.getInputStream()); // esse vai ler as msgs do servidor
- new Thread(new EscutaServidor()).start(); // thread pra ficar escutando o servidor
- }
- private class EscutaServidor implements Runnable{
- @Override
- public void run() {
- String s;
- while((s = leitor.nextLine()) != null){ // fico lendo tudo q o servidor enviar
- jogadorAtual = s.substring(2, s.length() - 2); // guardo o nome de qm acabou de jogar pra caso ele vencer
- if(s.charAt(0) == '0') { // na posicao 0 da mensagem eu guardo qual posição vou marcar
- jogada(0);
- } else if(s.charAt(0) == '1'){
- jogada(1);
- } else if (s.charAt(0) == '2'){
- jogada(2);
- } else if (s.charAt(0) == '3'){
- jogada(3);
- } else if(s.charAt(0) == '4'){
- jogada(4);
- } else if(s.charAt(0) == '5'){
- jogada(5);
- } else if(s.charAt(0) == '6') {
- jogada(6);
- } else if(s.charAt(0) == '7'){
- jogada(7);
- } else if(s.charAt(0) == '8') {
- jogada(8);
- }
- }
- }
- }
- public static void main(String args[]){
- /* Set the Nimbus look and feel */
- //<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 see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- //</editor-fold>
- /* Create and display the form */
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- //inicio um tabuleiro com os jogadores
- new JogoDaVelha("Vinicius", 2).setVisible(true);
- } catch (IOException ex) {
- Logger.getLogger(JogoDaVelha.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- });
- }
- // Variables declaration - do not modify
- // End of variables declaration
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement