lehrkraefte:blc:informatik:glf24:laby:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf24:laby:start [2025/05/14 17:44] – [Einheiten 3+4: Wegfindungs Algorithmen] Ivo Blöchligerlehrkraefte:blc:informatik:glf24:laby:start [2025/06/19 09:05] (current) – [Funktionierende Version] Ivo Blöchliger
Line 1: Line 1:
 ====== Programmierprojekt: Labyrinthe mit Bildern erzeugen ====== ====== Programmierprojekt: Labyrinthe mit Bildern erzeugen ======
 +
 +Ziel sind solche Labyrinthe: {{lehrkraefte:blc:informatik:glf24:laby:herz.pdf}}
  
 Der Fokus liegt darauf, die einzelnen Schritte im Detail zu verstehen. Gerade für das einlesen und bearbeiten von Bildern gibt es jede Menge an fertigen Bibliotheken (libraries). Selbstverständlich sollten für ein Softwareprodukt diese Bibliotheken verwendet werden. Wir werden aber so weit möglich, alles selber schreiben, aber externe Software für die Konvertierung und Anzeige von Bildern verwenden. Der Fokus liegt darauf, die einzelnen Schritte im Detail zu verstehen. Gerade für das einlesen und bearbeiten von Bildern gibt es jede Menge an fertigen Bibliotheken (libraries). Selbstverständlich sollten für ein Softwareprodukt diese Bibliotheken verwendet werden. Wir werden aber so weit möglich, alles selber schreiben, aber externe Software für die Konvertierung und Anzeige von Bildern verwenden.
  
   * Programmiersprache: Python.   * Programmiersprache: Python.
-  * Verwendete Libraries: So wenige wie möglich.+  * Verwendete Libraries: nur eigene.
   * Externe Programme: VSCode, Gimp, Browser (evtl. Inkscape).   * Externe Programme: VSCode, Gimp, Browser (evtl. Inkscape).
  
Line 19: Line 21:
   * [[.:wegfindentodo|Einheit 4: Komplette Wegfindungs-Algorithmen]]   * [[.:wegfindentodo|Einheit 4: Komplette Wegfindungs-Algorithmen]]
  
-===== Einheit 5: Weg ausbauen =====+===== Einheit 5: Weg auf schwarzen Pixeln ausbauen =====
 Ziel ist es, einen Weg zu erhalten, der möglichst alle Zellen besucht, die schwarzen Pixeln entsprechen. Ziel ist es, einen Weg zu erhalten, der möglichst alle Zellen besucht, die schwarzen Pixeln entsprechen.
  
-Die Grundidee ist folgende: +  * [[.:wegerweitern|Einheit 5: Einzelnen Weg auf schwarzen Pixeln erweitern.]] 
-  * Man sucht zwei aufeinanderfolgende Zellen im Weg, so dass die beiden Zellen daneben schwarz, aber nicht auf dem Weg sind (z.B. Zellen a und b, oder c und d im folgendend Bild): + 
-<code txt> +===== Einheit 6: Weg auf restliche Zellen als Labyrinth ausbauen ===== 
-+---+     +---+---+---+   + +  * [[.:labyrinthkomplettieren|Einheit 6: Weg auf restliche Zellen als Labyrinth ausbauen.]] 
-  |               | d   # | + 
-+---+   +---+---+       + +===== Einheit 7: Export als SVG ===== 
-|       | a   b |   | c |   | +  * [[.:svgexport|Einheit 7: Export als SVG]] 
-+   +---+     +---+   +---+ + 
-</code> +===== Einheit 8: Optionale Verbesserungen ===== 
-  * Die Wand zwischen a,b wird dann gesetzt, und der Weg über die zwei benachbarten Zellen x, y umgeleitet: +  * [[.:cmdargs|Parameter auf der Kommandozeile]] 
-<code txt> +  * [[.:bubbleholes|Löcher im Bild minimieren]] 
-+---+   +---+---+---+---+   + + 
-|     | x   y |   | d   # +===== Funktionierende Version ===== 
-+---+             + +Dieser Version müssen die Parameter auf der Kommandozeile übergeben werden
-|       | a | b |   | c |   | + 
-+   +---+     +---+   +---+ +{{lehrkraefte:blc:informatik:glf24:laby:bildlabyrinth.zip}} 
-</code> + 
-  * Das wiederholt man so lange, wie das möglich ist. Die Zellen werden zufällig ausgewählt, damit keine «geraden Korridore» entstehen+Und eine pnm-Datei dazu: {{lehrkraefte:blc:informatik:glf24:laby:herz.pnm}}
-  * Damit man nicht alle 4 Fälle programmieren muss, wird mit Operationen auf der Richtung (wie ein Winkel) gearbeitet+
-    * ist ''dir'' die Richtung, sind ''(dir+1)%4'' und ''(dir+3)%4'' die dazu rechtwinkligen Richtungen+
-    * Die Klasse ''Zelle'' hat eine Methode ''dirTo(other)'', die die Richtung zu einer anderen Zelle berechnet.+
  
 +===== Web-Version =====
 +Mit einigen Anpassungen kann der Python-Code auch im Browser ausgeführt werden: https://ofi.tech-lab.ch/2025/teach/76f5054a/laby/ 
 +Dazu muss eine geeignete Bilddatei (png, jpg) mit einer Auflösung von ca. 25 bis 100 Pixeln hochgeladen werden.
  
 +Alle Dateien für die Web-Version: {{lehrkraefte:blc:informatik:glf24:laby:web.zip}}
  • lehrkraefte/blc/informatik/glf24/laby/start.1747244655.txt.gz
  • Last modified: 2025/05/14 17:44
  • by Ivo Blöchliger