DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: N T

⟦6f00190ba⟧ TextFile

    Length: 3578 (0xdfa)
    Types: TextFile
    Names: »NOTES«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Hearts/NOTES« 

TextFile

     Hearts consists of basically 3 parts:
1) The hearts distributor which keeps track of games in progress, and
   invokes new games (dealers) upon request.
2) The hearts dealer, which is the smarts of hearts, handling the actual
   deal, play, and computer strategy.
3) The hearts player, which is essentially an ignorant interface for each
   human player to the hearts dealer.  The dealer passes messages to the
   player about what to display, and the player has a curses implemented
   windowing interface for displaying those messages.  Messages include
   such information as what's in your hand, what's been played, the current
   score, etc.  Messages passed back to the dealer include what card to play,
   and messages to send to other players.


     The initial invocation of hearts forks off the distributor, which hangs
around till nobody needs it.  The distributor passes info to the select_game
portion of the hearts player showing games in progress, which are updated as
games progress.  The player may join any existing game, or start a new game,
at which point the distributor forks off a new dealer, complete with a good
socket port to listen for hearts players on.  The port # of the desired game
is passed back to the hearts player, which then connects to the dealer, and
play begins.

     Modifications to dump replace the cursed curses implementation should be
easy as all the code is inside hearts.c.  Perhaps if I ever get X windows
running on my workstation...

			Possible bugs and problems:

     If 2 people invoke hearts at the same time, it is possible that they will
both try to invoke the distributor.  The second one will fail, at which point
an error message will be printed.  I've considered a few methods of dealing
with this.  For one thing, once a player has connected to the dealer, the
distributor socket is closed.  When all dealers and players are gone, the
distributor exits.  Otherwise it is sitting in a select loop waiting for new
player connections, or status information from the dealers (hand and round
numbers, players joined or left).  Perhaps the distributor should hang around.
Maybe have it time out after, say, 30 minutes, then leave.  Or, the fix I'm
considering is having each hearts player do an exclusive lock on a file when
started.  When successful, the player will try to connect to the distributor.
If successful, fine, else the distributor is invoked, and when ready for
connections, then free the lock.  Thus is guaranteed no two players will try
to start the distributor.  Suggestions for how best to deal with this problem
are welcome!
     The strategy for the game came from an old Pascal program by Don Backus
of Oregon Software, with "improvements" by Jeff Hemmerling of Tessi.  I'm not
too sure the improvements help that much in that they do fix some bad play
problems, but at the same time make it a bit easier to shoot, and seem to
reduce the incidence of the computer accidentally shooting the moon.  There
at present is no algorithm for the computer to shoot, tho miraculously, it
on occasion succeeds!  I'm not to familiar with the rules of hearts, but I
see no rules regarding dumping hearts the first round or leading hearts when
not broken.  The latter causes a potential problem if hearts have not been
broken yet, and the leader has only hearts left.  If these rules are common,
or desirable, let me know as I'm considering tossing them from the new
strategy I'm writing.

     I've been too lazy to write a man page for it.  Maybe by next release...

	Bob Ankeney
	...!tektronix!reed!bob