semaforo

from turtle import *
from gpiozero import LED
from time import sleep
import random


camino=Turtle()
screen=camino.getscreen()
rayas=Turtle()
rayas.hideturtle()
camino.hideturtle()

#carretera 1
t1=Turtle()
t1.shape("turtle")
t1.penup()
t2=Turtle()
t2.shape("turtle")
t2.penup()
t2.color("red")
t3=Turtle()
t3.shape("turtle")
t3.penup()
t3.color("blue")
t4=Turtle()
t4.shape("turtle")
t4.penup()
t4.color("gray")
t5=Turtle()
t5.shape("turtle")
t5.penup()
t5.color("blue")
t6=Turtle()
t6.shape("turtle")
t6.penup()
t6.color("red")
t7=Turtle()
t7.shape("turtle")
t7.penup()
t7.color("green")

#carretera 2
tt1=Turtle()
tt1.shape("turtle")
tt1.penup()
tt2=Turtle()
tt2.shape("turtle")
tt2.penup()
tt2.color("red")
tt3=Turtle()
tt3.shape("turtle")
tt3.penup()
tt3.color("blue")
tt4=Turtle()
tt4.shape("turtle")
tt4.penup()
tt4.color("gray")
tt5=Turtle()
tt5.shape("turtle")
tt5.penup()
tt5.color("blue")
tt6=Turtle()
tt6.shape("turtle")
tt6.penup()
tt6.color("red")
tt7=Turtle()
tt7.shape("turtle")
tt7.penup()
tt7.color("orange")


#carretera 3
tq1=Turtle()
tq1.shape("turtle")
tq1.penup()
tq2=Turtle()
tq2.shape("turtle")
tq2.penup()
tq2.color("red")
tq3=Turtle()
tq3.shape("turtle")
tq3.penup()
tq3.color("blue")
tq4=Turtle()
tq4.shape("turtle")
tq4.penup()
tq4.color("gray")
tq5=Turtle()
tq5.shape("turtle")
tq5.penup()
tq5.color("blue")
tq6=Turtle()
tq6.shape("turtle")
tq6.penup()
tq6.color("red")
tq7=Turtle()
tq7.shape("turtle")
tq7.penup()
tq7.color("violet")

#carretera 4
tw1=Turtle()
tw1.shape("turtle")
tw1.penup()
tw2=Turtle()
tw2.shape("turtle")
tw2.penup()
tw2.color("red")
tw3=Turtle()
tw3.shape("turtle")
tw3.penup()
tw3.color("blue")
tw4=Turtle()
tw4.shape("turtle")
tw4.penup()
tw4.color("gray")
tw5=Turtle()
tw5.shape("turtle")
tw5.penup()
tw5.color("blue")
tw6=Turtle()
tw6.shape("turtle")
tw6.penup()
tw6.color("red")
tw7=Turtle()
tw7.shape("turtle")
tw7.penup()
tw7.color("white")

x1=-350
y1=100
x2=-100
y2=350
# secciones
camino.penup()
for i in range(2):
 for j in range(2):
  camino.begin_fill()
  camino.color('green')
  camino.goto(x1,y1)
  camino.pendown()
  camino.goto(x2,y1)
  camino.goto(x2,y2)
  camino.goto(x1,y2)
  camino.goto(x1,y1)
  x1=x1*-1
  x2=x2*-1
  camino.end_fill()
  camino.begin_fill()
  camino.color('gray')
  camino.penup()
 y1=y1*-1
 y2=y2*-1
 camino.end_fill()

# Semaforos
x1=-150
y1=100
x2=-100
y2=200

for j in range(2):
 for i in range(2):
  camino.penup()
  camino.goto(x1,y1)
  camino.pendown()
  camino.begin_fill()
  camino.color('gray')
  camino.goto(x2,y1)
  camino.goto(x2,y2)
  camino.goto(x1,y2)
  camino.goto(x1,y1)
  camino.end_fill()
  y1=y1*-1
  y2=y2*-1
  x1=x1*-1
  x2=x2*-1
 a=x1
 b=x2
 x1=y1
 y1=a*-1
 x2=y2
 y2=b*-1

red=LED(27)
yellow=LED(17)
green=LED(22)

# circulos 1
camino.penup()
camino.goto(-112,120)
camino.left(90)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('red')
 if i==2:
  camino.color('black')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 red.on()
 camino.fd(31)


red2=LED(9)
yellow2=LED(11)
green2=LED(25)

# Circulos 2
camino.goto(112,-120)
camino.right(180)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('red')
 if i==2:
  camino.color('black')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 red2.on()
 camino.fd(31)


red3=LED(14)
yellow3=LED(15)
green3=LED(18)


# Circulos 3
camino.goto(-120,-112)
camino.left(270)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('red')
 if i==2:
  camino.color('black')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 red3.on()
 camino.fd(31)


red4=LED(23)
yellow4=LED(24)
green4=LED(7)


# Circulos 4
camino.goto(120,112)
camino.right(180)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('red')
 if i==2:
  camino.color('black')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 red4.on()
 camino.fd(31)

# rayas verticales
rayas.pensize(3)
rayas.penup()
rayas.goto(0,375)
rayas.right(90)
rayas.color('yellow')
for i in range(2):
 for j in range(3):
  rayas.pendown()
  rayas.fd(75)
  rayas.penup()
  rayas.fd(25)
 rayas.fd(180)


rayas.penup()
rayas.goto(-375,0)
rayas.left(90)
for i in range(2):
 for j in range(3):
  rayas.pendown()
  rayas.fd(75)
  rayas.penup()
  rayas.fd(25)
 rayas.fd(170)


# tortugas grupo 1
r1=random.randrange(1,8)
print(r1)
t1.goto(-350,-50)
if r1<2:
 t2.hideturtle()
t2.goto(-400,-50)
if r1<3:
 t3.hideturtle()
t3.goto(-450,-50)
if r1<4:
 t4.hideturtle()
t4.goto(-500,-50)
if r1<5:
 t5.hideturtle()
t5.goto(-550,-50)
if r1<6:
 t6.hideturtle()
t6.goto(-600,-50)
if r1<7:
 t7.hideturtle()
t7.goto(-650,-50)
for i in range(7):
 t1.stamp(); t1.fd(30)
 t1.clearstamps()
 if r1>1:
  t2.stamp(); t2.fd(30)
  t2.clearstamps()
 if r1>2:
  t3.stamp(); t3.fd(30)
  t3.clearstamps()
 if r1>3:
  t4.stamp(); t4.fd(30)
  t4.clearstamps()
 if r1>4:
  t5.stamp(); t5.fd(30)
  t5.clearstamps()
 if r1>5:
  t6.stamp(); t6.fd(30)
  t6.clearstamps()
 if r1>6:
  t7.stamp(); t7.fd(30)
  t7.clearstamps()

# tortugas grupo 2
r2=random.randrange(1,8)
print(r2)
tt1.goto(350,50)
tt1.left(180)
if r2<2:
 tt2.hideturtle()
tt2.goto(400,50)
tt2.left(180)
if r2<3:
 tt3.hideturtle()
tt3.goto(450,50)
tt3.left(180)
if r2<4:
 tt4.hideturtle()
tt4.goto(500,50)
tt4.left(180)
if r2<5:
 tt5.hideturtle()
tt5.goto(550,50)
tt5.left(180)
if r2<6:
 tt6.hideturtle()
tt6.goto(600,50)
tt6.left(180)
if r2<7:
 tt7.hideturtle()
tt7.goto(650,50)
tt7.left(180)
for i in range(7):
 tt1.speed(10)
 tt1.stamp(); tt1.fd(30)
 tt1.clearstamps()
 if r2>1:
  tt2.stamp(); tt2.fd(30)
  tt2.clearstamps()
 if r2>2:
  tt3.stamp(); tt3.fd(30)
  tt3.clearstamps()
 if r2>3:
  tt4.stamp(); tt4.fd(30)
  tt4.clearstamps()
 if r2>4:
  tt5.stamp(); tt5.fd(30)
  tt5.clearstamps()
 if r2>5:
  tt6.stamp(); tt6.fd(30)
  tt6.clearstamps()
 if r2>6:
  tt7.stamp(); tt7.fd(30)
  tt7.clearstamps()

# tortugas grupo 3
r3=random.randrange(1,8)
print(r3)
tq1.goto(-50,350)
tq1.left(270)
if r3<2:
 tq2.hideturtle()
tq2.goto(-50,400)
tq2.left(270)
if r3<3:
 tq3.hideturtle()
tq3.goto(-50,450)
tq3.left(270)
if r3<4:
 tq4.hideturtle()
tq4.goto(-50,500)
tq4.left(270)
if r3<5:
 tq5.hideturtle()
tq5.goto(-50,550)
tq5.left(270)
if r3<6:
 tq6.hideturtle()
tq6.goto(-50,600)
tq6.left(270)
if r3<7:
 tq7.hideturtle()
tq7.goto(-50,650)
tq7.left(270)
for i in range(8):
 tq1.speed(10)
 tq1.stamp(); tq1.fd(30)
 tq1.clearstamps()
 if r3>1:
  tq2.stamp(); tq2.fd(30)
  tq2.clearstamps()
 if r3>2:
  tq3.stamp(); tq3.fd(30)
  tq3.clearstamps()
 if r3>3:
  tq4.stamp(); tq4.fd(30)
  tq4.clearstamps()
 if r3>4:
  tq5.stamp(); tq5.fd(30)
  tq5.clearstamps()
 if r3>5:
  tq6.stamp(); tq6.fd(30)
  tq6.clearstamps()
 if r3>7:
  tq7.stamp(); tq7.fd(30)
  tq7.clearstamps()


# tortuga grupo 4
r4=random.randrange(1,8)
print(r4)
tw1.goto(50,-350)
tw1.left(90)
if r4<2:
 tw2.hideturtle()
tw2.goto(50,-400)
tw2.left(90)
if r4<3:
 tw3.hideturtle()
tw3.goto(50,-450)
tw3.left(90)
if r4<4:
 tw4.hideturtle()
tw4.goto(50,-500)
tw4.left(90)
if r4<5:
 tw5.hideturtle()
tw5.goto(50,-550)
tw5.left(90)
if r4<6:
 tw6.hideturtle()
tw6.goto(50,-600)
tw6.left(90)
if r4<7:
 tw7.hideturtle()
tw7.goto(50,-650)
tw7.left(90)
for i in range(7):
 tw1.speed(10)
 tw1.stamp(); tw1.fd(30)
 tw1.clearstamps()
 if r4>1:
  tw2.stamp(); tw2.fd(30)
  tw2.clearstamps()
 if r4>2:
  tw3.stamp(); tw3.fd(30)
  tw3.clearstamps()
 if r4>3:
  tw4.stamp(); tw4.fd(30)
  tw4.clearstamps()
 if r4>4:
  tw5.stamp(); tw5.fd(30)
  tw5.clearstamps()
 if r4>5:
  tw6.stamp(); tw6.fd(30)
  tw6.clearstamps()
 if r4>6:
  tw7.stamp(); tw7.fd(30)
  tw7.clearstamps()


#circulo 1 cambios y colores
camino1=Turtle()
screen=camino1.getscreen()

camino1.penup()
camino1.goto(-112,120)
camino1.left(90)
for i in range(1,4):
 camino1.begin_fill()
 if i==1:
  camino1.color('black')
 if i==2:
  camino1.color('black')
 if i==3:
  camino1.color('green')
 camino1.circle(13)
 camino1.end_fill()
 camino1.hideturtle()
 red.off()
 camino1.fd(31)
green.on()




for i in range(7):
 tw1.speed(10)
 tw1.stamp(); tw1.fd(120)
 tw1.clearstamps()
 if r4>1:
  tw2.stamp(); tw2.fd(120)
  tw2.clearstamps()
 if r4>2:
  tw3.stamp(); tw3.fd(120)
  tw3.clearstamps()
 if r4>3:
  tw4.stamp(); tw4.fd(120)
  tw4.clearstamps()
 if r4>4:
  tw5.stamp(); tw5.fd(120)
  tw5.clearstamps()
 if r4>5:
  tw6.stamp(); tw6.fd(120)
  tw6.clearstamps()
 if r4>6:
  tw7.stamp(); tw7.fd(120)
  tw7.clearstamps()

sleep(5)


camino.goto(-125,195)
camino.right(180)
camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
green.off()

camino.goto(-125,140)
camino.right(180)
camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.on()
sleep(2)




camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.off()

camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.on()


camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.off()

camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.on()


camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow.off()

camino.goto(-125,134)
camino.right(180)
camino.begin_fill()
camino.color('red')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
red.on()

#circulo 2 cambios y colores
camino.goto(120,112)
camino.right(180)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('green')
 if i==2:
  camino.color('black')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 red4.off()
 green4.on()
 camino.fd(31)
sleep(5)


t1.clearstamps()
t1.stamp(); t1.fd(90)
t1.clearstamps()
t1.stamp(); t1.fd(90)
t1.clearstamps()
t1.left(90)
t1.clearstamps()
t1.stamp(); t1.fd(180)
t1.clearstamps()
for i in range(4):
 t1.stamp(); t1.fd(90)
 t1.clearstamps()
 t2.clearstamps()
 t2.stamp(); t2.fd(90)
 t2.clearstamps()
 t2.stamp(); t2.fd(90)
 t2.clearstamps()


camino.goto(120,138)
camino.right(180)
camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
green4.off()


camino.goto(151,113)
camino.right(180)
camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.on()
sleep(2)

for i in range(8):
 t3.clearstamps()
 t3.stamp(); t3.fd(120)
 t3.clearstamps()
 t4.clearstamps()
 t4.stamp(); t4.fd(120)
 t4.clearstamps()
 t5.clearstamps()
 t5.stamp(); t5.fd(120)
 t5.clearstamps()
 t6.clearstamps()
 t6.stamp(); t6.fd(120)
 t6.clearstamps()


camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.off()


camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.off()

camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow4.off()

camino.goto(120,137)
camino.right(180)
camino.begin_fill()
camino.color('red')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
red4.on()

#circulo 3 ambios y colores

camino1.goto(112,-120)
camino1.right(180)
for i in range(1,4):
 camino1.begin_fill()
 if i==1:
  camino1.color('black')
 if i==2:
  camino1.color('black')
 if i==3:
  camino1.color('green')
 camino1.circle(13)
 camino1.end_fill()
 red2.off()
 green2.on()
 camino1.fd(31)
green2.on()

for i in range(8):
 tq1.speed(10)
 tq1.stamp(); tq1.fd(120)
 tq1.clearstamps()
 if r3>1:
  tq2.stamp(); tq2.fd(120)
  tq2.clearstamps()
 if r3>2:
  tq3.stamp(); tq3.fd(120)
  tq3.clearstamps()
 if r3>3:
  tq4.stamp(); tq4.fd(120)
  tq4.clearstamps()
 if r3>4:
  tq5.stamp(); tq5.fd(120)
  tq5.clearstamps()
 if r3>5:
  tq6.stamp(); tq6.fd(120)
  tq6.clearstamps()
 if r3>7:
  tq7.stamp(); tq7.fd(120)
  tq7.clearstamps()

camino.goto(112,-120)
camino.right(180)
camino.left(270)
for i in range(1,4):
 camino.begin_fill()
 if i==1:
  camino.color('black')
 if i==2:
  camino.color('yellow')
 if i==3:
  camino.color('black')
 camino.circle(13)
 camino.end_fill()
 green2.off()
 yellow2.on()
 camino.fd(31)

sleep(1)

camino.goto(138,-151)
camino.right(180)
camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow2.off()


camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow2.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow2.off()

camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow2.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow2.off()

camino.goto(112,-183)
camino.right(180)
camino.begin_fill()
camino.color('red')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
red2.on()



#circulo 4 cambios y colores

camino1.goto(-120,-112)
camino1.left(270)
for i in range(1,4):
 camino1.begin_fill()
 if i==1:
  camino1.color('black')
 if i==2:
  camino1.color('black')
 if i==3:
  camino1.color('green')
 camino1.circle(13)
 camino1.end_fill()
 red3.off()
 green3.on()
 camino1.fd(31)



for i in range(7):
 tt1.speed(10)
 tt1.stamp(); tt1.fd(120)
 tt1.clearstamps()
 if r2>1:
  tt2.stamp(); tt2.fd(120)
  tt2.clearstamps()
 if r2>2:
  tt3.stamp(); tt3.fd(120)
  tt3.clearstamps()
 if r2>3:
  tt4.stamp(); tt4.fd(120)
  tt4.clearstamps()
 if r2>4:
  tt5.stamp(); tt5.fd(120)
  tt5.clearstamps()
 if r2>5:
  tt6.stamp(); tt6.fd(120)
  tt6.clearstamps()
 if r2>6:
  tt7.stamp(); tt7.fd(120)
  tt7.clearstamps()



camino1.goto(-182,-137)
camino1.left(270)
camino1.right(90)
for i in range(1,4):
 camino1.begin_fill()
 if i==1:
  camino1.color('black')
 if i==2:
  camino1.color('yellow')
 if i==3:
  camino1.color('black')
 camino1.circle(13)
 camino1.end_fill()
 green3.off()
 yellow3.on()
 camino1.fd(31)

sleep(1)

camino.goto(-138,-124)
camino.right(180)
camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow3.off()


camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow3.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow3.off()

camino.begin_fill()
camino.color('yellow')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow3.on()

camino.begin_fill()
camino.color('black')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
yellow3.off()

camino.goto(-133,-125)
camino.right(180)
camino.begin_fill()
camino.color('red')
camino.circle(13)
camino.end_fill()
camino.hideturtle()
red3.on()


screen.exitonclick()

Comentarios