Now I can work on the game by programming in lisp. Let's go through
#'make-game, which is just a record of hacking along in a repl,
dumping often flawed defs from a source editor.
; I added unwind-protect of SDL_Quit() which is safe.
Add the other direction, marvel at it again:
(push
(draw-lines-from
(coord-liner 0 (+ 2 (truncate 480 *scale*)) 1
0 (+ 1 (truncate 640 *scale*)) 1
:transpose t)
'(255 255 0))
*funs*)
(play-game)
;;;Here I wrote pretty big special-scope singleton closures for the player and a base
;;;Trying them out (more than once in reality :D)
(push (lambda () (Funcall (ensure-player) :paint t))
*funs*)
(push (lambda () (Funcall (ensure-base) :paint t))
*funs*)
(play-game)
;;; Add movement to the player using the exposed keyboardstate.
(push
(lambda ()
(funcall (ensure-player) :move
(cond ((not (zerop (get-key-state *down*))) 's)
((not (zerop (get-key-state *up*))) 'n)
((not (zerop (get-key-state *left*))) 'w)
((not (zerop (get-key-state *right*))) 'e))))
*funs*)
(play-game)
;; (yay, we can walk around)...
;; I added a *plants* list and (spawn-plant-in x y w h)
;; and (advance-someplants lists-of-name1->name2->fractional/probability)
;; and paint-plants.
(loop repeat 6 do (spawn-plant-in -5 -5 15 15))
;;(print *plants*)
(advance-some-plants '(leaves flower 7/10))
;;(print *plants*)
;;Nconc so the plants are always on top
;;(I wanted to see the plants - but that's probably backwards right)
(nconc *funs* (list (lambda () (paint-plants))))
(play-game)
So I'm pretty happy with a live CL repl as my "map editor".
And it finally looks like we are doing something sensible ;p though
there is basically no sensible way to write a bunch of up-front-C, but
now I am very happy. The jam is almost over though! I had an
offline-busy couple days.