GTKPool is a 2D pool game using the GTK+ toolkit. It should run on Unix
and Linux variants. It currently supports playing 8-ball, 9-ball and Rotation
as well as a "No Rules" option for practice/just messing around. It supports
many options and has configurable physics so you can do almost anything.
The table and balls are scaled to a eight foot by four foot table. It uses seven pixels
to represent one inch. Currently the physics are a little weak, but I will continually
try to upgrade them to make it as real as possible.
Generally it is a pleasant way to spend time that you should be spending with
your friends and family. I hope you enjoy it as much as I do. I, of course,
welcome your suggestions, so send anything to
gtkpool@seul.org
Broke the Spot Last Ball function (still works kinda)
Added New Game option "No Rules"
Replaced ball hit sound
Added ball going in pocket sound (Really need new sound handler)
Added "Players"
Created Rule enforcement system for 8-Ball
Created Rule enforcement system for 9-Ball
Created Rule enforcement system for Rotation
Created Rule non-enforcement system for No Rules ;)
Added new Racking alignment for Rotation
Started implementing comment system
You can now WIN a game and it displays it at the bottom
Fixed signal handler errors
Fixed Clicking on "Ball in Hand" more than once error
Added toggle for sound in options panel
0.4.3
Jul. 03, 2002
Fixed compile bug on BSD/OS 4.2 (Thanks Bruce Momjian)
Improved accuracy of aiming (Thanks to Mani Sadeghi for inspiration and some sample code)
Improved Ball collisions (Again thanks to Mani Sadeghi)
0.4.2
Mar. 06, 2002
Added option to turn off aiming line (for the real hotshots ;)
Added patch provided by Philip Martin to allow to compile using GCC 3.0
Fixed bug that prevented use of --enable-final configure option (Thanks Marcus Fritzsch for pointing this out)
Fixed bug that Resetting the table did not clear the last sunk ball and extra balls could be placed on the table. (Thanks Marcus Fritzsch)
0.4.1
Jan. 20, 2002
Got rid of error on closing (pixmap no longer used)
Got rid of some compiler warnings
More code clean-up
Made it so in 9-ball cue can be placed anywhere and 8-ball its still behind the foul line
Made it so cue ball can be "picked-up"
Started using Vector functions for drawing shooting and aiming lines
Made cue stick one size all the time and added "power" line
Aiming line more consistent now (always the same size)
Tweaked cue ball placement for 9-ball start-up
Tweaked cue replacement area (couldn't get all the way over to foul line)
Changing Games in the options dialog now resets game (and table)
Window position starts at center of screen (easier for shooting)
0.4.0
Jan. 12, 2002
Implemented use of autoconf, automake, configure
Split up some of the classes to use more files
Redid Options Dialog (used Glade)
Added ability to change table being played on
Changed image (xpm) loading to search multiple directories for easier installs
Same for the sound loading
More code cleanup and commenting
Fixed install routines to put images where the program will find them
0.3.6
Jan. 3, 2002
added new table(s) and balls (pixmaps)
Resized table and balls for new pixmaps. All set to scale of real life.
Changed location of initial rack and cue placement on start-up/reset
Made it so cue ball can only be placed behind foul line
Made it so only cue ball can be shot
Started adding code for placing a foul ball back on table
Set the #define statements in pool.hh related to the balls to match their numbers (cue=0)
Started cleaning up code and adding comments
Got rid of some compiler warnings
Added aiming line (dashed)
Made shot line thicker and longer
0.3.4
January 2, 2000
removed useless include of popt.h
0.3.3
December 15, 1999
replaced balls.clear in resetTable with balls.erase(balls.begin(), balls.end()) for compatibility with BSD
replaced draw_circle functor with draw_ball
added checking of app.sound variable to prepare for use of no sound option
changed checking of return fragment size so that only size is checked -- not limit, which caused problems with newer versions of OSS
folded useless Circle class into Ball
took care of complaint about passing const this to non-const draw -- made draw const
started adding GUI elements for multiplayer/network mode -- chat box
added table pixmap from Daniele Madri
removed gdk specific drawing code from class Ball and put it it the draw_ball function, found in application.cc
added nineball option
0.3.2
August 13, 1999
added casts to get rid of annoying warnings
changed mouse_drag() function to reduce useless redrawing while aiming
changed "install-script" to "./install-script" in makefile's install rule
fixed bug where sunk balls are not always erased (if they didn't move perceptibly when falling in -- see changes for 0.3)
fixed bug #2 -- where balls right up against and moving parallel to the horizontal bumpers won't sink
if hit_moving is on, the aimer is now redrawn to fix BUG #2
a new option is available that allows you to make "superhuman shots"
added convenience/legibility function Application::load_pixmap which includes error checking
fixed bug #4 -- purple cue-ball
added convenience/legibility function Application::new_ball
removed useless colours
fixed bug #3 -- aimer gets stuck when released over a button
added the beginnings of a sound system
0.3.1
July 17, 1999
fixed install-script for 3rd option
0.3
July 15, 1999
made it possible to position the queue ball after it is sunk -- look for the circle cursor
fixed bug so that table now resets when everything except queue ball is sunk
added 3d balls provided by Bruce Smith <9401962@ml.petech.ac.za>
added options dialog -- currently control friction, collide_drag, and bumper_drag, and make it possible to shoot balls that are already in motion
fixed bug where if table is reset but cue ball is sunk, it still wants you to position a new cue ball, resulting in two cue balls
cue ball should no longer show up as purple ball in rack stopped mis-spelling cue
fixed aiming pointer droppings
dirty rectangle is only updated if ball has moved perceptibly -- ie, int values of position before and after move are differnet -- will reduce inefficiency caused by "shivering" in 0 friction
0.2
added install-script so that program can now be run from any directory
added rack at bottom of screen showing which balls have been sunk
made queue-ball reappear when it is sunk
added a dirty-rectangle type system, so that only those parts that need to updated are updated