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