Progamm Seitenanfang Seitenende



;;;                                           <tsp mit GA Grafik.scm>
; Grafikprogramm für die Darstellung des Weges beim tsp - Problem.
; Die Prozedur bekommt eine Liste von Punkten übergeben, die Punkte
; sind zweielementige Listen von Zahlen.
; Als zweiten Parameter bekommt die Prozedur einen  boolean - Wert
; übergeben, der einerseits festlegt, ob die Grafik auf eine Taste
; warten soll oder nicht und andrerseits dann die Grafikdarstellung
; beendet.

(require-library "graphics.ss" "graphics")
(open-graphics)
(define Grafik
  (open-viewport "tsp mit GA Grafik" Bild-Groesse Bild-Groesse))

;;; ===== zeichne ======================================================
(define
  (zeichne Individuum warten?)
  ((draw-viewport Grafik) (make-rgb 1 1 1))
  (let
      loop
    ((Liste (car Individuum)))
    (cond
      ((null? (cdr Liste))
       ((draw-lineGrafik
        (make-posn (caar Liste) (cadar Liste))
        (make-posn (caaar Individuum)(cadaar Individuum))
        (make-rgb 0 0 0))
       ((draw-stringGrafik
        (make-posn 10 10)
        (number->string (round (cadr Individuum)))
        (make-rgb 0 0 1))
       (if
        warten?
        (begin
          (display "Taste zum Abbruch !")
          (warte)
          (close-graphics)))
       (void))
      (else
       ((draw-line Grafik
        (make-posn (caar Liste) (cadar Liste))
        (make-posn (caadr Liste)(cadadr Liste))
        (make-rgb 0 0 0))
       ((draw-rectangle Grafik
        (make-posn
         (sub1 (caar Liste))
         (sub1 (cadar Liste)))
        3 3 (make-rgb 1 0 0))
       (loop (cdr Liste))))))

;;; ===== warte ====================================================================
(define
  (warte)
  (viewport-flush-input Grafik
  (get-key-press Grafik
Haupt - 'Programm'


Startseite Seitenanfang Seitenende