Skip to main content

pygame but remade, easy window/player/tile handling

Project description

CRYSTALWINDOW!!!

A tiny but mighty Pygame framework that gives u a full window system, GUI magic, physics, and file power — all packed into one clean lil module.

No setup pain. No folder chaos. Just import it. Boom. Instant game window. 🎮

Quick Start

pip install crystalwindow

then make a new .py file:

from crystalwindow import Window # imports everything from crystalwindow (in this case its Window)

win = Window(800, 600, "Crystal Demo") # setup: Window(width, height, name, icon=MyIcon.ico) win.run() # runs the window loop win.quit # closes it (for RAM n CPU)

Run it — and boom, instant working window. Yes, THAT easy.

Whats Inside

Built-in window manager

Built-in GUI (buttons, sliders, toggles, labels)

Built-in gravity + physics engine

Tilemap system (place & save blocks!)

Image loader (with default base64 logo)

Safe startup (works even inside PyInstaller)

No external dependencies (only pygame)

Works offline

Minimal syntax

Full debug overlay

Window System

from crystalwindow import *

win = Window(800, 600, "My Game", icon="MyIcon.png")

def loop(win):
    win.fill((10, 10, 30))
    # draw or update stuff here

win.run(loop)

Features

  • handles events
  • tracks keys + mouse
  • supports fullscreen
  • safe to close anytime

Player Example

player = Player(100, 100)

def loop(win):
    player.update(win.keys)
    player.draw(win.screen)


move(dx, dy) → moves player

take_damage(x) → takes damage

heal(x) → heals

draw(surface) → renders sprite

TileMap

tilemap = TileMap(32)
tilemap.add_tile(5, 5, "grass")
tilemap.save("level.json")
add_tile(x, y, type)
remove_tile(x, y)
draw(surface)
save(file) / load(file)

GUI System

btn = Button(20, 20, 120, 40, "Click Me!", lambda: print("yo"))
gui = GUIManager()
gui.add(btn)

Use built-in stuff like:

Button(x, y, w, h, text, onclick)

Label(x, y, text)

Toggle(x, y, w, h, text, default=False)

Slider(x, y, w, min, max, default)

Gravity

g = Gravity(0.5)
g.update(player)

makes objects fall realistically. ez.

FileHelper

save_json("data.json", {"coins": 99})
data = load_json("data.json")

Also supports:

save_pickle / load_pickle

FileDialog("save") (tkinter dialog popup)

DrawHelper

DrawHelper.text(win.screen, "Hello!", (10,10), (255,255,255), 24)
DrawHelper.rect(win.screen, (100,0,200), (50,50,100,60))

perfect for ui & quick visuals

Debug Tools

debug = DebugOverlay() debug.toggle() # show or hide FPS debug.draw(win.screen, {"hp": 100, "fps": win.clock.get_fps()})

Example Game

from crystalwindow import *

win = Window(800, 600, "My Cool Game")
player = Player(100, 100)
gravity = Gravity()

def update(win):
    win.fill((25, 25, 40))
    player.update(win.keys)
    gravity.update(player)
    player.draw(win.screen)

win.run(update)

Default Logo

There’s a lil encoded PNG inside the file called:

DEFAULT_LOGO_BASE64

It’s used when no icon is given. Set ur own like:

Window(800, 600, "My Window", icon="MyIcon.png")

or do whatever you want.. i guess.

Example Integration

from crystalwindow import Window

win = Window(800, 600, "My Window", icon="MyIcon.png")

while win.running:
    win.check_events()
    win.fill((10, 10, 20))
    win.run()
    win.quit

Credits

Made by: CrystalBallyHereXD Framework: CrystalWindow Powered by: Pygame License: Free to use, modify, and vibe with 💿

Project details


Release history Release notifications | RSS feed

This version

1.6

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crystalwindow-1.6.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crystalwindow-1.6-py3-none-any.whl (2.9 kB view details)

Uploaded Python 3

File details

Details for the file crystalwindow-1.6.tar.gz.

File metadata

  • Download URL: crystalwindow-1.6.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for crystalwindow-1.6.tar.gz
Algorithm Hash digest
SHA256 96a74b8e226b74e9a3671a080d664235f1d653913d7b77ad158bd54369df689f
MD5 1276d802b4740a78a0c7a07d94b362e4
BLAKE2b-256 507bf427b1da9923ee3cddaa629699e7d095c357b242ff0f57ab2435ed726bd2

See more details on using hashes here.

File details

Details for the file crystalwindow-1.6-py3-none-any.whl.

File metadata

  • Download URL: crystalwindow-1.6-py3-none-any.whl
  • Upload date:
  • Size: 2.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for crystalwindow-1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b37ff1cb3b8d13edd4abe2cfe2423a44c3c85841678d304abadd7f5fdaa56eba
MD5 415686f288da6089d6674b7ca1d1a3b1
BLAKE2b-256 a21b9dce5bfa6292864a75ae5547728d935de2ae01d0dfb0387e279b59f53586

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page