]> git.jsancho.org Git - gacela.git/blob - examples/06-composition/06-composition.scm
A lot of composition examples
[gacela.git] / examples / 06-composition / 06-composition.scm
1 #!/usr/bin/env guile
2 !#
3
4 ;;; Gacela, a GNU Guile extension for fast games development
5 ;;; Copyright (C) 2017 by Javier Sancho Fernandez <jsf at jsancho dot org>
6 ;;;
7 ;;; This program is free software: you can redistribute it and/or modify
8 ;;; it under the terms of the GNU General Public License as published by
9 ;;; the Free Software Foundation, either version 3 of the License, or
10 ;;; (at your option) any later version.
11 ;;;
12 ;;; This program is distributed in the hope that it will be useful,
13 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ;;; GNU General Public License for more details.
16 ;;;
17 ;;; You should have received a copy of the GNU General Public License
18 ;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20 (use-modules (gacela))
21
22 (define (tick) (* 3000000 (get-internal-real-time)))
23 (define (waggle) (* 200 (cos (* pi (tick)))))
24 (define (wiggle) (* 300 (sin (* pi (tick)))))
25 (define (swaggle) (cos (* pi (tick))))
26 (define (swiggle) (sin (* pi (tick))))
27
28 (define homer (image "homer.png"))
29 (define marge (image "marge.png"))
30
31 (define (hv-dance image1 image2)
32   (over (move image1 wiggle 0)
33         (move image2 0 waggle)))
34
35 (define homer-marge-dance
36   (hv-dance homer marge))
37
38 (display-scene
39  (window ((resolution '(640 480)))
40    homer-marge-dance))
41
42 (display-scene
43  (window ((resolution '(640 480)))
44    (let ((small (scale homer-marge-dance 0.5)))
45      (hv-dance small small))))
46
47 (display-scene
48  (window ((resolution '(640 480)))
49    (scale homer-marge-dance (lambda () (abs (swiggle))))))
50
51 (display-scene
52  (window ((resolution '(640 480)))
53    (hv-dance (scale homer swiggle)
54              (scale marge swaggle))))
55
56 (display-scene
57  (window ((resolution '(640 480)))
58    (over (scale homer swiggle)
59          (move marge wiggle waggle))))