S m a r t P a i n t e r

learning 'random' imagery generator


This is a program which will generate images for the user to decide if they are pleasing to their eye. Then, once the images have been rated, more random images will be generated similar to the best looking ones.

This uses Genetic Programming and a lisp dialect (using my 'lithp' lisp interpreter.) The programs use the lisp syntax, but mostly are custom made commands like (line 30 20 40 199) and such to draw a line.

For now, it will generate a lisp program which will display to the screen. Some examples can be seen below, although a single lisp program can generate many different images, like this:

The same lisp program, generating various images
(Notice the orange box and concentric circles in all seven of these.)

the splash screen
(works at any resolution)

Various random screens generated with this lisp program
(click for a better looking image)


Version (0.2) released.
Random generation of lisp programs implemented. It's a bit sparse, but being that there are no safeguards on long programs yet, it's acceptable. (If you change the program length (src/sp/sp_gen.c+121) from 8 to a higher value (ie 50), it might end up recursing too deeply with the 'repeat' command.
I also nailed down the state conditions for evaluation, in preparation for the next step, the GP crossover and mutation function implementations.
NOTE: if you want to put back in the file parsing of the .lsp program file, you may need to hack the src/sp/sp_base.c file to change the #ifdef NEVEr block around.
Version (0.1) released. (Initial version)
It doesn't do anything yet, but it starts up the window, and displays a splash screen that looks pretty.


This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

here's the license itself


SmartPainter requires that you have the libSDL library properly installed for your system.

  • added internal random generation of lisp programs
  • initial version.
  • splash screen. not much else.