;;
;; This emacs program draws some flies buzzing around on the screen.
;;
(with-current-buffer (get-buffer-create "*flies*")
 (switch-to-buffer "*flies*")
 (erase-buffer)
 (setq cursor-type nil)
 (ruler-mode)
 (let* ((cols nil)
        (flies-n 20)
        (howlong 100)
        (spread 70)
        (delay 0.1)
        (sprites (list "O|O" ":/:" "olo")))
   (delete-region (point) (point-max))
   (dotimes (i flies-n)
     (push (list :col (random spread)
                 :state (random (length sprites))) cols))
   (dotimes (i howlong)
     (dolist (b cols)
       (let ((col (plist-get b :col))
             (state (plist-get b :state)))
         (move-beginning-of-line 1)
         (delete-region (point) (line-end-position))
         (setq col (min spread (max 0 (+ col (- (random 3) 1)))))
         (insert (make-string col 32))
         (plist-put b :col col)
         (insert (elt sprites state))
         (plist-put b :state (% (+ state 1) 3))
         (newline)))
     (sit-for delay)
     (erase-buffer)))
 (discard-input)
 (kill-buffer (current-buffer)))