(1 week)

(15 points) Consider the game Clue. Give me 3 general 'rules of inference' about the game in English. Note, these should not be Clue rules (e.g., you can only accuse from the room you're in), they should be 'rules' you would use to guide your actions and accusations during play.


(1 week)

(20 points) Project: Decide on a representation for your Clue knowledge base. At this time, all I want you to consider is how to represent the things that you know (e.g., give names to things in the game, identify where you are, what 'cards' you hold, what accusations someone has made, who has disproved what, etc.); this will include representing new knowledge that you acquire along the way. Specifically, propose some 'relations' or predicates that you will use to symbolically encode knowledge (e.g., inRoom(Player, Room) to denote which room a given player, including yourself, is in). Do not worry about any of the rules of inference you will use to derive additional facts, but do be thinking ahead to how you will use these facts to reason with. There are actually quite a few things you need to represent so be thorough. Note: if you're working as a team, submit only 1 answer between you and identify who you're working with. You will find the beginnings of a Prolog player in the (put link here)Glomus directory.


(1 week)

(20 points) Project: Consider how you will maintain your knowledge-base. Specifically, write knowledge-base 'manipulation' rules (i.e., rules that retract and/or assert facts) for the following events:

Note that since all symbols must be unique, the showsYou/2 predicate probably doesn't need to identify which kind of card it is. We'll be using these facts later on to build the rules for how to play and the 'intelligence' to play well. You will probably use a predicate makeSuggestion/4 that will decide where you should move and what you should suggest by using a large and complex set of predicates to pick those values; the rule will bind your answer to the variables and update your state (e.g.,

makeSuggestion(Suspect, Weapon, Room, Me) :- iAm(Me), pickSuspect(Suspect), pickWeapon(Weapon), pickRoom(Room), movesTo(Me, Room), movesTo(Suspect, Room).

You might also want to remember what you've suggested by adding a clause like: suggests(Suspect, Weapon, Room, Me) to that predicate.
Please remember that these are only suggestions and that you are free to choose different ways to represent information. You may do it differently, or perhaps add information to your representation that you might find useful.


(2 weeks)

(30 points) Turn in the code for a minimal Clue player that has:

Basically, most everything except the intelligence you'll use when taking turns or disproving suggestions. This should be enough to show me how you're representing information and using it to do some basic reasoning. Please include copious comments above the groups of rules that implement a specific feature or operation. Tell me the purpose of the rules and generally how they are designed to work. I will attempt to test your player so make sure that the minimal functionality remains functional.




(4 weeks)

(100 points) Turn in the code for an intelligent Clue player. Your player must be able to take legal turns, make suggestions, answer whether or not it can disprove a suggestion and if so, how. We will test our players against one another to see if they work correctly. You can't expect more than 20 points if your player doesn't even compile, not more than 40 points if it does not implement all required funcationality, and not more than 70 points if it can't reliably beat the `dumb' players. Your player must handle varying numbers of active suspects (do not assume that every suspect is playing i.e., can have cards), and should allow for varying numbers of weapons and rooms. Be careful to observe that our game allows for directed graphs so you should not assume that if room R1 is adjacent to R2 the converse is true.


(1 week)

You can and should continue to work on your player as we'll play with them again later with additional opportunities for more points.
(30 points) Turn in the code for your final Clue player (you can continue to work on this, but this will be your final submission to me). In addition to the earlier requirements, your player should be able to beat the player you submitted to me earlier, or at least play as well as the previous player. I will again play them against one another to test.