OpenScrabble v.03 ----------------- June 19, 1999 Author: David Bender (codehero@yahoo.com) Web Page: http://www.one.net/~benders/openscrabble/index.shtml Contributors: ------------- Blake Scholl What is OpenScrabble? --------------------- OpenScrabble is an open-source implementation of the popular Hasbro game Scrabble(tm) (Scrabble(tm) is a registered trademark of the Hasbro Corporation if anyone really cares). The aim of this project is to provide a robust game engine upon which different interfaces can be built. Since there are so many different ways to make a GUI (Windows, JX, GNOME, KDE, even ncurses, just to name a few) I leave it to the Open Source community to come up with the optimal solution, the same way Linux came to be such a great operating system. Of course, this program has nowhere near its popularity, but I'm sure there are some bored programmers out there. :) WishList: --------- A BETTER INTERFACE! Network Support for TCP/IP players, maybe even modem Artificial Intelligence (I'm working on that now) More to come Features: --------- The engine allows (so far) for human players to make moves on the board, complete with valid move checking as well as checking to see if the move is in the dictionary. If there are any bugs in the implementation, see bug report below. This implementation of Scrabble has internal support for alphabets up to 31 letters (support can easily be extended for alphabets up to 63 characters). Tiles can highly customized. Bored with the blank? Edit the bag file, or modify it so it doesn't make an 'S'. Want more letters? Put them in. Want a smaller board? Edit the board file. Like playing with more tiles? You get the idea. Once the project gets a better interface, support for fooling around with just about every game parameter will be supported. Installation: ------------- All platforms need to download the "important stuff," as stated on the website, and put into the directory you will use for the program. If you are running Linux/Unix, you probably want to download the source. Untar the archive in a directory. Then simply go to the directory and run 'make'. Run the executable with './OpenScrabble'. The Microsoft serfs can download the executable version (which probably has some DOS specific bugs--sorry Linux is my native platform). You know the rest of the procedure. For the more adventurous Microsoft serfs, the source code is available to compile, but I've only compiled it under DJGPP. I'm slowly moving away from the Using OpenScrabble ------------------ Ok, here's the embarassing part: The interface is pretty nonintuitive. Here's how it goes: First things first: All numerical input and output is in HEXADECIMAL (its actually more convenient that way.) BE SURE to use lower case letters for all input (unless otherwise specified). The first part will be straightforward. Specify what type of player you want. When player decision is done, something vaguely resembling a board will come up. Here is a legend of the symbols: '-' : empty square, no bonuses '@' : double word score '#' : triple word score '2' : double letter score '3' : triple letter score Four choices there will be, so choose carefully. If you choose (M)ove, you will then be presented with a cryptic cursor. Here is the format of an inputted move: X_COORD Y_COORD DIRECTION WORD_PLAYED X_COORD is the x coordinate of the first letter of the play, in the range [0..f] Y_COORD is the y coordinate of the first letter of the play, in the range [0..f] obvious, annoying hint: There are coordinates running along the side of the boards; use them to help describe where you want to move. DIRECTION is which way the play reads: 0 is vertical 1 is horizontal WORD_PLAYED is the lower case string that you put on the board. If you have a blank, then the letter it represents is UPPERCASE. EXAMPLE: (Here is a fabulous screen shot!) (comments will be indicated by ->) How many will be playing? (min=1,max=4...well theoretically 14) 2 0 1 2 3 4 5 6 7 8 9 a b c d e 0| # - - 2 - - - # - - - 2 - - # 1| - @ - - - 3 - - - 3 - - - @ - 2| - - @ - - - 2 - 2 - - - @ - - 3| 2 - - @ - - - 2 - - - @ - - 2 4| - - - - @ - - - - - @ - - - - 5| - 3 - - - 3 - - - 3 - - - 3 - 6| - - 2 - - - 2 - 2 - - - 2 - - 7| # - - 2 - - - @ - - - 2 - - # 8| - - 2 - - - 2 - 2 - - - 2 - - 9| - 3 - - - 3 - - - 3 - - - 3 - a| - - - - @ - - - - - @ - - - - b| 2 - - @ - - - 2 - - - @ - - 2 c| - - @ - - - 2 - 2 - - - @ - - d| - @ - - - 3 - - - 3 - - - @ - e| # - - 2 - - - # - - - 2 - - # There are 56 in the bag. Player:0 Score is 0 e m n i t q t Choices: (M)ove, (T)hrowback Tiles, (P)ass, or (Q)uit: m Enter your move: 7 7 1 mint ->see, it follows the format ->Here are the results of the move, and its the next player's turn Move was worth: c -->Like the hexadecimal? done 0 1 2 3 4 5 6 7 8 9 a b c d e 0| # - - 2 - - - # - - - 2 - - # 1| - @ - - - 3 - - - 3 - - - @ - 2| - - @ - - - 2 - 2 - - - @ - - 3| 2 - - @ - - - 2 - - - @ - - 2 4| - - - - @ - - - - - @ - - - - 5| - 3 - - - 3 - - - 3 - - - 3 - 6| - - 2 - - - 2 - 2 - - - 2 - - 7| # - - 2 - - - m i n t 2 - - # -->Ooh, I see a mint is on the board! 8| - - 2 - - - 2 - 2 - - - 2 - - 9| - 3 - - - 3 - - - 3 - - - 3 - a| - - - - @ - - - - - @ - - - - b| 2 - - @ - - - 2 - - - @ - - 2 c| - - @ - - - 2 - 2 - - - @ - - d| - @ - - - 3 - - - 3 - - - @ - e| # - - 2 - - - # - - - 2 - - # There are 52 in the bag. Player:1 Score is 0 m r e o d i e Choices: (M)ove, (T)hrowback Tiles, (P)ass, or (Q)uit: Play ends when a player is unable to get more tiles from the bag (ie the player has 0 tiles, and the bag has 0 tiles) or when enough players quit that only one remains. The score is then modified appropriately according to what letters the remaining players have left (those of you who play Scrabble(tm) know what I'm talking about). Known Bugs: ----------- Find Them. I will be so glad if you tell me. Reporting Bugs: --------------- If said product does not have the proper functionality as said in the features list (ie improper scoring, too many tiles left in bag, does not quit properly, lets you play invalid moves, doesn't let you play valid ones), send me a friendly reminder to get off my butt and get it fixed. If you find a bug and find a fix for it (meaning you took time to sift through my source code) help me out a bit. If I forgot to mention something important in this documentation, I guess I messed up. About the Author: ----------------- Well, I'm going to forget all the horror stories regarding the internet about revealing information about yourself, and say a few things, if you care. My name is David Bender, I like programming, this is my first real project or stab at anything longer than "Hello World" or the infamous "TangleWord Trainer" (cheap plug). I wrote this from scratch, so if there are any bugs, I guess I'm to blame.