Share your repls and programming experiences

← Back to all posts
Physics Fun with Python Play
timmy_i_chen (1188)

Using Python Play is seriously so much fun. In like 40 lines of code I wrote this fun little program with physics.

Simple instructions:
Click anywhere to create a ball.
Click and drag any ball anywhere.
Press Z to knock them all up in the air!

If you haven't tried using Python Play, I definitely recommend it.

8Observer8 (0)

Hello. When I run your example with unit tests I see "Ran 0 tests". Please, help me to run tests. It is your example:

a_siebel (6)

The is really slow. Is this normal or a problem of my location (lag?). I'm viewing it from germany.

SaurabhBadenkal (2)

hold z, and it removes balls

kaiserb1 (13)

Scrolling works too :-)

mkhoi (300)

If you spawn balls and dont move your mouse in the process, they will balance on each other LOL

timmy_i_chen (1188)

@mkhoi I love doing this, then you place one slightly-off-center ball and watch it all tumble down ;)

mkhoi (300)

@timmy_i_chen I like to spawn collumns of balls then spawn one ball and throw it, it was awseome seeing them fall down

PaoloAmoroso (192)

I guess Python Play requires a specific type of Python-based REPL as it uses async features of Python 3.7 but the standard Python 3 REPL has 3.6.x, right?

21natzil (1209)

@PaoloAmoroso I'm not sure what you mean, the play library does not utilize asyncio, from what I've seen.

PaoloAmoroso (192)

@21natzil The Python Play tutorial and the documentation do apparently use asyncio in some examples using Python Play. Is Python 3.7 required for user code?

21natzil (1209)

@PaoloAmoroso Ah, you're correct, I retract that statement. It does use some trickery to make normal functions async.

glench (42)

@PaoloAmoroso Python Play does use the asyncio features of Python 3. async/await were added in Python 3.5 (source) so you just need a version of Python greater than that (which has). If you want to use Python Play on, you just need to use a Python (3) repl and install replit-play in the package manager. Or you can just fork this repl.

And the reason for using async/await is mostly to be able to set up timers. In normal loop-based python programming, it's really annoying (especially for beginners) to make a program that changes the background to red, waits 1 second, changes to green, waits 1 second, then changes to blue and cycles back to red. In Python Play you can just do that like this:

async def do():
  await play.timer(seconds=1)
  await play.timer(seconds=1)
  await play.timer(seconds=1)

link to repl with above code