{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "02810cc1",
   "metadata": {},
   "source": [
    "# 06-08 · Мини-проект — мандала из прямых линий\n",
    "\n",
    "Практика к разделу [«Мандала и итоги»](../../site/chapters/glava-06/06-08-mandala-itogi.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e90bd81d",
   "metadata": {},
   "source": [
    "## Цель\n",
    "\n",
    "Собрать все приёмы главы в одном узоре."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e2475d8",
   "metadata": {},
   "source": [
    "## Настройка (выполнить один раз)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dafdaaa3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:52:45.188610Z",
     "iopub.status.busy": "2026-08-14T20:52:45.188501Z",
     "iopub.status.idle": "2026-08-14T20:52:45.357214Z",
     "shell.execute_reply": "2026-08-14T20:52:45.356865Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Окно Turtle готово.\n"
     ]
    }
   ],
   "source": [
    "import turtle\n",
    "\n",
    "screen = turtle.Screen()\n",
    "artist = turtle.Turtle()\n",
    "artist.speed(0)\n",
    "print(\"Окно Turtle готово.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fe08f36",
   "metadata": {},
   "source": [
    "## Рабочий пример"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a9d02b64",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:52:45.358531Z",
     "iopub.status.busy": "2026-08-14T20:52:45.358375Z",
     "iopub.status.idle": "2026-08-14T20:52:56.350729Z",
     "shell.execute_reply": "2026-08-14T20:52:56.350293Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Мандала готова, лучей: 36\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "shag_ugla = 10\n",
    "ugol = 0\n",
    "while ugol < 360:\n",
    "    artist.setheading(ugol)\n",
    "    artist.forward(150)\n",
    "    artist.backward(150)\n",
    "    ugol += shag_ugla\n",
    "print(\"Мандала готова, лучей:\", 360 // shag_ugla)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63256e33",
   "metadata": {},
   "source": [
    "## Эксперимент 1 ★ — другой шаг угла\n",
    "\n",
    "Попробуйте `shag_ugla = 30` — узор станет гораздо более разреженным."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3ae861cd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:52:56.351973Z",
     "iopub.status.busy": "2026-08-14T20:52:56.351856Z",
     "iopub.status.idle": "2026-08-14T20:53:00.237934Z",
     "shell.execute_reply": "2026-08-14T20:53:00.237626Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Лучей на этот раз: 12\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "shag_ugla = 30\n",
    "ugol = 0\n",
    "while ugol < 360:\n",
    "    artist.setheading(ugol)\n",
    "    artist.forward(150)\n",
    "    artist.backward(150)\n",
    "    ugol += shag_ugla\n",
    "print(\"Лучей на этот раз:\", 360 // shag_ugla)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e966567d",
   "metadata": {},
   "source": [
    "## Эксперимент 2 ★★ — своя длина луча\n",
    "\n",
    "Попробуйте `forward(80)` вместо 150."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "824792d7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:00.239205Z",
     "iopub.status.busy": "2026-08-14T20:53:00.239095Z",
     "iopub.status.idle": "2026-08-14T20:53:06.642013Z",
     "shell.execute_reply": "2026-08-14T20:53:06.641568Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Мандала меньшего размера готова.\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "shag_ugla = 10\n",
    "dlina = 80\n",
    "ugol = 0\n",
    "while ugol < 360:\n",
    "    artist.setheading(ugol)\n",
    "    artist.forward(dlina)\n",
    "    artist.backward(dlina)\n",
    "    ugol += shag_ugla\n",
    "print(\"Мандала меньшего размера готова.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27c66df4",
   "metadata": {},
   "source": [
    "## Дополнительная задача ★★★\n",
    "\n",
    "Попробуйте два цвета: чётные лучи — одним цветом, нечётные — другим (используем счётчик и `%` из главы 5)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7c07f1e9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:06.643324Z",
     "iopub.status.busy": "2026-08-14T20:53:06.643199Z",
     "iopub.status.idle": "2026-08-14T20:53:17.929668Z",
     "shell.execute_reply": "2026-08-14T20:53:17.929255Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Двухцветная мандала готова.\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "shag_ugla = 10\n",
    "ugol = 0\n",
    "i = 0\n",
    "while ugol < 360:\n",
    "    artist.pencolor(\"purple\" if i % 2 == 0 else \"blue\")\n",
    "    artist.setheading(ugol)\n",
    "    artist.forward(150)\n",
    "    artist.backward(150)\n",
    "    ugol += shag_ugla\n",
    "    i += 1\n",
    "artist.pencolor(\"black\")\n",
    "print(\"Двухцветная мандала готова.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "deffd12f",
   "metadata": {},
   "source": [
    "## Завершение (выполнить один раз, в самом конце)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8dd257a4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:17.930841Z",
     "iopub.status.busy": "2026-08-14T20:53:17.930725Z",
     "iopub.status.idle": "2026-08-14T20:53:17.934108Z",
     "shell.execute_reply": "2026-08-14T20:53:17.933598Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Окно Turtle закрыто.\n"
     ]
    }
   ],
   "source": [
    "screen.bye()\n",
    "print(\"Окно Turtle закрыто.\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Cartesian Python 3.14",
   "language": "python",
   "name": "cartesian-python314"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
