{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Software Entwicklung \n",
"\n",
"## Kapitel 5: Module und Pakete\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.2 Turtle-Grafik\n",
"\n",
"Ein im Standard enthaltenes Modul ist turtle
, mit dessen Hilfe sich einfache Grafiken erzeugen lassen.\n",
"Dazu stellt das Modul einen Zeichenstift *Turtle* zur Verfügung, der mit einfachen Befehlen wie forward
,\n",
"left
, right
, ... über den Bildschirm bewegt werden kann."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"In reduzierter Form steht ein solches Modul auch für Jupyter Notebooks zur Verfügung, das nachfolgend\n",
"Verwendung findet. Es heißt ipyturtle
."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"from ipyturtle import Turtle\n",
"\n",
"turtle = Turtle(width=400, height=400)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Damit das Grafikfeld im Browser angezeigt wird, muss turtle
einmal als Ergebnis einer\n",
"Zelle an das Jupyter Notebook zurückgegeben werden. Im Folienmodus \"hängt\" das Grafikfeld dann leider an der aufrufenden Folien fest."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Anschließend kann der Zeichenstift bewegt werden. Er erzeugt dabei eine Linie."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle.forward(100)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Richtungsänderungen sind mit left
und right
möglich.\n",
"Die Drehung wird in Grad angegeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle.left(90)\n",
"turtle.forward(20)\n",
"turtle.right(45)\n",
"turtle.back(50)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Mit Hilfe von reset
kann die Ausgabe gelöscht und der Zeichenstift in die Mitte gesetzt\n",
"werden."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle.reset()"
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Durch das Heben und Senken des Stifts ist es möglich, Bewegungen auszuführen,\n",
"ohne eine Linie zu hinterlassen."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"for i in range(10):\n",
" if i%2 == 0:\n",
" turtle.pendown()\n",
" else:\n",
" turtle.penup()\n",
" turtle.forward(10)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Die Positon und die Ausrichtung des Stifts kann jederzeit abgefragt werden."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle.reset()\n",
"print(turtle.position())\n",
"print(turtle.heading())\n",
"turtle.right(90)\n",
"print(turtle.heading())\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Und schließlich: durch Angabe eines RGB-Wertes kann die Farbe des Stifts gesetzt werden."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"turtle.reset()\n",
"r = 0\n",
"g = 0\n",
"b = 255\n",
"turtle.pencolor(r, g, b)\n",
"turtle.forward(100)"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"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.9.9"
}
},
"nbformat": 4,
"nbformat_minor": 1
}