Spaces:
Sleeping
Sleeping
title: Battleship AI | |
emoji: π΄ββ οΈ | |
colorFrom: purple | |
colorTo: purple | |
sdk: streamlit | |
sdk_version: 1.40.2 | |
app_file: app.py | |
pinned: false | |
license: apache-2.0 | |
# Battleship Game | |
This is a Streamlit-based implementation of the classic Battleship game, featuring a player versus an AI opponent powered by AWS Bedrock's Claude model. | |
## Features | |
- Interactive game board using Streamlit components | |
- AI opponent using AWS Bedrock's Claude model | |
- Game state persistence using MongoDB Atlas | |
- Randomized ship placement | |
- Turn-based gameplay | |
## Prerequisites | |
- Python 3.7+ | |
- Streamlit | |
- pymongo | |
- boto3 | |
- AWS account with Bedrock Claude 3.5 access on `US-EAST-1`. | |
- MongoDB Atlas account with your IP in the accesslist permission. | |
## Installation | |
1. Clone the repository: | |
``` | |
cd atlas-ai-battleship-game | |
``` | |
2. Install the required packages: | |
``` | |
pip install -r requirements.txt | |
``` | |
3. Set up environment variables: | |
- `MONGODB_ATLAS_URI`: Your MongoDB Atlas connection string | |
- `AWS_ACCESS_KEY`: Your AWS access key | |
- `AWS_SECRET_KEY`: Your AWS secret key | |
## Running the Game | |
To start the game, run: | |
``` | |
streamlit run battleship-game.py | |
``` | |
## How to Play | |
1. The game starts with ships randomly placed on both the player's and opponent's boards. | |
2. Click on the ocean emoji (π) on the attack board to make your move. | |
3. The AI opponent (Claude) will make its move automatically. | |
4. The game continues until all ships of one player are sunk. | |
5. You can mark the ships you have sank. | |
## Code Structure | |
- `main()`: The main function that sets up the Streamlit UI and game flow. | |
- `initialize_game()`: Initializes the game state and database entries. | |
- `render_board()`: Renders the game boards using Streamlit components. | |
- `attack()`: Processes a player's attack. | |
- `opponent_turn()`: Handles the AI opponent's turn using Claude. | |
- `get_bedrock_claude_move()`: Interacts with AWS Bedrock to get Claude's next move. | |
- `update_database()`: Updates the game state in the MongoDB database. | |
## Future Improvements | |
- Implement a more sophisticated AI strategy | |
- Add sound effects and animations | |
- Create a multiplayer mode | |
- Improve the UI/UX with more detailed ship information and game statistics | |
## Contributing | |
Contributions are welcome! Please feel free to submit a Pull Request. | |