Share your repls and programming experiences

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

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.

Commentshotnewtop
a_siebel (3)

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

SaurabhBadenkal (0)

hold z, and it removes balls

kaiserb1 (2)

Scrolling works too :-)

mkhoi (200)

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

timmy_i_chen (990)

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

mkhoi (200)

@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 (98)

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 (836)

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

PaoloAmoroso (98)

@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 (836)

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

glench (36)

@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 repl.it has). If you want to use Python Play on repl.it, 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:

@play.repeat_forever
async def do():
  play.set_backdrop('red')
  await play.timer(seconds=1)
  play.set_backdrop('green')
  await play.timer(seconds=1)
  play.set_backdrop('blue')
  await play.timer(seconds=1)

link to repl with above code