Spaces:
Running
title: BattleWords
emoji: π²
colorFrom: blue
colorTo: indigo
sdk: streamlit
sdk_version: 1.25.0
python_version: 3.1
app_file: app.py
tags:
- game
- vocabulary
- streamlit
- education
BattleWords
This project is used by huggingface.co as a demonstration of interactive word games in Python.
BattleWords is a vocabulary learning game inspired by classic Battleship mechanics. The objective is to discover hidden words on a grid, earning points for strategic guessing before all letters are revealed.
Features
- 12x12 grid with six hidden words (2x4-letter, 2x5-letter, 2x6-letter)
- Words placed horizontally or vertically
- Radar visualization to help locate word boundaries
- Reveal grid cells and guess words for points
- Scoring tiers: Good (34β37), Great (38β41), Fantastic (42+)
- Responsive UI built with Streamlit
- Deterministic seed support (Beta/Full)
- Keyboard navigation and guessing (Beta/Full)
- Overlapping words on shared letters (Beta)
- Daily and practice modes (Full)
- Leaderboards, persistence, and advanced features (Full)
Installation
- Clone the repository:
git clone cd battlewords- (Optional) Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate` - Install dependencies:
pip install -r specs/requirements.md
Running BattleWords
You can run the app locally using either uv or Streamlit directly:
uv run streamlit run app.py
or
streamlit run app.py
Folder Structure
app.pyβ Streamlit entry pointbattlewords/β Python packagemodels.pyβ data models and typesword_loader.pyβ word list loading and validationgenerator.pyβ word placement logiclogic.pyβ game mechanics (reveal, guess, scoring)ui.pyβ Streamlit UI compositionwords/wordlist.txtβ candidate words
specs/β documentation (specs.md,requirements.md)tests/β unit tests
How to Play
- Click grid squares to reveal letters or empty spaces.
- After revealing a letter, enter a guess for a word in the text box.
- Earn points for correct guesses and bonus points for unrevealed letters.
- The game ends when all six words are found. Your score tier is displayed.
Development Phases
- Proof of Concept (0.1.0): No overlaps, basic UI, single session.
- Beta (0.5.0): Overlaps allowed on shared letters, responsive layout, keyboard support, deterministic seed.
- Full (1.0.0): Enhanced UX, persistence, leaderboards, daily/practice modes, advanced features.
See specs/requirements.md and specs/specs.md for full details and roadmap.
License
BattlewordsTM. All Rights Reserved. All content, trademarks and logos are copyrighted by the owner.
Hugging Face Spaces Configuration
BattleWords is deployable as a Hugging Face Space. To configure your Space, add a YAML block at the top of your README.md:
---
title: BattleWords
emoji: π²
colorFrom: blue
colorTo: indigo
sdk: streamlit
sdk_version: 1.25.0
python_version: 3.10
app_file: app.py
tags:
- game
- vocabulary
- streamlit
- education
---
Key parameters:
title,emoji,colorFrom,colorTo: Visuals for your Space.sdk: Usestreamlitfor Streamlit apps.sdk_version: Latest supported Streamlit version.python_version: Python version (default is 3.10).app_file: Entry point for your app.tags: List of descriptive tags.
Dependencies:
Add a requirements.txt with your Python dependencies (e.g., streamlit, etc.).
Port:
Streamlit Spaces use port 8501 by default.
Embedding:
Spaces can be embedded in other sites using an <iframe>:
<iframe src="https://Surn-BattleWords.hf.space?embed=true" title="BattleWords"></iframe>
For full configuration options, see Spaces Config Reference and Streamlit SDK Guide.