pyscrh
A tiny, Scratch-style sprite library built on pygame, made for people moving from Scratch to Python.
Every Scratch block you know has a short Python equivalent — no game loop, no event handling, no surface juggling to remember.
Install
pip install pyscrh
(Requires Python 3.8+ and pygame, which is installed automatically.)
Quick start
import pyscrh
apple = Sprite("apple.png") # load an image (PNG with transparency)
apple.turnway = "lr" # flip left-right when bouncing
def forever():
apple.move(5) # walk 5 steps in the current direction
apple.edgeb() # bounce off the screen edge
# stop_all() # call this anywhere to quit the game
clickGF() # start the game
Just import pyscrh and you're done — Sprite, clickGF, stop_all,
WIDTH and HEIGHT are available directly, just like import pgzrun.
That's it. The apple walks right, bounces off the right edge, walks left, bounces off the left edge, and repeats.
Scratch → Python cheat sheet
| Scratch block | pyscrh |
|---|---|
| move 10 steps | sprite.move(10) |
| turn 15° clockwise | sprite.turnright(15) |
| turn 15° counter-clockwise | sprite.turnleft(15) |
| go to x: y: | sprite.gotoxy(x, y) |
| go to random position | sprite.goto("r") |
| go to another sprite | sprite.goto("other_name") |
| glide 1 sec to x: y: | sprite.glidexy(1, x, y) |
| glide to another sprite | sprite.glideto(1, "other_name") |
| point in direction 90 | sprite.point(90) |
| point towards mouse | sprite.pointtow("m") |
| point towards another sprite | sprite.pointtow("other_name") |
| if on edge, bounce | sprite.edgeb() |
How it works
You only write one required function:
forever()— called once every frame, like Scratch's forever block. Putsprite.move(...),edgeb(), etc. in here. Nodtparameter needed; the library handles timing.
An optional draw() is also called every frame, after all sprites are
drawn, if you want extra drawing (text, backgrounds, etc.).
Call clickGF() to start, and stop_all() to close the window and quit.
pyscrh handles the window, clock, event loop and rendering for you.
API reference
Sprite(image_path, name="")
Create a sprite from an image file.
| Method | Description |
|---|---|
move(steps) |
Walk steps pixels in the current direction. |
turnright(deg) / turnleft(deg) |
Rotate by deg degrees. |
gotoxy(x, y) |
Jump to (x, y). |
goto("r") / goto("m") |
Jump to a random spot / the mouse. |
glidexy(sec, x, y) |
Glide to (x, y) over sec seconds. |
glideto(sec, "r") / glideto(sec, "m") |
Glide to a spot / the mouse. |
point(deg) |
Set direction to deg degrees. |
pointtow("r") / pointtow("m") |
Face a random direction / the mouse. |
edgeb() |
Bounce off the screen edge. |
| Attribute | Description |
|---|---|
x, y |
Center position (read or write). |
angle |
Direction in degrees (0 = right, 90 = down). |
turnway |
"r" rotate-bounce, "lr" flip-bounce, "n" no bounce. |
License
MIT
Metadata
Release files for pyscrh 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyscrh-0.1.3.tar.gz | 7.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyscrh-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.4 kB
Release files / pyscrh-0.1.3.tar.gz
| Download URL | pyscrh-0.1.3.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad3e684af0f57adca2084fd652dc89d73499e2ecb8967367def47b30d0578c9f
|
|
BLAKE2b-256 checksum How to use checksums |
3f03f58309268bef0c6af0cb3e65801ed468b3833f31beb9bd4b1633a56a10a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.6
|
Release files / pyscrh-0.1.3-py3-none-any.whl
| Download URL | pyscrh-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1c84db08b4a5820bd7ff5094c1a5ee3d59eec461dce234cb4df9828d6ac26c3
|
|
BLAKE2b-256 checksum How to use checksums |
93752af067f0c1662aea5b20f2e9878d44de4bb21c22e18fbb3f771654c88647
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.6
|