# ♟️ Online Chess Game via Terminal ![Version](https://img.shields.io/github/v/release/jhenriquem/chess-game?label=vers%C3%A3o) ![Go Version](https://img.shields.io/github/go-mod/go-version/jhenriquem/chess-game) ![Made with Go](https://img.shields.io/badge/feito%20com-Go-00ADD8?logo=go) ![chess-game image](./chess-game.png) 🧠 I decided to create this project for the [Hack Club Summer of Making 2025!](https://summer.hackclub.com/). A server and client for an online chess game developed with Go. The server allows two players to connect, manages the game, and checks the connection integrity using a ping/pong system. The client is responsible for connecting to the server and rendering the game on the player's terminal. ### ⚙️ Installation - Access [release](https://github.com/jhenriquem/chess-game/releases/tag/v0.1.2) and download the executable for your operating system. - Access it via the terminal and run it, passing a name for your player: `chess-game.exe [name]` ### 💡 How to play? - 1. Run the app and enter your nickname. - 2. Wait for an opponent. - 3. When it's your turn to play, a field marked with ```> ``` will appear, and you can submit your move. - 4. Moves follow UCI notation; access ["UCI notation"](https://en.wikipedia.org/wiki/Universal_Chess_Interface) to learn how it works. ### 🚀 Overview - Server: Implemented in Go, using WebSockets for real-time communication between players. - Client: Terminal-based interface that allows players to connect to the server and play chess matches. - Technologies: - Go - WebSockets - tcell (for rendering in the terminal) ## 📁 Project Structure ```bash chess-game/ ├── client/ │ ├── ui/ # Rendering │ └── main.go # Entry point ├── model/ ├── net/ # Connections ├── server/ │ ├── handler/ # Connection and match management │ ├── game/ # Game logic │ └── main.go # Entry point ├── go.mod └── README.md (this file) ```