Buscar

JAVA jogo da velha (TIC TAC TOE), em console, com 3 nivel de dificuldade, humano vs computador, Algum literatura para desenvolver?

Trabalho para aprendizagem onde me exige realizar programação em JAVA no Eclipse, conter pelo menos classes que representem: Jogador, Tabuleiro, Computador. O adversário Computador deve possuir três níveis de dificuldade (por exemplo: ComputadorA, ComputadorB, ComputadorC),representado por uma Classe filha de Computador. E devem executar padrões de jogada diferentes. Não é necessário que um computador seja realmente mais difícil ou fácil do que o outro apenas que joguem seguindo padrões diferentes entre si.

💡 6 Respostas

User badge image

Gabriel Mota

Você vai precisar abrir duas abas uma Janela e outra Jogo da velha. Depois vou incluir a abas Jogo da Velha.

(Janela)

package JogodaVelha;


import javax.swing.JFrame;


public class Janela {

public static void main(String[] args){

JFrame frame = new JFrame("Tic Tae Toe");

frame.setSize(600, 630);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

frame.setResizable(false);

Tabuleiro velha = new Tabuleiro();

velha.setBounds(0, 0, 600, 600);

frame.add(velha);

frame.addMouseListener(velha);

}

}


(Aba Jogo da Velha)

package JogodaVelha;


import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;


import javax.swing.JOptionPane;

import javax.swing.JPanel;


public class Tabuleiro extends JPanel implements MouseListener {

Font minhaFontGrand = new Font("Consolas", Font.BOLD, 80);

Font minhaFontMedia = new Font("Consolas", Font.BOLD, 30);

Font minhaFontPeq = new Font("Consolas", Font.BOLD, 15);

int matriz[][];

int jogador;

int ganhador;

boolean jogarNov;

int v1; 

int v2;

int empates;

 

Color cor1;

public Tabuleiro() {

matriz = new int[3][3];

jogador = 1;

ganhador = 0;

jogarNov = false;

cor1 = new Color(0, 160, 0);

v1 = 0;

v2 = 0;

empates = 0;

for(int lin = 0; lin < 3; lin++) {

for(int col = 0; col < 3; col++) {

System.out.print(matriz[lin][col]);

}

System.out.println();

}


}

@Override

public void paintComponent(Graphics g2) {

Graphics2D g = (Graphics2D) g2.create();

System.out.println();

for(int lin = 0; lin < 3; lin++) {

for(int col = 0; col < 3; col++) {

System.out.print(matriz[lin][col]);

}

System.out.println();

}

if (jogarNov) {

new JOptionPane();

int jogarNovamente = JOptionPane.showConfirmDialog(this, "Deseja jogar novamente?");

if (jogarNovamente == JOptionPane.OK_OPTION) {

jogarNov = false;

reiniciarJogo();

} else {

System.exit(1);

}

}

g.setStroke(new BasicStroke(5)); //deixar a linha mais grossa

g.setFont(minhaFontGrand); //configurar fonte

g.setColor(Color.white);

g.fillRect(0, 0, 600, 600);

g.setColor(Color.blue);

g.drawLine(0, 200, 600, 200);

g.drawLine(0, 400, 600, 400);

g.drawLine(200, 0, 200, 600);

g.drawLine(400, 0, 400, 600);

for(int lin = 0; lin < 3; lin++) {

for(int col = 0; col < 3; col++) {

if (matriz[lin][col] == 1) {

g.setColor(cor1);

g.drawString("o", 75 + col * 200, 125 + lin * 200);

} else if (matriz[lin][col] == 2) {

g.setColor(Color.RED);

g.drawString("x", 75 + col * 200, 125 + lin * 200);

}

}

}

if (ganhador != 0) {

g.setFont(minhaFontMedia);

if(ganhador == 3) {

g.setColor(Color.black);

g.drawString("O jogo empatou", 180, 180);

} else {

if (ganhador == 1)

g.setColor(cor1);

else if (ganhador == 2)

g.setColor(Color.red);

g.setFont(minhaFontMedia);

g.drawString("O jogador" + ganhador + "venceu", 150, 200);

}

jogarNov = true;

repaint();

}

g.setFont(minhaFontPeq);

g.setColor(cor1);

g.drawString("Vitórias: " + v1, 60, 20);

g.setColor(Color.red);

g.drawString("Vitórias: " + v2, 460, 20);

g.setColor(Color.black);

g.drawString("Empates: " + empates, 260, 20);

}


@Override

public void mouseClicked(MouseEvent e) {

//System.out.println(e.getX() + ", " + e.getY());

int linha = e.getY() / 200;

int coluna = e.getX() / 200;

if (linha ==3) {

linha = 2;

if (coluna ==3) {

coluna = 2;

}

System.out.println("Clicou na linha: " + linha);

System.out.println("Clicou na coluna: " + coluna);

if (jogador == 1 && matriz [linha][coluna] == 0) {

matriz[linha][coluna] = 1;

jogador = 2;

} else if (jogador == 2 && matriz [linha][coluna] == 0) {

matriz[linha][coluna] = 2;

jogador = 1;

}

verificaGanhador();

repaint();

}

private void reiniciarJogo() {

for(int lin = 0; lin < 3; lin++) {

for(int col = 0; col < 3; col++) {

matriz[lin][col] = 0;

ganhador = 0;

}

}

}

private void verificaGanhador() {

//verifica as linhas

for(int lin = 0; lin < 3; lin++) {

if (matriz[lin][0] == matriz[lin][1] && matriz [lin][0] == matriz[lin][2] && matriz [lin][0] != 0) {

System.out.println("Houve ganahdor");

ganhador = matriz[lin][0];

break;

}

}

//verifica as colunas

for(int col = 0; col < 3; col++) {

if (matriz[0][col] == matriz[1][col] && matriz [0][col] == matriz[2][col] && matriz [0][col] != 0) {

System.out.println("Houve ganahdor");

ganhador = matriz[0][col];

break;

}

}

//verifica as diagonal principal

if (matriz[0][0] == matriz [1][1] && matriz[0][0] == matriz [2][2]&& matriz [0][0] != 0) {

System.out.println("Houve ganahdor");

ganhador = matriz[0][0];

}

//verifica a diagonal secundária

if (matriz[0][2] == matriz [1][1] && matriz[0][2] == matriz [2][0]&& matriz [0][2] != 0) {

System.out.println("Houve ganahdor");

ganhador = matriz[0][2];

}

if (ganhador == 1) {

v1++; 

} else if (ganhador == 2) {

v2++;

} else {

boolean cheia = true;

for(int lin = 0; lin < 3; lin++) {

for(int col = 0; col < 3; col++) {

if(matriz[lin][col] == 0)

cheia = false;

}

}

if (cheia) {

ganhador = 3;

empates++;

}

}

}

@Override

public void mouseEntered(MouseEvent e) {


}


@Override

public void mouseExited(MouseEvent e) {


}


@Override

public void mousePressed(MouseEvent e) {

}


@Override

public void mouseReleased(MouseEvent e) {

}

}

5
Dislike2
User badge image

Charles Oliveira

nao sei exatamente

2
Dislike0
User badge image

Marcos Fernando

Precisando de assessoria nos trabalhos acadêmicos entre em contato com a equipe SGP

2
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis


✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais