X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=blobdiff_plain;f=examples%2F06-composition%2F06-composition.scm;fp=examples%2F06-composition%2F06-composition.scm;h=eeb11301ba63ac6464dd8a74dbae53978239b9b9;hp=0000000000000000000000000000000000000000;hb=00a6aa06bc7d618a3a4c158096efaee9c43d4cd6;hpb=4300a23450f99d1ddf2b30abec1a529409c076fd diff --git a/examples/06-composition/06-composition.scm b/examples/06-composition/06-composition.scm new file mode 100644 index 0000000..eeb1130 --- /dev/null +++ b/examples/06-composition/06-composition.scm @@ -0,0 +1,59 @@ +#!/usr/bin/env guile +!# + +;;; Gacela, a GNU Guile extension for fast games development +;;; Copyright (C) 2017 by Javier Sancho Fernandez +;;; +;;; This program is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see . + +(use-modules (gacela)) + +(define (tick) (* 3000000 (get-internal-real-time))) +(define (waggle) (* 200 (cos (* pi (tick))))) +(define (wiggle) (* 300 (sin (* pi (tick))))) +(define (swaggle) (cos (* pi (tick)))) +(define (swiggle) (sin (* pi (tick)))) + +(define homer (image "homer.png")) +(define marge (image "marge.png")) + +(define (hv-dance image1 image2) + (over (move image1 wiggle 0) + (move image2 0 waggle))) + +(define homer-marge-dance + (hv-dance homer marge)) + +(display-scene + (window ((resolution '(640 480))) + homer-marge-dance)) + +(display-scene + (window ((resolution '(640 480))) + (let ((small (scale homer-marge-dance 0.5))) + (hv-dance small small)))) + +(display-scene + (window ((resolution '(640 480))) + (scale homer-marge-dance (lambda () (abs (swiggle)))))) + +(display-scene + (window ((resolution '(640 480))) + (hv-dance (scale homer swiggle) + (scale marge swaggle)))) + +(display-scene + (window ((resolution '(640 480))) + (over (scale homer swiggle) + (move marge wiggle waggle))))