{ "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 <code>turtle</code>, mit dessen Hilfe sich einfache Grafiken erzeugen lassen.\n", "Dazu stellt das Modul einen Zeichenstift *Turtle* zur Verfügung, der mit einfachen Befehlen wie <code>forward</code>,\n", "<code>left</code>, <code>right</code>, ... ü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 <code>ipyturtle</code>." ] }, { "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 <code>turtle</code> 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 <code>left</code> und <code>right</code> 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 <code>reset</code> 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 }