https://github.com/kh3rld/prisoners-dilemma
The Prisoner's Dilemma Game is a strategic game built with Go, allowing players to explore the classic game theory problem.
https://github.com/kh3rld/prisoners-dilemma
cli game golang
Last synced: over 1 year ago
JSON representation
The Prisoner's Dilemma Game is a strategic game built with Go, allowing players to explore the classic game theory problem.
- Host: GitHub
- URL: https://github.com/kh3rld/prisoners-dilemma
- Owner: kh3rld
- License: mit
- Created: 2024-08-10T09:33:06.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-16T06:15:32.000Z (almost 2 years ago)
- Last Synced: 2024-09-16T19:27:40.169Z (almost 2 years ago)
- Topics: cli, game, golang
- Language: Go
- Homepage:
- Size: 112 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Prisoner's Dilemma Game
## Overview
The **Prisoner's Dilemma Game** is a strategic [game](https://en.wikipedia.org/wiki/Prisoner%27s_dilemma) built with Go, allowing players to explore the classic game theory problem. Players can compete against each other either locally or over a network, choosing between cooperation or defection in each round. The outcome of each decision impacts their "prison time," with the goal of minimizing their own time.
## Features
- **Local and Network Play**: Choose to play against another player on the same machine or over the network.
- **Multiple Rounds**: Customize the number of rounds and view summaries after the game.
- **AI Opponent**: Play against different AI strategies like Tit-for-Tat or Random (future release).
- **Futuristic UI**: Experience a sleek, animated interface with cool ASCII art and a modern design (future release).
## Getting Started
### Prerequisites
- Go 1.20 or higher
- A terminal or command line interface
### Installation
1. **Clone the repository**:
```bash
git clone https://github.com/kh3rld/prisoners-dilemma.git
```
2. **Navigate to the project directory**:
```bash
cd prisoners-dilemma
```
3. **Initialize the Go module**:
```go
go mod init github.com/kh3rld/prisoners-dilemma
```
4. **Tidy up the dependencies**:
```go
go mod tidy
```
5. **Build the project**:
```go
cd ./cmd && go build .
```
6. **Run the game**:
```bash
./cmd
```
### Usage
When you start the game, you'll be presented with a menu:
- **1. Play Locally**: Start a local game between two players on the same machine.
- **2. Play Over Network**: Host or join a game over the network.
- **3. View Instructions**: Learn how to play the game.
- **4. Quit**: Exit the game.
Follow the prompts to enter your choices and enjoy the game!
### Playing Over Network
To play over the network:
1. **Host a Game**: Select "Host a Game" on one machine and wait for the other player to join.
2. **Join a Game**: Select "Join a Game" on the second machine and enter the host’s IP address.
### Game Rules
1. Each player can choose to **cooperate** or **defect**.
2. If both players cooperate, they each get **1 year** in prison.
3. If one defects while the other cooperates, the defector goes free and the cooperator gets **3 years** in prison.
4. If both defect, they each get **2 years** in prison.
5. The goal is to minimize your prison time over multiple rounds.
## Contributing
We welcome contributions! Please fork the repository and submit a pull request with your improvements.
### Future Enhancements
- Add AI opponents with different strategies.
- Implement a leaderboard for networked games.
- Enhance the user interface with more animations and effects.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Acknowledgments
- Special thanks to the Go community and open-source contributors.
- Inspired by the classic game theory problem, the **Prisoner's Dilemma**.
## Contact
Feel free to reach out via [X](https://x.com/kh3rld) or [GitHub](https://github.com/kh3rld) for any questions or feedback.