Table of Contents

Description — What Is Sepp?

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.

Rationale — Why Was Sepp Written?

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.

Features — What Can Sepp Do?

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.

Requirements — Will Sepp Work on My System?

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.

Downloads — How Can I Get Sepp?

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.

Instructions — How Do I Play Sepp?

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.

Support — Where Can I Get Help with Sepp?

Believe it or not, any question or suggestion regarding Sepp is most welcome. Here are the focal points of Sepp support and development:

freshmeat.net
The Freshmeat project details page allows you to post comments and questions, as well as rate the project. If you subscribe to the project, Freshmeat will notify you of new releases and I will be able to send you mail to warn you of any show-stopping bugs or to ask for your opinion when implementing new features. If you prefer not to subscribe, you can keep up with Sepp development by watching the NEWS file.
advogato.org
If you get involved in Sepp development, you'll be able to confess your sins here. To become a contributor, you should write to me, directly; you will find the email address in the README file.

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.

Acknowledgments — Last, but Not Least

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.