It's possible, but I wouldn't find it fun to do.
The source code is linked above if anyone wants to have a go.
Ok