Skip to content

Albertinesilva/chess-system-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🏁Chess System - Java

Curso Udemy: Programação Orientada a Objetos com Java

📌 Sobre o Projeto

Este projeto é uma implementação de um sistema de xadrez em Java, desenvolvido com princípios de Programação Orientada a Objetos (POO). Ele permite jogar uma partida de xadrez diretamente pelo terminal, com regras implementadas e movimentação das peças seguindo as normas oficiais do jogo.


Modelo de domínio Chess System

Modelo de domínio Chess System


Funcionalidades

✅ Representação do tabuleiro e peças usando matriz
✅ Movimentação das peças com validação de jogadas
✅ Troca de turno entre os jogadores
✅ Controle de peças capturadas
✅ Verificação de xeque e xeque-mate
✅ Implementação de regras especiais: Roque, En Passant e Promoção
✅ Tratamento de exceções e validação de entrada do usuário


Conceitos Utilizados

🔹 Programação Orientada a Objetos (POO)

  • Encapsulamento
  • Herança
  • Polimorfismo
  • Classes e Métodos Abstratos
  • Modificadores de Acesso
  • Enumerações
  • Sobrescrita de Métodos (Overriding)
  • Sobrecarga de Métodos (Overloading)

🔹 Estruturas de Dados

  • Matriz (para representar o tabuleiro)
  • Listas (para controle de peças capturadas e em jogo)

🔹 Padrões e Boas Práticas

  • Camadas organizadas → UI, lógica do jogo, e modelo de dados
  • Tratamento de exceções → personalizado (BoardException, ChessException)
  • Métodos auxiliares → para facilitar a leitura e manutenção do código

Estrutura do Projeto

Chess-System-Java/
│── bin/                   # Arquivos compilados
│── lib/                   # Dependências do projeto (se houver)
│── src/                   # Código-fonte do projeto
│   ├── application/       # Ponto de entrada do jogo
│   │   ├── ui/            # Interface de exibição no console
│   │   ├── Program.java   # Classe principal do projeto
│   ├── boardgame/         # Lógica do tabuleiro e peças
│   │   ├── exceptions/    # Exceções relacionadas ao tabuleiro
│   │   ├── Board.java     
│   │   ├── Piece.java     
│   │   ├── Position.java  
│   ├── chess/             # Lógica do jogo de xadrez
│   │   ├── enums/         # Enumerações do jogo
│   │   ├── exceptions/    # Exceções do jogo de xadrez
│   │   ├── pieces/        # Peças do jogo
│   │   ├── ChessMatch.java
│   │   ├── ChessPiece.java
│   │   ├── ChessPosition.java
│── README.md              # Documentação do projeto
│── .gitignore             # Arquivos ignorados pelo Git
│── chess-system-design.png # Diagrama do sistema

🏁 Como Executar o Projeto

🔹 Pré-requisitos

  • Java JDK 8 ou superior
  • Para melhor exibição de cores no terminal, recomenda-se o uso do Git Bash. No entanto, em alguns ambientes, como o PowerShell, as cores também podem funcionar corretamente.

🔹 Passos para execução

  1. Clone o repositório:
    git clone https://github.com/Albertinesilva/Chess-System-Java.git
  2. Acesse a pasta do projeto:
    cd Chess-System-Java
  3. Compile e execute o projeto dentro da pasta bin:
    java application.Program ou, dependendo do ambiente, java application/Program

Exemplo de Saída no Terminal

8  -  -  -  -  -  -  -  -
7  -  -  -  -  -  -  -  -
6  -  -  -  -  -  -  -  -
5  -  -  -  -  -  -  -  -
4  -  -  -  -  -  -  -  -
3  -  -  -  -  -  -  -  -
2  P  P  P  P  P  P  P  P
1  R  N  B  Q  K  B  N  R
   a  b  c  d  e  f  g  h
Turno: 1 | Jogador atual: Brancas
Escolha uma peça para mover:

🔜 Próximos Passos

🔹 Melhorar a interface no console
🔹 Implementar uma versão gráfica (GUI) usando JavaFX
🔹 Suporte a multiplayer online


🎯 Conclusão e Aprendizado

O desenvolvimento deste projeto foi uma excelente experiência para consolidar conhecimentos em Programação Orientada a Objetos (POO) e estrutura de dados. Trabalhar com matrizes para representar o tabuleiro foi um desafio interessante, permitindo explorar manipulação de índices e lógica de movimentação das peças. Além disso, a utilização de listas dinâmicas facilitou o gerenciamento das peças capturadas e disponíveis, tornando o código mais eficiente e organizado.

Este projeto de xadrez foi desenvolvido em Java como parte do curso ministrado pelo professor Nélio Alves.. O código segue a implementação ensinada no curso, com o objetivo de praticar conceitos fundamentais de POO e estrutura de dados.

Além da implementação original, realizei modificações para aprimorar a organização do código e a experiência do usuário. A estrutura dos pacotes foi reorganizada para melhorar a legibilidade e manutenção do projeto. Também fiz ajustes na interface de exibição no console, proporcionando uma melhor experiência visual e usabilidade.

Além de consolidar conceitos de POO e estrutura de dados, este projeto reforçou a importância de boas práticas, como organização modular e tratamento de exceções, preparando-me para desafios mais avançados no desenvolvimento com Java.


🌎 LinkedIn 👤 Autor
LinkedIn Albert Silva

About

♟️ Chess game in Java demonstrating object-oriented design principles, layered architecture and domain logic, with encapsulation, inheritance, collections and game rule implementation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages