Metadata-Version: 2.5
Name: diamond_square
Version: 0.1.6
Summary: A package which can implement and draw the diamond-square in pgzero and pygame. Uses C for fast rendering.
Project-URL: Homepage, https://github.com/gootyboy/diamond_square
Project-URL: Issues, https://github.com/gootyboy/diamond_square/issues
Author-email: Gautam Pulugurta <gootyboy@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.5
Requires-Dist: pgzero
Requires-Dist: pillow
Requires-Dist: pygame
Description-Content-Type: text/markdown

# Diamond Square

Implementation of the [Diamond–Square Algorithm](https://en.wikipedia.org/wiki/Diamond-square_algorithm). This package can draw terrain on pgzero and pygame, and can also set up interactive mode.

---

## Sample Generations

![Sample Default Terrain](https://gootyboy.github.io/project_details/diamond-square/default_terrain.png)
![Sample Desert Terrain](https://gootyboy.github.io/project_details/diamond-square/desert_terrain.png)
![Sample Tundra Terrain](https://gootyboy.github.io/project_details/diamond-square/tundra_terrain.png)
![Sample Tropical Terrain](https://gootyboy.github.io/project_details/diamond-square/tropical_terrain.png)
![Sample Volcanic Terrain](https://gootyboy.github.io/project_details/diamond-square/volcanic_terrain.png)
![Sample Swamp Terrain](https://gootyboy.github.io/project_details/diamond-square/swamp_terrain.png)
![Sample Ocean Terrain](https://gootyboy.github.io/project_details/diamond-square/ocean_terrain.png)
![Sample Mars Terrain](https://gootyboy.github.io/project_details/diamond-square/mars_terrain.png)
![Sample Crazy Mars Terrain](https://gootyboy.github.io/project_details/diamond-square/mars_crazy.png)

---

> ### ⚠️ ***You MUST include all four interactive functions for pgzero interactive***
>
> Missing even one will cause failures or unpredictable behavior.
>
> ### ⚠️ ***You must pass the pgzero screen into draw functions***
>
> Use `terrain.draw(screen)` or `terrain.for_draw(screen)` — the yellow underline is expected.

---

## Table of Contents

- Why Use Diamond Square?
- Usage
  - Pgzero Examples
  - Pygame Examples
  - Image Saving Examples
  - Custom Biome Examples
- Requirements for Pgzero Interactive
- Versions
- Coming Soon

---

## Why Use diamond-square?

This package provides a complete implementation of the Diamond–Square algorithm with:

- Fast rendering of the Diamond-Square algorithm written in C.

- Multiple built‑in biomes.

- Adjustable roughness and scale.

- Support for pgzero and pygame.

- Optional interactive mode.

- The ability to save generated terrain as an image.

- Functions to add or remove biomes dynamically.

It is designed for both experimentation and game development, making terrain generation simple and customizable.

---

## Usage

### Pgzero Examples

Look at /sample_codes/pgzero_draw_terrain.py

### Pygame Examples

Look at /sample_codes/pygame_draw_terrain.py

### Image Saving Examples

Look at /sample_codes/save_terrain.py

### Custom Biome Examples

Look at /sample_code/custom_biome.py

---

## Requirements for Pgzero Interactive

For Pgzero Interative Mode, it requires **all four** of the following functions to be placed in their corresponding pgzero event handlers:

```python
terrain.for_draw(screen)
terrain.for_on_mouse_down(pos)
terrain.for_on_mouse_up()
terrain.for_on_mouse_move(pos)
```

If **any one** of these is missing, the interactive mode will:

- fail to update correctly

- behave unpredictably

- or stop working entirely

These must be placed in these functions in pgzero:

- `def draw():` → `terrain.draw_func(screen)`

- `on_mouse_down(pos)` → `terrain.on_mouse_down_func(pos)`

- `on_mouse_up()` → `terrain.on_mouse_up_func()`

- `on_mouse_move(pos)` → `terrain.on_mouse_move_func(pos)`  

---

## Versions

Version 0.0.1: Main code for diamond-square added.

Version 0.0.2: Updated README file and added documentation.

Version 0.0.3: Fixed bugs and errors.

Version 0.0.4: Added sample terrain.

Version 0.0.5: Added more sample terrains.

Version 0.0.6: Added functions to add/remove biomes.

Version 0.0.7: Added pos parameter to determine where to place the terrain, added a function to save terrain as an image, and made interative mode avaliable in pgzero.

Version 0.0.8: Added C file for fast rendering of the Diamond–Square Algorithm.

Version 0.0.9: Made pgzero and pygame interactive mode into one function and added documentation.

Version 0.1.0: Fix bugs in C file and save_terrain function.

Version 0.1.1: Refactor Code for more OOP.

Version 0.1.2: Add documentation.

Version 0.1.3: Complete documentation, fix bugs, and remove duplicate functions.

Version 0.1.4: Bug fixes.

Version 0.1.5: Bug fixes, documentation changes, added utils.py, and updated sample code files.

**(Latest) Version 0.1.6**: Added custom_biome.py in sample_codes.

---

## Coming Soon

Version 0.1.7: Complete documentation.
Version 0.1.8: Add re-generate button for interactive mode pgzero and pygame.
