0

hi guys i have a small problem. the cars in my program collide against each other. it works when i don't have any class car. but now there's some confusion with the speed of the car. ive worked for hours on this but no solution found.

i hope u guys can do it for me thanks.

import Tkinter as tk
import time
import sys
import datetime as dt
from Tkinter import *
import random

root=tk.Tk()
root.title("Traffic Simulation")
canvas = tk.Canvas(root, width=1000, height=400, bg="#FFFFFF")
canvas.pack()

class Car(object):
  def __init__(self, a,b,c,d, outline='blue', fill='blue'):
    self.rect = canvas.create_rectangle(a,b,c,d, outline=outline, fill=fill)
    self.rear_bumper = 150
    self.front_bumper = -10
    self.xspeed = 2
    self.yspeed = 0
   

  def set_speed(self, xspeed, yspeed):
    self.speed = xspeed, yspeed


   
  def move(self):
    canvas.move(self.rect, self.speed[0], self.speed[1])
   
    vehicle=canvas.coords(self.rect)
    canvas.update()
   
car1 = Car(-30, 155, -10, 170, outline='blue', fill='blue')
car2 = Car(-30, 155, -10, 170, outline='blue', fill = 'blue')


times1 = ['2000']
timer1 = random.choice(times1)
times2 = ['4000']
timer2 = random.choice(times2)


car1.bumper = 150, -10
car2.bumper = 150, -10

car1.set_speed(2,0)
car2.set_speed(4,0)

# move car
while True:
    car1.move()
    canvas.after(timer1, car2.move)
   
    time.sleep(0.025)

    car1.rear_bumper += car1.xspeed
    car2.front_bumper += car2.xspeed

    diff_between_cars = car1.rear_bumper - car2.front_bumper

    print car1.rear_bumper

    if 50 <= diff_between_cars < 60:
        car2.set_speed = 2,0  #decelerate
    elif diff_between_cars < 50:
        car2.set_speed = 1,0  #match speed of front car

    canvas.update()


root.mainloop()
3
Contributors
2
Replies
3
Views
8 Years
Discussion Span
Last Post by Stefano Mtangoo
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.