|
||||||||||
PREV NEXT | FRAMES NO FRAMES |
See:
Description
Packages | |
inonit.domain.game.card | A set of classes representing constructs commonly used in card games. |
inonit.domain.game.card.hearts | Classes related to the card game Hearts. |
inonit.domain.game.card.hearts.ai | An abstract Intelligence implementation and associated classes which represent current
Game state. |
Hearts AI SDK, version 0.0.10.
Intelligence
s when running in subprocesses.
SecureTournament
is imposing a significant
performance penalty.
inonit.domain.game.card.hearts.application
package replaced
by the Hearts launcher, with an XML-based interface. Made it possible for
different Intelligence instantiation methods (object, jar, subprocess) to co-exist in the same competition.
Less cumbersome to manage multiple competition types.
java.lang.SecurityManager
which prohibits all actions that
a SecurityManager
can prohibit.
Intelligence
code. This should make it possible to include (for instance) multiple copies of
the same Intelligence in the same competition (while still being able to tell them apart). Removed
register
method from Intelligence
and getName
method from
AbstractIntelligence
.
Storage
interface into
Intelligence.Environment
.
Rules
interface in order to
take into account some extra rules variants which would not have been usable with previous interface.
Intelligence
s about events.
Several interfaces were added:
Several methods were changed:
Intelligence.handStarting(Intelligence.Hand)
and Intelligence.Hand.getDeal()
replace
handDealt(CardArray)
.
Intelligence.sentPass(Intelligence.Pass)
and Intelligence.Pass.getCards()
replace
sentPass(CardArray)
.
Intelligence.receivedPass(Intelligence.Pass)
and Intelligence.Pass.getCards()
replace
receivedPass(CardArray)
.
Intelligence.trickStarting(Intelligence.Trick)
and Intelligence.Trick.getPlayerToLead()
replace
trickStarting(int)
.
Intelligence.cardPlayed(Intelligence.Play)
,
Intelligence.Play.getPlayer()
and Intelligence.Play.getCard()
replace
cardPlayed(int,Card)
.
Intelligence.trickEnded()
and Intelligence.Trick.getPlayerWhoTook()
replace
trickEnded(int)
.
Intelligence.kittyTaken(Intelligence.Kitty)
,
Intelligence.Kitty.getPlayer()
,
Intelligence.Kitty.getSize()
,
and Intelligence.Kitty.getCards()
replace
tookKitty(int,int)
and tookKitty(CardArray)
.
Intelligence.handEnded()
and Intelligence.Hand.getScores()
replace
handScored(int[])
.
inonit.domain.game.card.hearts.Rules
with
Intelligence.Game.Rules
and
(undocumented) Rules
. Intelligence.Game.Rules
define the methods which
an Intelligence
can use in order to get information about the current
rules. The undocumented Rules
interface is used by the undocumented
Game
class to encapsulate rules variants. The Rules
interface is likely
to change.
Intelligence
methods are always logged to the game log. The default implementations of
AbstractIntelligence#passIgnored
,
AbstractIntelligence#playIgnored
, and
AbstractIntelligence#exceptionThrown
now do nothing. (They
could still be overridden to provide additional information.)
Rules.getValue(CardArray)
when moved to
Intelligence.Game.Rules.getValue(CardArray)
.
Previously, the method summed the values of individual cards -- and take-all calculations were explicitly excluded.
Now the method treats the cards as a unit taken at the end of a hand (e.g., take-all calculations will be reflected).
Intelligence#getPass
and made available instead through
Intelligence.Hand
.
SecureTournament
was limited to various values, typically
150 seconds.
Options.getHandTimeLimit
method. Cleaned up
implementation to make sure that all time spent in Intelligence
methods is counted.
exceptionThrown
method did not lead to an infinite loop (earlier
releases erroneously listed this as a "known bug").
Intelligence.Storage
).
inonit.domain.game.card.hearts.application
package.
getXXX
-style
methods rather than classes with setXXX
-style methods. Added XXXImpl
classes which can be used to
provide default implementations for some settings. Affected classes:
TestGame.Parameters
,
TestGame.ParametersImpl
TestTournament.Parameters
,
TestTournament.ParametersImpl
SecureTournament.Parameters
,
SecureTournament.ParametersImpl
Options
,
OptionsImpl
inonit.domain.game.card.hearts.application.TournamentOptions
,
TournamentOptionsImpl
inonit.domain.game.card.hearts.application.TestTournament.Parameters
to return
Intelligence
objects rather than their classes.
TournamentOptions
class. This allows inspection of individual games
during a tournament. It also makes it significantly easier to diagnose problems with Intelligence
objects
throwing security-related exceptions under SecureTournament
-- those exceptions can be caught, and their
exceptions written to the game log (previously, there was no way to access information about those exceptions).
test.hearts.*
to example.hearts.*
; eliminated test.hearts.SecureTournament
and re-named test.hearts.TestTournament
to example.hearts.Tournament
; renamed
inonit.domain.game.card.hearts.ai.sample
to example.hearts.ai
.
inonit.domain.game.card.hearts.SecureTournament
implementation which prevents
Intelligence
objects from
interfering with the server or each other by monopolizing the CPU or memory. For example, Intelligence
objects
which go into infinite loops will no longer stop the server. Each player is now run as a separate process outside the server,
(and still under a SecurityManager
.)
Intelligence
exceeds its time limit for a
given tournament, game, or hand.
Intelligence.getIdentification()
method to
Intelligence.register
in order to make it easier to add
identification information in the future without breaking backward compatibility. (This solution also makes it easier
to change Hearts to a distributed application.) Existing subclasses of
AbstractIntelligence
are not affected.
Intelligence
objects.
Card
constructor with get
factory method.
inonit.domain.game.card.hearts.SecureTournament
class (JDK 1.2 or greater required) which installs
SecurityManager under which Intelligence
objects run; changes to installation setup. Addition of
inonit.domain.game.card.hearts.TournamentParameters
class to share code between SecureTournament
and inonit.domain.game.card.hearts.TestTournament
. Alteration of
inonit.domain.game.card.hearts.TestTournament.Parameters
to match this.
Intelligence.destroy()
method to
Intelligence
and deprecated methods having to do with
tournaments; Intelligence
objects can now be "passivated" in the middle of tournaments.
TestGame
s and TestTournament
s; plays and passes that
occur after time has expired for a player in a hand are ignored and the server selects random plays for
the player who is out of time.
Rules
class, deprecation of rules-related methods from GameConfiguration
this
, for convenient method chaining.
|
||||||||||
PREV NEXT | FRAMES NO FRAMES |