]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Sun, 18 Sep 2011 08:13:22 +0000 (08:13 +0000)
committerjsancho <devnull@localhost>
Sun, 18 Sep 2011 08:13:22 +0000 (08:13 +0000)
games/asteroids/asteroids.scm
src/gacela_mobs.scm

index 756dd73d4e5bf7dd14e4c83af5b8138ca0aa8f8e..8f1c91124591f9a9cc2820fd8e27abb79fb0cbac 100644 (file)
 (init-asteroids 2)
 (show-mob (make-ship))
 
+(let ((font (load-font "../tetris/lazy.ttf" #:size 20)))
+  (run-game
+   (render-text (format #f "Mobs: ~a" (length (get-active-mobs))) font)))
+
+
 ;;   (define (new-game n)
 ;;     (set! asteroids (make-asteroids n))
 ;;     (set! ship '((x . 0) (y . 0) (angle . 0) (moving . #f)))
index ca4d5d37c08d00fb7825fd9ecf9c6559c530eea1..dabb9dc2a40102aa5202fb171f510c52bfc1e3e6 100755 (executable)
@@ -31,7 +31,7 @@
 
   (set! hide-mob-hash
        (lambda (key)
-         (hash-remove! key)
+         (hash-remove! active-mobs key)
          (set! changed #t)))
 
   (set! get-active-mobs
 (define-macro (hide-mob mob)
   (cond ((list? mob)
         `(let ((m ,mob))
-           (hide-mob-hash (m 'get-mob-id) m)))
+           (hide-mob-hash (m 'get-mob-id))))
        (else
-        `(hide-mob-hash (,mob 'get-mob-id) (lambda () (,mob))))))
-
-(define-macro (kill-me)
-  `(hide-mob-hash mob-id))
+        `(hide-mob-hash (,mob 'get-mob-id)))))
 
 (define (run-mobs mobs)
   (for-each
 (define-macro (define-mob mob-head . body)
   (let ((name (car mob-head)) (attr (cdr mob-head)))
     `(define ,(string->symbol (string-concatenate (list "make-" (symbol->string name))))
-       (lambda* (#:key ,@attr)
+       (lambda* ,(if (null? attr) '() `(#:key ,@attr))
         (lambda-mob () ,@body)))))
 
 (define-macro (lambda-mob attr . body)
-  `(let ,(cons '(mob-id (gensym)) attr)
-     (lambda* (#:optional (option #f))
-       (case option
-        ((get-mob-id)
-         mob-id)
-        (else
-         (catch #t
-                (lambda () ,@body)
-                (lambda (key . args) #f)))))))
+  (let ((mob-id-symbol (gensym))
+       (type-mob
+    `(let ,(cons `(,mob-id-symbol (gensym)) attr)
+       (lambda* (#:optional (option #f))
+        (define (kill-me)
+          (hide-mob-hash ,mob-id-symbol))
+        (case option
+          ((get-mob-id)
+           ,mob-id-symbol)
+          (else
+           (catch #t
+                  (lambda () ,@body)
+                  (lambda (key . args) #f))))))))