Chinese Checkers

Chinese Checkers

-====================================================================-

Here on my server...

-====================================================================-

Overview

This is a current work on the Chinese Checkers Game, meant to be portable, but only tested on Linux X-Windows at the moment. (It may work on Solaris...) It has also been tested on BSD by others, which ones I don't know.

The program features open-source with an opportunity for anyone to develope a plugin player. This could be lots of fun! Please read the included README files in the base directory and the players subdirectory. With the information supplied in these READMEs and two players (that aren't winners) included with source code, you should be able to produce a highly intelligent player! This may turn into a contest of sorts and the winners and losers and all welcome to a spot on my site. If there is interest in this contest I will come up with a prize that you may like or hate...but either way it's a prize that you can compete for. Please show interest by writing me email! If enough interest is shown we'll see what we can do. If you'd like to sponsor a/this contest please write me as well. This program has already been used in one contest, I'd love to see it put to good use!

-====================================================================-

Pictures


Startup Options

Here is the current startup screen. Here the players are selected from among the compiled players available. The current players available are human, slider, jumper, robo, MM, and None (for nobody!). They are shown in the image above and these buttons are each cycle buttons. Here I also intend to make marble color selection available. That would be between the number and the player-type cycle gadget. I also want to make a name string entry for players as well.


Start Game

Now we have started a new game with all 6 players. I made the none in the last picture into a slider before starting. The players are listed in the top right of the window. They have player number, marble color, and player-type. I will have a real name, instead of player-type, here when I add that to the startup options. If a player has output it appears in the upper left. Right now the human player has a small indication of who is up and what marble color they are. But any player can mess with this blank area, making it ideal for any options for a step motivated AI player with a GUI. The lower right is used for game options. Hints are for adding hint capabilities to any player, but this shall be added to the human players GUI so that each human can have their own options. Animation selects whether the marbles animate or just step fast, or when animating (which is a visible jump) to have shadows underneath the marble. Zooming is currently non-functional, but may soon toggle between normal and double pixel displays for aiding high resolution screens. Maybe later this can give way to dynamic scaling according to window resizing. Finally the lower left contains major operations for the program. Quit is self-explanatory. New is also itself. Help is currently non-functional, but in the future it will contain a help thinger to help you understand the whole game and the GUI as well.


Mid Game (w/human hints)

Here we have taken a few moves, as has the computer. Human is up and has more moves showing through the hints.


Game Over

Well I lost! darn it! and to my own player...it is almost sad that something I created can beat me, but then again it is neato, eh? ;)
-====================================================================-

Players

Human The player to be used directly through the X windows GUI by the user
Slider This player only knows how to slide exactly one spot away. No jumping AI. Slider is intelligent enough to move around walls of marbles, however. Slider trys to be the best simple player it can be!
Jumper Jumper is a decendant of slider. Jumper adds the capability of single jumps to slider. It also trys to be the most intelligent a single jumper can be!
Robo Robo is the next step after Jumper. Robo knows how to do multiple jumps. Robo try to be the most intelligent multiple jumper and single slider if necessary!
MM A variation of Robo being developed by Michael Sterrett.

-====================================================================-

Credits & History

Spring 1993 Original Program
for Intro to AI
on Sun UNIX
in Lisp and C
Programmers Jon Atkins (Main & GUI)
Michael Sterrett (Assist & Sockets)
Documentation & Presentation Christine Hickok
Scott Nelson
Spring-Summer 1995 MS-DOS
in C (incomplete)
Michael Sterret
Summer 1995 AmigaDOS
in C (incomplete)
Jon Atkins
Summer 1996 - now Linux X-Windows
in C (in progress)
Jon Atkins

The original game was made for a class at Taylor University. It contained features such as dynamic integration of new player modules on every run, LISP main driver with C functions, automatic tournament and result tallying, plus it had a dual capability to run through a VT terminal or an X-Windows client through an elaborate socket driven message system to the LISP driver. All this was one HUGE kludge. The X libraries were not compatable with the LISP linker, the socket library would die after 64 transactions (about 32 moves) so it was killed and restarted EVERY time(!), many things were emulated in LISP by using a C system call, and finally we had to make sure that Marbles in the X window were visible so we drew them 5 times EVERY TIME! In the end I didn't qualify for credit in the class, even though this was the most beautiful peice of work in the class, the code alone was 3 times longer than anyone elses, it took two solid weeks of work non-stop, and did quite a bit more functionally as well. Bummer eh? :(

Then we decided it was time to rewrite the whole thing in C. Mike started on his own version for MS-DOS using a nice graphics library. It ran in low res 320x200 and had mouse functionality built in. The rest was pretty much up to Mike. He had the computer players working, and even had animation with jumping marbles with shadows! But this has been put on indefinite hold as long as Linux is a better OS. Which means FOREVER! ;)

Then, inspired by Mike's achivements I was spurred to try writting a client for my Amiga 4000. I started working from the original LISP script and C sourses, just as Mike did for MS-DOS. I had both the computer and human players working. A nice Amiga GUI with screen flipping and 8bit (a whopper for Amigas!) graphics complemented the clean execution. I even had screenmode selection worked in the menu! The VT terminal half was ditched in this version as well as in Mike's MS-DOS version. I even had a full startup implementation done for player color, type, and number selection. Plus colored glowing corners for human's origin corner on the board. It was nice, but starting a new game in the middle of another would mess up the board. I stopped development on this once school started again, and lost interest until the next summer...

As you can see this is now the fourth generation of the same old driver we came up with in the spring of 1993! I think I have enough experience now to really know what can be done to make this a really enjoyable game. I am continuing work on it. It still retains it's VT interface, soon to be in true color ncurses. I also plan to integrate tournament functionality into the whole package somehow, maybe as a separate front-end. A Network player is planned when the GUI is finished, so that freinds can play over the net with each other. That would be derived from the human player and use the BSD socket library. The X-Windows code is all my own using only XLib functions. I was concerned about getting the most speed out of a very freindly X-Windows client. MITSHM extensions may be nice in the future too, although, they would be almost useless for the amount of data I'm actually moving around! The current version will be released with old VT handling, but full GUI implementation. Later a tournament of AI players is planned, and sucsessive version will, of course be posted here!

Just a note on the release here, some buttons do nothing. Consider them to be stress relievers. -====================================================================-

Update...

  • Fixed human player in X client, it now moves correctly in any player position.
  • read README, and players/README for any info, otherwise email me.
  • CVS repository is available, but I don't update it that often, as my work is on other projects at the moment...but I will make an OpenGL interface for this someday!
  • The sources now contain source for all players I've written so far.
    I'd love to have more good players, but noone else has contributed source code.
  • The binaries are for convenience, they were made for glibc2.1 & XFree4.0.1 -====================================================================-

    Downloads

  • sdlCC-0.0.0.tar.gz (this sdl version, much better too! 560KB (ignore the version number ;)
  • ChineseCheckers.1.1-src.tar.gz 460KB
  • ChineseCheckers.1.1-bin.tar.gz 212KB
  • All files, new and old...

    -====================================================================-

    jcatki AT jonatkins.org