racket/collects/tests/jpr/jeu-du-chaos.ss

41 lines
975 B
Scheme

#lang scheme
(require graphics/graphics)
(open-graphics)
(define VIEW (open-viewport "Essai Graphics" 300 100))
(define tr-segment (draw-line VIEW)) ; un traceur de segment
(define tr-pixel (draw-pixel VIEW)) ; un traceur de pixel
(define A (make-posn 150 10))
(define B (make-posn 10 90))
(define C (make-posn 290 90))
(tr-segment A B "red")
(tr-segment B C "red")
(tr-segment C A "red")
(define M-INIT (make-posn (random 300) (random 100)))
(define (jeu-du-chaos)
(define (moyenne x y)
(/ (+ x y) 2))
(define (milieu A B)
(make-posn (moyenne (posn-x A) (posn-x B))
(moyenne (posn-y A) (posn-y B))))
(define (iter nb-fois M) ; M est le dernier point courant affiche
(if (= nb-fois 0)
(void)
(let* ((S (case (random 3) ((0) A) ((1) B) ((2) C)))
(Msuiv (milieu M S)))
(tr-pixel Msuiv "blue")
(iter (- nb-fois 1) Msuiv))))
(tr-pixel M-INIT "blue")
(iter 4000 M-INIT))
(jeu-du-chaos)