The idea that one can change and modify code while it is running sounds great, but I have never really gotten to the point that I understand practically how to do it in a non-trivial circumstance. As a concrete example where I think I should be able to do it, but I can’t, is when running one of the examples from the claylib system. I am using slime/emacs and I open claylib/examples/shapes/bouncing-ball.lisp. In slime I use (in-package :claylib/examples/bouncing-ball) and then (main) and I have the bouncing ball demo working fine. What I have tried to do is to change the color of ball from its current +maroon+ to some other color. I have tried editing that part of the function definition in bouncing-ball.lisp and recompiling, but nothing changes. If I kill the running example, recompile the bouncing-ball.lisp and then re-run main I see the new color, so I know that I am specifying a color correctly. Would someone tell me the steps to change the ball color while it is bouncing around to help me get started on this “live” coding method? Of if they think one of the other raylib wrappers would be better for this I can change. I am just using this as a learning tool to give me some visual feedback as I make changes. Thanks.

  • brittAndersonOPB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Thank you very much. The following is for any future visitor who ends up here with a similar question.

    One of my challenges with this example code is that the make-ball function was in a let*. The original example authors were using a move-ball function in their main game loop. So, inspired by your suggestion I wrote a color-ball function with a setf for the color slot of the shape object. Then I wrote an upd-ball function that just called move-ball and then color-ball internally using the ball object created in the let. Then, it all works great. If I adjust the “move-ball” function and recompile the ball speed changes, and if I adjust the “color-ball” function the color changes.

    Since you were kind of enough to respond, do you have a recommendation among the raylib wrappers (or the sdl or allegro wrappers or others, including yours) that you recommend as being particularly beginner friendly and also encouraging of good habits for someone learning some simple graphics manipulation with CL?