Skip to main content

Diamond Square

Implementation of the Diamond–Square Algorithm. This package can draw terrain on pgzero and pygame, and can also set up interactive mode.


Sample Generations

Sample Default Terrain Sample Desert Terrain Sample Tundra Terrain Sample Tropical Terrain Sample Volcanic Terrain Sample Swamp Terrain Sample Ocean Terrain Sample Mars Terrain Sample Crazy Mars Terrain


⚠️ 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

  • Quick Start
    • Installation
  • Why Use Diamond Square?
  • Usage
    • Drawing Terrain
      • Pgzero Example
      • Pygame Example
    • Interactive Mode
      • Pgzero Example
      • Pygame Example
  • Requirements for Pgzero Interactive
  • Versions
  • Coming Soon

Quick Start

Installation

pip install diamond-square

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

Drawing Terrain

Pgzero Example

Look at sample_code_pgzero_drawing_terrain.py for pgzero examples.


Pygame Example

Look at sample_code_pygame_drawing_terrain.py for pygame examples.

The screen parameter must be the pygame display surface.

Interactive Mode

This creates an interactive scene where the user can change the biome and roughness in real time.

Pgzero example

Look at sample_code_pgzero_drawing_terrain.py for pgzero examples.

Pygame example

Look at sample_code_pygame_drawing_terrain.py for pygame examples.


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:

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:

  • draw() → terrain.for_draw(screen)
  • on_mouse_down(pos) → terrain.for_on_mouse_down(pos)
  • on_mouse_up() → terrain.for_on_mouse_up()
  • on_mouse_move(pos) → terrain.for_on_mouse_move(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 sample terrains.

Version 0.0.6: Added functions to add/remove biomes and added external documentation website.

Version 0.0.7: Added pos parameter to determine where to place the terrain and added function to save terrain as an image. Also made interative mode avaliable to 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

(Latest) Version 0.1.0: Fix bugs in C file and save_terrain function


Coming Soon

Version 0.1.1: Refactor Code for OOP Version 0.1.2: Complete documentation

Metadata

Release files for diamond-square 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for diamond-square 0.1.0
File Size Uploaded
diamond_square-0.1.0.tar.gz 6.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for diamond-square 0.1.0
File Interpreter ABI Platform
diamond_square-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.0 MB

Release files / diamond_square-0.1.0.tar.gz

Download URL diamond_square-0.1.0.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
6289e622d477b658fc8783adbe26289daed66a684182e2e4745ff0c59aa7835b
BLAKE2b-256 checksum
How to use checksums
a36e79d7cd68ff11e14e385afb553a062421331b1f1fca16cdd5042b223fa55d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / diamond_square-0.1.0-py3-none-any.whl

Download URL diamond_square-0.1.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b47ee0b43bb1e86061116255b6c7bd9db91380796ea5ac0d0df64a0404f4f47f
BLAKE2b-256 checksum
How to use checksums
68ba5b78519f2e088db78acb257d8e856634c2792cbed89dd7e49067776950b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

This release

0.1.0 This release

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page