Skip to content

Instantly share code, notes, and snippets.

@ayushmankumar7
Created February 29, 2020 07:03
Show Gist options
  • Save ayushmankumar7/eba96471bd14549f492429f9c42d93c1 to your computer and use it in GitHub Desktop.
Save ayushmankumar7/eba96471bd14549f492429f9c42d93c1 to your computer and use it in GitHub Desktop.
Smart Traffic Management
import tkinter as tk
import time
import random
class Alien(object):
def __init__(self, canvas, *args, **kwargs):
self.canvas = canvas
self.id = canvas.create_oval(*args, **kwargs)
self.vx = 5
self.vy = 0
def move(self):
x1, y1, x2, y2 = self.canvas.bbox(self.id)
ra = random.random()
rc = random.choice([-1,1])
rf = ra*rc
if x2 > 1400:
self.vx = -0.4 + rf
if x1 < 0:
self.vx = 0.4 +rf
self.canvas.move(self.id, self.vx, self.vy)
class Boxx(object):
def __init__(self, canvas, *args, **kwargs):
self.canvas = canvas
self.id = canvas.create_rectangle(*args, **kwargs)
self.vx = 5
self.vy = 0
class App(object):
def __init__(self, master, **kwargs):
self.master = master
self.canvas = tk.Canvas(self.master, width=1400, height=1400)
self.canvas.pack()
self.aliens = [
Alien(self.canvas, 20, 260, 120, 360,
outline='white', fill='blue'),
Alien(self.canvas, 20, 260, 120, 360, outline = "black", fill = 'green'),
Alien(self.canvas, 2, 2, 40, 40, outline='white', fill='red'),
Alien(self.canvas, 2, 2, 40, 40, outline='black', fill='yellow'),
]
self.boxx = [
Boxx(self.canvas, 1350,75,10,50, fill = "black"),
Boxx(self.canvas, 35,1350,10,49, fill = "black")
]
self.canvas.pack()
self.master.after(0, self.animation)
def animation(self):
for alien in self.aliens:
alien.move()
self.master.after(12, self.animation)
root = tk.Tk()
app = App(root)
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment