;;
;; 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)))