Add README file with game features, setup instructions, and technical details for Tic-Tac-Toe
This commit is contained in:
194
readme.md
Normal file
194
readme.md
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
# 🎮 Tic-Tac-Toe Assembly Game
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
A classic Tic-Tac-Toe game implemented in 8086 Assembly language with graphics, sound effects, and mouse support.
|
||||||
|
|
||||||
|
## 🎯 Features
|
||||||
|
|
||||||
|
- **🎨 Graphics Mode**: VGA graphics with colorful display
|
||||||
|
- **🖱️ Mouse Support**: Click-to-play interface
|
||||||
|
- **🔊 Sound Effects**: PC speaker sound feedback
|
||||||
|
- **👥 Two Players**: Human vs Human gameplay
|
||||||
|
- **🏆 Win Detection**: Automatic win/draw detection
|
||||||
|
- **🎵 Game Over Sounds**: Audio feedback for game completion
|
||||||
|
|
||||||
|
## 📋 Game Components
|
||||||
|
|
||||||
|
The project is organized into modular assembly files:
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `main.asm` | Main program entry point and control flow |
|
||||||
|
| `game.asm` | Core game logic and win detection |
|
||||||
|
| `draw.asm` | Graphics rendering (circles, crosses, grid) |
|
||||||
|
| `sound.asm` | PC speaker sound effects |
|
||||||
|
| `logic.asm` | Mouse handling and timer interrupts |
|
||||||
|
| `data.asm` | Game variables and constants |
|
||||||
|
|
||||||
|
## 🛠️ Requirements
|
||||||
|
|
||||||
|
### Software Requirements
|
||||||
|
- **DOS-compatible system** or **DOS emulator** (DOSBox recommended)
|
||||||
|
- **MASM** (Microsoft Macro Assembler) or compatible assembler
|
||||||
|
- **LINK** (Microsoft Linker)
|
||||||
|
- **VGA-compatible graphics adapter**
|
||||||
|
- **Mouse driver** (for mouse support)
|
||||||
|
|
||||||
|
### Hardware Requirements
|
||||||
|
- **8086 or higher processor**
|
||||||
|
- **VGA graphics capability**
|
||||||
|
- **PC speaker** (for sound effects)
|
||||||
|
- **Mouse** (optional but recommended)
|
||||||
|
|
||||||
|
## 🚀 Setup & Installation
|
||||||
|
|
||||||
|
### Option 1: Using DOSBox (Recommended)
|
||||||
|
|
||||||
|
1. **Install DOSBox**:
|
||||||
|
- Download from [DOSBox official website](https://www.dosbox.com/)
|
||||||
|
- Install following the instructions for your OS
|
||||||
|
|
||||||
|
2. **Setup DOS Development Environment**:
|
||||||
|
```bash
|
||||||
|
# Mount your project directory
|
||||||
|
mount C: E:\git\tictactoe
|
||||||
|
C:
|
||||||
|
|
||||||
|
# You'll need MASM and LINK utilities
|
||||||
|
# These should be available in your DOS development environment
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Assemble and Link**:
|
||||||
|
```bash
|
||||||
|
MASM main.asm;
|
||||||
|
LINK main.obj;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option 2: Using DOSEMU (Linux)
|
||||||
|
|
||||||
|
1. **Install DOSEMU**:
|
||||||
|
```bash
|
||||||
|
sudo apt-get install dosemu
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Setup and compile** as described above
|
||||||
|
|
||||||
|
## 🎮 How to Run
|
||||||
|
|
||||||
|
1. **Start the game**:
|
||||||
|
```bash
|
||||||
|
MAIN.EXE
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Main Menu**:
|
||||||
|
- Press `1` - Start Human vs Human game
|
||||||
|
- Press `2` - Exit game
|
||||||
|
- Press `ESC` - Return to main menu during game
|
||||||
|
|
||||||
|
3. **Gameplay**:
|
||||||
|
- Use mouse to click on grid squares
|
||||||
|
- Player 1 (X) plays first
|
||||||
|
- Players alternate turns
|
||||||
|
- First to get 3 in a row wins!
|
||||||
|
|
||||||
|
## 🎯 Game Rules
|
||||||
|
|
||||||
|
- **Objective**: Get three of your marks (X or O) in a row
|
||||||
|
- **Winning Conditions**:
|
||||||
|
- 3 in a row horizontally
|
||||||
|
- 3 in a row vertically
|
||||||
|
- 3 in a row diagonally
|
||||||
|
- **Draw**: All squares filled with no winner
|
||||||
|
|
||||||
|
## 🎨 Graphics & Sound
|
||||||
|
|
||||||
|
### Graphics Features
|
||||||
|
- **VGA Mode 12h**: 640x480 16-color graphics
|
||||||
|
- **Colorful Interface**: Different colors for X's and O's
|
||||||
|
- **Grid System**: 3x3 clickable game board
|
||||||
|
- **Pixel-perfect Drawing**: Custom circle and cross rendering
|
||||||
|
|
||||||
|
### Sound Features
|
||||||
|
- **Place Sound**: Feedback when placing X or O
|
||||||
|
- **Game Over Sound**: Victory/draw notification
|
||||||
|
- **PC Speaker**: Classic retro sound effects
|
||||||
|
|
||||||
|
## 🔧 Technical Details
|
||||||
|
|
||||||
|
### Memory Model
|
||||||
|
- **Small Model**: Code and data in separate 64KB segments
|
||||||
|
- **Stack**: 256 bytes allocated
|
||||||
|
|
||||||
|
### Interrupts Used
|
||||||
|
- **INT 10h**: Video services
|
||||||
|
- **INT 21h**: DOS services
|
||||||
|
- **INT 33h**: Mouse services
|
||||||
|
- **INT 16h**: Keyboard services
|
||||||
|
- **INT 1Ch**: Timer interrupt
|
||||||
|
|
||||||
|
### Graphics Implementation
|
||||||
|
- **Digital Differential Analyzer**: For smooth circle drawing
|
||||||
|
- **Pixel-level control**: Direct VGA memory manipulation
|
||||||
|
- **Color mapping**: 16-color palette utilization
|
||||||
|
|
||||||
|
## 📁 File Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
tictactoe/
|
||||||
|
├── main.asm # Main program entry point
|
||||||
|
├── game.asm # Game logic and rules
|
||||||
|
├── draw.asm # Graphics and drawing functions
|
||||||
|
├── sound.asm # Sound effects
|
||||||
|
├── logic.asm # Mouse and timer handling
|
||||||
|
├── data.asm # Variables and constants
|
||||||
|
├── MAIN.EXE # Compiled executable
|
||||||
|
├── MAIN.OBJ # Object file
|
||||||
|
├── MAIN.MAP # Memory map
|
||||||
|
└── readme.md # This file
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
1. **"File not found" errors**:
|
||||||
|
- Ensure all `.asm` files are in the same directory
|
||||||
|
- Check file paths in INCLUDE statements
|
||||||
|
|
||||||
|
2. **Graphics not displaying**:
|
||||||
|
- Verify VGA compatibility
|
||||||
|
- Check video mode support
|
||||||
|
|
||||||
|
3. **No sound**:
|
||||||
|
- Ensure PC speaker is functional
|
||||||
|
- Check DOS sound settings
|
||||||
|
|
||||||
|
4. **Mouse not working**:
|
||||||
|
- Install mouse driver (`MOUSE.COM` or similar)
|
||||||
|
- Verify mouse hardware connection
|
||||||
|
|
||||||
|
### Assembly Errors
|
||||||
|
- Ensure MASM version compatibility
|
||||||
|
- Check syntax for 8086 instruction set
|
||||||
|
- Verify memory model directives
|
||||||
|
|
||||||
|
## 👨💻 Author
|
||||||
|
|
||||||
|
**Elmar Kresse** - 19-INB-1 (2021)
|
||||||
|
|
||||||
|
## 🏆 Acknowledgments
|
||||||
|
|
||||||
|
- Circle drawing algorithm inspired by Digital Differential Analyzer
|
||||||
|
- Sound implementation reference: [8086 Assembly Sound Tutorial](http://muruganad.com/8086/8086-assembly-language-program-to-play-sound-using-pc-speaker.html)
|
||||||
|
- Classic DOS game development techniques
|
||||||
|
|
||||||
|
## 🎮 Screenshots
|
||||||
|
|
||||||
|
*Game runs in VGA graphics mode with a colorful 3x3 grid interface*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Enjoy playing this retro Tic-Tac-Toe game! 🎯**
|
Reference in New Issue
Block a user