SourceForge Logo


Main Page


Project Page
Screen shots

Other sites:

A set card game with service and GTK+ client
About set: SET is an interesting card game of visual perception. Players will see a field of SET cards containing figures of different number, shape, shading, and color and must locate "sets" of three cards amonst the cards on the table. More information on how to play SET is included in the gset README. In a normal card game of set, users would generally put 3 new cards on the table after each set was removed. I find this makes gameplay a little sluggish and not quite as intense. Since a computer makes it possible to monitor the number of sets remaining in a field, I've programmed my version of SET to deal a new hand when all the sets of the table have been removed.

The end goal: The end goal of setrinet is to make a SET card game where players must gain sets to gain special attacks that can be used against themselves or the enemy in the multiplayer tournament. The players will get a certain amount of HP and when the player's HP is 0, he has lost the game. Basically, its a struggle to find sets in the field to make sure you stay alive.
Current Features Supported:
- Full single player SET support
- Fast field calculating and SET finding algorithm
- Operational toolbar to assist in starting a new game or exiting the application
- Operational menubar to allow users to access features
- Operational statusbar to display messages to the end user
- Table of buttons with pixmaps to allow users to select their sets quickly and effectively
- Multiplayer support for online set tournament of up to 8 players in cooperation with setrinetd
- Autoconf/Automake packaging for both setrinetd and gset
- Support for a score box to display current multiplayer scoring results
- Support for fancy looking help->about
- Quick and easy multiplayer server connection through the client
- Multiplayer server connection will resolve hostnames and return an error to the statusbar if hostname could not resolve
- Apropriate connection checking to ensure multiplayer operations can not be handled when single player is in progress
- Password authentication system to allow a server administrator to control his server through the client
- Begin multiplayer command to allow an authenticated administrator to begin the multiplayer game from his client
- Scoring box displays a new enemy everytime another player connects or removes an enemy when a player disconnects
- Synchronous I/O multiplexing service and non-blocking sockets to ensure a laggy client will not lag the server
- Good system for transition of data between server and client
- Threaded ping timeouts to ensure an unresponding client is disconnected
- Seven character username support for clients on the server
Current Status:
Latest version: gset-0.2.6

* v0.0.1 - begin version naming, merge with Bill
* v0.0.2 - deals table, pixmaps go on buttons now
* v0.0.3 - layout changed, everything looks nice now
* v0.0.4 - bug in table, can deal same card twice, made workarround
* v0.0.5 - converted all images to xpm, wrote conversion.c
* v0.0.6 - bug found, random number generation could return 0 which would make card not exist, fixed.
* v0.0.7 - the beginnings of callback function
* v0.0.8 - added toolbar in handlebox
* v0.0.9 - added menubar to a handlebox as well
* v0.1.0 - changes to new_field, changes to callback, and creation of the remcallback function
* v0.1.1 - matching sets function added
* v0.1.2 - new_field() now calculates number of sets in field
* v0.1.3 - major reprogramming of numerous functions since changes in new_field()
* v0.1.4 - changes in new_field() to clean up the code
* v0.1.5 - changes to callback() to reflect new theory and clean up code
* v0.1.6 - changes to remcallback() to clean up code and reflect changes
* v0.1.7 - changes to check_set() to clean up code and reflect changes
* v0.1.8 - bug in random generation, fixed
* v0.1.9 - more changes to check_set(), added new_game() to call new_field() and reset score
* v0.2.0 - added the zero factor, in case of no sets in field, new_field issued
* v0.2.1 - code cleaning, put all the pixmaps in an array of pixmaps
* v0.2.2 - statusbar, toolbar, and menubar updates, path to pixmaps added as a #define, code cleanup, and creation of several new menubar callback functions
* v0.2.3 - bug in new_field() fixed, split set.c into multiple other files. development of multiplayer code is steadily underway. I will post later this week.
* v0.2.4 - added multiplayer support
* v0.2.5 - many bug fixes, mostly multiplayer related bug fixes
* v0.2.6 - new connect window, new auth/user system, 7 character username support, bordersize defined, dual connect bug fix

Latest version: setrinetd-0.0.3

* v0.0.1 - first released version, but is functional and packaged
* v0.0.2 - many bug fixes, sockets are non-blocking, all recieving data handled by syncrhonous i/o multiplexing
* v0.0.3 - threaded ping timeouts, new auth/user system, 7 character username support
Copyright (C) 2001 William H Darrow