[Pal-devel] Re: pal question (problem ?)

Tomi Neste flatlander at yellow-hut.com
Wed Jul 11 21:55:28 UTC 2007


Nicolas Lamirault <lam at perave.org> kirjoitti Wed, 11 Jul 2007 19:07:32  
+0300:

>
> hi,
> i try your PAL library. It seems very useful. So i try to start use it
> with a Simon like game.
> first tests are concluants.
> But i've got a problem to load several image in a loop :
>
> (defun play-sequence ()
>   "Draw the current color, and play the associated sound."
>   (loop for color in *random*
>      do
>        (when *debug*
>          (format t "~&Play ~A~%" color))
>        (set-simon color)
>        (draw *simon*)
>        (play-music (load-music *sound*) nil 255)
>        (sleep (/ 1 2))
>        (set-simon :base)
>        (draw *simon*)))
>
>
> this function read *random* list and for each color draw the available
> image :
>
> (defmethod draw ((s simon))
>   (when *debug*
>     (format t "~&Draw ~A : ~A" *simon* (simon-image s)))
>   (draw-image (simon-image s) (v 0 0)))
>
>
> set-simon update some internal variables.
>
> i've a test :
>
> (defun climon-test ()
>   (with-pal (:width +width+ :height +height+ :fullscreenp nil
>                     :paths   (concatenate  'string  *climon-directory*
>   "font/"))
>     (initialize-simon)
>     (draw *simon*)
>     (setf *random* '(:blue :yellow :red :blue :green :blue :green
>                      :red :red :blue :red))
>     (event-loop ()
>       (test-keys
>         (:key-space (play-sequence))
>         (:key-q (return-from event-loop))))))
>
> each  object (simon-{color})  contains  the same  image  but with  the
> specified color with a nice light.
>
> when we do the test, it seems  that all the images are drawing. But in
> real, i don't see images with specified colors. Sounds are ok
>
> any idea of my problems .
>
> i send you with this mail  my code. Graphics and sound are stolen from
> memotux (Simon in OCaml).
>
> thanks for any help
>
>

Nice little game you got there! I'm surprised you got that far with the  
current PAL documentation being what it is... ;)
It looks like your problem is in the play-sequence function, the following  
should work:

(defun play-sequence ()
   "Draw the current color, and play the associated sound."
   (loop for color in *random*
      do
      (when *debug*
        (format t "~&Play ~A~%" color))
      (set-simon color)
      (draw *simon*)
      (pal::update-screen) ;; update the screen!
      (play-music (load-music *sound*) nil 255)
      (sleep (/ 1 2))
      (set-simon :base)
      (draw *simon*)))

By default PAL updates the screen only once for each iteration of  
EVENT-LOOP so you need to do it manually. Since PAL::UPDATE-SCREEN is  
useful in these kinds of situations I'll change it into an exported symbol  
in the PAL package.

Hope this helps, if you still have problems/questions feel free to ask.



More information about the pal-devel mailing list