Skip to content

Instantly share code, notes, and snippets.

@horstjens
Created August 25, 2023 09:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save horstjens/c28233eef0c050a8edac97d52df65e3d to your computer and use it in GitHub Desktop.
Save horstjens/c28233eef0c050a8edac97d52df65e3d to your computer and use it in GitHub Desktop.
vp balls
import random
import vpython as vp
class Game:
size = 20
class Ball(vp.sphere):
def __init__(self):
p = vp.vector(random.uniform(0, Game.size),
random.uniform(0, Game.size),
random.uniform(0, Game.size))
c = vp.vector(random.random(),
random.random(),
random.random())
r = random.uniform(0.1, 1)
super().__init__(pos=p, color=c, radius=r)
self.speed = random.uniform(0.1, 15)
self.move = vp.vector(random.uniform(-1,1),
random.uniform(-1,1),
random.uniform(-1,1))
def update(self, dt):
self.pos += self.move * dt * self.speed
if self.pos.x < 0:
self.pos.x = 0
self.move.x *= -1
if self.pos.y < 0:
self.pos.y = 0
self.move.y *= -1
if self.pos.z < 0:
self.pos.z = 0
self.move.z *= -1
if self.pos.x > Game.size:
self.pos.x = Game.size
self.move.x *= 1
if self.pos.y > Game.size:
self.pos.y = Game.size
self.move.y *= 1
if self.pos.z > Game.size:
self.pos.z = Game.size
self.move.z *= 1
balls = []
for _ in range(10):
balls.append(Ball())
while True:
vp.rate(60)
for b in balls:
b.update(1/60)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment