package aulas_poo;
import java.awt.Color;
import java.util.Scanner;
import javax.swing.*;
class Jogo_Da_Velha {
static Scanner input;
static char [][] tabuleiro;
static int jogada = 0, fila, coluna;
static boolean vencedor = false, linhaValida, colunaValida;
public static void infoGame(){
System.out.println("JOGO DA VELHA:\n\n- Tabuleiro 3 X 3\n- 2 jogadores\n- Primeiro o X\n- Segundo o O");
}
public static void inicializandoTabuleiro(){
for(int i = 0; i < tabuleiro.length; i++){
for(int j = 0; j < tabuleiro[i].length; j++){
tabuleiro[i][j] = ' ';
}
}
}
public static void mostrandoTabuleiro(){
System.out.println("_"+tabuleiro[0][0]+"_|_"+tabuleiro[0][1]+"_|_"+tabuleiro[0][2]+"_");
System.out.println("_"+tabuleiro[1][0]+"_|_"+tabuleiro[1][1]+"_|_"+tabuleiro[1][2]+"_");
System.out.println(" "+tabuleiro[2][0]+" | "+tabuleiro[2][1]+" | "+tabuleiro[2][2]+" ");
}
public static void recebendoValores(){
System.out.print("\nInforme a fila (1, 2 ou 3): ");
fila = input.nextInt();
System.out.print("Informe a coluna (1, 2 ou 3): ");
coluna = input.nextInt();
}
public static boolean validarFila(int fil){
if(fil >= 1 && fil <= 3){
linhaValida = true;
}else{
linhaValida = false;
}
return linhaValida;
}
public static boolean validarColuna(int col){
if(col >= 1 && col <= 3){
colunaValida = true;
}else{
colunaValida = false;
}
return colunaValida;
}
public static boolean validarDesocupada(int fil, int col){
if(tabuleiro[fil-1][col-1] == ' '){
return true;
}else{
return false;
}
}
public static boolean validarOcupada(int fil, int col){
if(tabuleiro[fil-1][col-1] == 'X' || tabuleiro[fil-1][col-1] == 'O'){
return false;
}else{
return true;
}
}
public static void efetuarJogada(){
int player = jogada;
if(validarFila(fila)&&validarColuna(coluna)&&validarDesocupada(fila, coluna)&&validarOcupada(fila, coluna)){
if(player % 2 == 0){
jogada++;
tabuleiro[fila-1][coluna-1] = 'X';
}else{
jogada++;
tabuleiro[fila-1][coluna-1] = 'O';
}
}else{
System.out.print("\nEndereço inválido ou posição já ocupada...\n\n");
}
}
public static void testarVencedor(){
if(
tabuleiro[0][0] == 'X' && tabuleiro[0][1] == 'X' && tabuleiro[0][2] == 'X'
|| tabuleiro[1][0] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[1][2] == 'X'
|| tabuleiro[2][0] == 'X' && tabuleiro[2][1] == 'X' && tabuleiro[2][2] == 'X'
|| tabuleiro[0][0] == 'X' && tabuleiro[1][0] == 'X' && tabuleiro[2][0] == 'X'
|| tabuleiro[0][1] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[2][1] == 'X'
|| tabuleiro[0][2] == 'X' && tabuleiro[1][2] == 'X' && tabuleiro[2][2] == 'X'
|| tabuleiro[0][0] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[2][2] == 'X'
|| tabuleiro[2][0] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[0][2] == 'X'
){
JOptionPane.showMessageDialog(null, "☻ Vitória do jogador X ");
vencedor = true;
}else if(
tabuleiro[0][0] == 'O' && tabuleiro[0][1] == 'O' && tabuleiro[0][2] == 'O'
|| tabuleiro[1][0] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[1][2] == 'O'
|| tabuleiro[2][0] == 'O' && tabuleiro[2][1] == 'O' && tabuleiro[2][2] == 'O'
|| tabuleiro[0][0] == 'O' && tabuleiro[1][0] == 'O' && tabuleiro[2][0] == 'O'
|| tabuleiro[0][1] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[2][1] == 'O'
|| tabuleiro[0][2] == 'O' && tabuleiro[1][2] == 'O' && tabuleiro[2][2] == 'O'
|| tabuleiro[0][0] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[2][2] == 'O'
|| tabuleiro[2][0] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[0][2] == 'O'
){
JOptionPane.showMessageDialog(null, " ☻ Vitória do jogador O ");
vencedor = true;
}else if(jogada == 9){
JOptionPane.showMessageDialog(null, "Opa, temos um empate ☺");
vencedor = true;
}
}
public static void main(String[] args) {
input = new Scanner (System.in);
tabuleiro = new char [3][3];
infoGame();
inicializandoTabuleiro();
System.out.print("\n");
while(vencedor == false){
mostrandoTabuleiro();
recebendoValores();
System.out.println("");
efetuarJogada();
testarVencedor();
}
System.out.println("\nResultado: ");
mostrandoTabuleiro();
}
}
2 curtidas
Show mano, ficou top.
Criei um baseado no seu.
class JogoDaVelha {
private static String simbolo;
private static Grid grid = new Grid();
public static void main(String[] args) {
mudarSimbolo();
}
public static String getSimbolo()
{
return simbolo;
}
public static void mudarSimbolo()
{
if(verificarVitoria())
{
grid.desabilitarBotoes();
grid.popUp("☻ Vitória do " + simbolo);
return;
}
if(verificarVelha())
{
grid.popUp("Opa, deu velha ☺");
return;
}
if (simbolo == "X")
{
simbolo = "O";
}
else
{
simbolo = "X";
}
}
private static boolean verificarVitoriaNasLinhas()
{
if (grid.getValorBotao(0) == simbolo && grid.getValorBotao(1) == simbolo && grid.getValorBotao(2) == simbolo)
{
return true;
}
if (grid.getValorBotao(3) == simbolo && grid.getValorBotao(4) == simbolo && grid.getValorBotao(5) == simbolo)
{
return true;
}
if (grid.getValorBotao(6) == simbolo && grid.getValorBotao(7) == simbolo && grid.getValorBotao(8) == simbolo)
{
return true;
}
return false;
}
private static boolean verificarVitoriaNasColunas()
{
if (grid.getValorBotao(0) == simbolo && grid.getValorBotao(3) == simbolo && grid.getValorBotao(6) == simbolo)
{
return true;
}
if (grid.getValorBotao(1) == simbolo && grid.getValorBotao(4) == simbolo && grid.getValorBotao(7) == simbolo)
{
return true;
}
if (grid.getValorBotao(2) == simbolo && grid.getValorBotao(5) == simbolo && grid.getValorBotao(8) == simbolo)
{
return true;
}
return false;
}
private static boolean verificarVitoriaNasDiagonais()
{
if (grid.getValorBotao(0) == simbolo && grid.getValorBotao(4) == simbolo && grid.getValorBotao(8) == simbolo)
{
return true;
}
if (grid.getValorBotao(2) == simbolo && grid.getValorBotao(4) == simbolo && grid.getValorBotao(6) == simbolo)
{
return true;
}
return false;
}
private static boolean verificarVitoria()
{
return verificarVitoriaNasLinhas() || verificarVitoriaNasColunas() || verificarVitoriaNasDiagonais();
}
private static boolean verificarVelha()
{
if(
grid.getValorBotao(0) != ""
&& grid.getValorBotao(1) != ""
&& grid.getValorBotao(2) != ""
&& grid.getValorBotao(3) != ""
&& grid.getValorBotao(4) != ""
&& grid.getValorBotao(5) != ""
&& grid.getValorBotao(6) != ""
&& grid.getValorBotao(7) != ""
&& grid.getValorBotao(8) != ""
)
{
return true;
}
return false;
}
}
import java.awt.Container;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.stream.IntStream;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class Grid extends JFrame {
private Container pane;
Grid()
{
pane = getContentPane();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
pane.setLayout(new GridLayout(3, 3));
IntStream.range(0, 9).forEach(i -> pane.add(botao()));
pack();
setVisible(true);
}
public String getValorBotao(int indice)
{
return ((JButton) pane.getComponent(indice)).getText();
}
public void popUp(String mensagem)
{
JOptionPane.showMessageDialog(null, mensagem);
}
public void desabilitarBotoes()
{
for(Component component : pane.getComponents())
{
((JButton) component).setEnabled(false);
}
}
private JButton botao()
{
JButton botao = new JButton();
botao.setPreferredSize(new Dimension(50, 50));
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent)
{
clicarBotao(botao);
}
});
return botao;
}
private void desabilitarBotao(JButton botao)
{
botao.setEnabled(false);
}
private void clicarBotao(JButton botao)
{
desabilitarBotao(botao);
botao.setText(JogoDaVelha.getSimbolo());
JogoDaVelha.mudarSimbolo();
}
}
Muito bacana!