You are on page 1of 3

import turtle, random

def line(x0, y0, x1, y1):


t.pu()
t.setpos(x0, y0)
t.pd()
t.setpos(x1, y1)

def p_p(pl):
for p in pl:
t.setpos(p[0] * 40 - 180, p[1] * 40 - 180)
if p[2] == 0:
t.dot(14, (190, 190, 190))
else:
t.dot(14, (140, 140, 255))

def make_task():
if task_number == 1:
p_p([(___x + 2, ___y, 0)])
elif task_number == 2:
p_p([(___x + 1, ___y, 0), (___x + 2, ___y, 0)])
elif task_number == 3:
p_p([(___x, ___y + 1, 0), (___x, ___y + 2, 0)])
elif task_number == 4:
p_p([(___x, ___y + i, 0) for i in range(-2, 3)])
elif task_number == 5:
p_p([(___x + i, ___y + i, 0) for i in range(-2, 3)])
elif task_number == 6:
p_p([(___x + i, ___y + j, 0)\
for i in range(0, 4) for j in range(0, 4, 3)])
p_p([(___x + i, ___y + j, 0) for i in range(0, 4, 3)\
for j in range(1, 3)])
elif task_number == 7:
p_p([(___x + i, ___y + j, 0) for i in range(0, 4) for j in range(0, 4)])
elif task_number == 8:
p_p([(___x, i, 1) for i in range(___y, 10)])
elif task_number == 9:
p_p([(___x, i, 1) for i in range(0, 10)])
elif task_number == 10:
p_p([(___x, i, 1) for i in range(___y, 10)])
p_p([(i, ___y, 1) for i in range(___x, ___w + 1)])
elif task_number == 11:
p_p([(1, i, 0) for i in range(0, 10)])
elif task_number == 12:
p_p([(0, i, 0) for i in range(0, 10)])
p_p([(1, i, 0) for i in range(0, 10)])
elif task_number == 13:
p_p([(i, 0, 1) for i in range(0, ___w + 1)])
elif task_number == 14:
p_p([(i, ___y, 1) for i in range(0, ___w + 1)])
p_p([(___x, i, 1) for i in range(0, 10)])
elif task_number == 15:
p_p([(i, 0, 1) for i in range(0, ___w + 1)])
p_p([(i, 9, 1) for i in range(0, ___w + 1)])
p_p([(0, i, 1) for i in range(0, 10)])
p_p([(___w, i, 1) for i in range(0, 10)])
elif task_number == 16:
p_p([(i, j, 1) for i in range(___x + 1, ___w + 1)\
for j in range(0, ___y)])
p_p([(i, j, 1) for i in range(0, ___x) for j in range(___y + 1, 10)])

def wait():
global wall
if ___x < 0 or ___y < 0 or ___x > ___w or ___y > 9:
t.fillcolor("red")
raise Exception('OUT OF ROOM')

wall = ___x == ___w or ___x == 0 or ___y == 0 or ___y == 9


if wall:
t.fillcolor("green")
else:
t.fillcolor("orange")
t.left(20)
t.left(-20)
t.delay(0)

def move(_s):
global ___x, wall
t.fillcolor("orange")
t.fd(40 * _s)
___x += _s
wait()

def left():
move(-1)

def right():
move(1)

def up():
global ___y, ___x, wall
t.fillcolor("orange")
___y += 1
t.setpos(-180 + ___x * 40, -180 + ___y * 40)
wait()

def down():
global ___y, ___x, wall
t.fillcolor("orange")
___y -= 1
t.setpos(-180 + ___x * 40, -180 + ___y * 40)
wait()

def clean():
for i in range(11, 17, 2):
t.dot(i, (0, 0, 150))
t = turtle.Turtle()
t.tracer(0, 0)
t.pencolor((150, 150, 150))
t.width(1)

___w = random.randint(6, 9)
___x = random.randint(2, ___w - 3)
___y = random.randint(2, 6)

for i in range(-200, 240, 40):


if i <= -200 + ___w * 40:
line(i, -200, i, 200)
line(-200, i, -200 + (___w + 1) * 40, i)

t.pencolor((0, 0, 150))
t.width(4)
line(-200, -200, -200, 200)
line(-160 + ___w * 40, -200, -160 + ___w * 40, 200)
line(-160 + ___w * 40, -200, -200, -200)
line(-160 + ___w * 40, 200, -200, 200)

t.shape("circle")
t.pencolor("purple")
t.fillcolor("orange")
wall = False

def run():
t.pu()
make_task()
t.setpos(-180 + ___x * 40, -180 + ___y * 40)
t.update()
t.tracer(1, 0)
t.speed(1.55)

# НОМЕР ЗАДАЧИ (их всего 16)


task_number = 1
run()

# Управление умным пылесосом:


# Влево: left()
# Вправо: right()
# Вверх: up()
# Вниз: down()
# Уборка: clean()
# Как только пылесос окажется рядом со стеной, то
# переменная wall станет равна True.

# ТУТ НЕОБХОДИМО СОЗДАТЬ АЛГОРИТМ

You might also like