Sepp, the Sliding Evil-Piece Puzzle, implements a computer version of the classic sliding puzzle game, which has 15 sliding tiles in a 4-by-4 matrix and is also known as the 15 puzzle, in which the properly ordered tiles would form a picture. Variants like Loyd's would be unsuitable for this version of the game because a picture in which two contiguous tiles were swapped (and which, therefore, could not be recomposed) might annoy users and likely be perceived as a bug in the program; therefore, Sepp does not perform arbitrary tile swapping when scrambling the tiles, and the original image can always be obtained given enough tile pushes.
On the other hand, Sepp implements its own innovative kind of player aggravation: based on a user-configurable degree of evil, ranging from Not at all evil to beyond Very Evil, Sepp decides, during each animation frame, whether it will disturb a tile while the game is in progress. For better or worse, this feature, which can be disabled by setting the evilness to Not at all evil, sets Sepp apart from other, similar games.
This project was originally developed between December 9 and December 21, 2005, as the “personal project” for a class called Programming Fundamentals 1 that the author took at the University of Lugano's Faculty of Informatics. The goal was to exercise and demonstrate programming skills acquired over the course of the previous seven weeks.
It is worth noting that Sepp is implemented in the strict subset of the language that was covered during those seven weeks; accordingly, it does not take advantage of features like destructive updates or macros — hence the glaring inefficiencies and boilerplate. Also, wherever possible, clarity of intent was favored over succinctness; therefore, some obvious refactorings were eschewed. I hope these decisions conspire effectively to render the code intelligible and accessible for beginners.
The alpha version of Sepp can already do quite a few things.
Just as importantly, Sepp does not implement a feature that may at first seem like an obvious requirement: Sepp does not keep track of the number of times the user pushed a tile. It seems hardly fair to do so in the face of the random gratuitous tile pushes the program performs during gameplay, some of which can really trip one up. Sepp does, however, keep track of tile pushes it makes, and uses this information to lower its evilness as the game wears on; that is, if the player wants to get cute and start solving a barely-scrambled game, Sepp is much more likely to push tiles during play but, gradually, it relents, and the game becomes more playable.
Sepp is written for the DrScheme environment; therefore, Sepp should run just fine on any platform on which you can get DrScheme to run. :-) I developed it on a 1.3GHz AMD Duron with SDRAM, so your machine will most probably run it without problems.
The latest-and-greatest version of Sepp [Tar/GZ|Tar/BZ2] dates from 24 March 2006 and is released under version 2 of the GNU General Public License. Sepp is free software.
Here is a printer-friendly document explaining how to use Sepp. Although it is from December of 2005, it is still accurate because the interface has not changed.
Believe it or not, any question or suggestion regarding Sepp is most welcome. Here are the focal points of Sepp support and development:
When you unpack the compressed archive, the resulting directory is named after the corresponding the CVS release tag, which is derived from the release date. This tag is also found in the footer of standard distribution files and in the header of program source code files. Please, refer to this tag in your messages.
This project would not have been what it is and was without the involvement of fellow conspirator Marco D'Ambros, whose no-nonsense technical advice, high expectations, and well-timed moral support made Sepp better. I also wish to thank Professor Michele Lanza for believing in his students and giving us projects worth sinking our teeth into.