Free software tools for writing card games and simulations in C, C++, Java, and Python.

Project maintained by Lee Daniel Crocker

CC-0: To the extent possible under law, I, Lee Daniel Crocker waive all copyright and related or neighboring rights to all creative works original to me.

The OneJoker Project

OneJoker is a collection of code and other resources for writing card games and simulations. Currently this includes:

Both RandLib and CardLib are written in C, with binding code to allow them to be used from C++, Python, and Java. C is my “native tongue”, and best suited to code that needs to be balls-to-the-wall fast like code to simulate billions of hands of blackjack or poker. Python is my current mistress, and the first tool I reach for to get something done quickly. So being able to call the fast C routines from nice easy-to-write and easy-to-read Python gives me the best of both. Java I’m pretty indifferent about, but it’s popular (especially now with the ascent of Android), I’ve used it enough to be familiar with it, so I added that binding. I’d rather have my teeth pulled without anesthesia than write in C++, but having written the C code, writing a C++ wrapper is only a few lines of code, so those masochists out there who use C++ (or who are forced to use it) can use the libraries too.

I also do all the coding on Linux. Software development on Windows isn’t quite as painful as C++, but it’s close. I even worked for the Evil Empire briefly back when they were an Empire—now they’re kind of the Evil Also-ran. But you can use the libraries from Windows as well, because of a wonderful project called MinGW, which allows us Unix geeks to write software in a familiar environment that runs on Windows. I know nothing at all about Macs or Objective-C. If you want to port my libraries to Cheesy Cheetah or whatever the lastest Apple OS is, you have my blessing, just not my my help. I hear it’s vaguely Unix-y—even some of my Linux brethren do their work on Macs—so it might not be that hard, but I just don’t know.

I plan to also upload things like card images, an Internet game server, explanatory texts (maybe with an opinion or two), full sample programs, and other related things.