[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