$25
Project 3 – Guess Who?
Game Description
Background
Guess Who? is a logic-based game distributed by Milton Bradley, and now, Hasbro. Your opponent chooses a character with a set of characteristics. You have perfect information about all characters and all of their characteristics, as follows, and as specified in file characters.csv:
NAME GENDER HAIR COLOR BALD HAT EYES MUSTACHE BEARD GLASSES EARRINGS
ALEX
Male
Black
FALSE
FALSE
Brown
TRUE
FALSE
FALSE
FALSE
ALFRED
Male
Red
FALSE
FALSE
Blue
TRUE
FALSE
FALSE
FALSE
ANITA
Female
White
FALSE
FALSE
Blue
FALSE
FALSE
FALSE
FALSE
ANNE
Female
Black
FALSE
FALSE
Brown
FALSE
FALSE
FALSE
TRUE
BERNARD
Male
Brown
FALSE
TRUE
Brown
FALSE
FALSE
FALSE
FALSE
BILL
Male
Red
TRUE
FALSE
Brown
FALSE
TRUE
FALSE
FALSE
CHARLES
Male
Blonde
FALSE
FALSE
Brown
TRUE
FALSE
FALSE
FALSE
CLAIRE
Female
Red
FALSE
TRUE
Brown
FALSE
FALSE
TRUE
FALSE
DAVID
Male
Blonde
FALSE
FALSE
Brown
FALSE
TRUE
FALSE
FALSE
ERIC
Male
Blonde
FALSE
TRUE
Brown
FALSE
FALSE
FALSE
FALSE
FRANS
Male
Red
FALSE
FALSE
Brown
FALSE
FALSE
FALSE
FALSE
GEORGE
Male
White
FALSE
TRUE
Brown
FALSE
FALSE
FALSE
FALSE
HERMAN
Male
Red
TRUE
FALSE
Brown
FALSE
FALSE
FALSE
FALSE
JOE
Male
Blonde
FALSE
FALSE
Brown
FALSE
FALSE
TRUE
FALSE
MARIA
Female
Brown
FALSE
TRUE
Brown
FALSE
FALSE
FALSE
TRUE
MAX
Male
Black
FALSE
FALSE
Brown
TRUE
FALSE
FALSE
FALSE
PAUL
Male
White
FALSE
FALSE
Brown
FALSE
FALSE
TRUE
FALSE
PETER
Male
White
FALSE
FALSE
Blue
FALSE
FALSE
FALSE
FALSE
PHILIP
Male
Black
FALSE
FALSE
Brown
FALSE
TRUE
FALSE
FALSE
RICHARD
Male
Brown
TRUE
FALSE
Brown
TRUE
TRUE
FALSE
FALSE
ROBERT
Male
Red
FALSE
FALSE
Blue
FALSE
FALSE
FALSE
FALSE
SAM
Male
White
TRUE
FALSE
Brown
FALSE
FALSE
TRUE
FALSE
SUSAN
Female
Blonde
FALSE
FALSE
Brown
FALSE
FALSE
FALSE
TRUE
TOM
Male
Black
TRUE
FALSE
Blue
FALSE
FALSE
TRUE
FALSE
Purpose
The ultimate purpose of this assignment is to write a program that interrogates your knowledge base through a series of Asks in order to deduce which player it has chosen (no peeking!).
Part 1 – Propositional Logic
Description
Given the information above, fully develop the game’s propositional logic description in a Word Document. You must include the propositional logic descriptions of each character and characteristic.
Coding Requirements
Download the project3.zip file from D2L. You will find two files contained in the archive:
py – contains the driver program.
py – contains a KnowledgeBase class that will represent what you know about the game and your opponent’s character. Reads the characters from characters.csv into the characters list, as a dictionary object for each character.
csv – contains the initial set of characteristics for each character.
(The other files will be used in Part 2).
Add code to the KnowledgeBase that randomly sets one character as the item your driver program will attempt to guess.
Add one or more ASK methods to the KnowledgeBase, as needed, for you to interrogate it. These should return only True or False.
Add an ASK_VARS method to the KnowledgeBase that interrogates the knowledge base and returns a list of the characters that match the query.
Add at least one TELL method to the KnowledgeBase to inform the knowledge base about new information that you have found.
Write a driver program (in project3_guess_who.py) that:Uses the ASK, ASK_VARS, and TELL methods to interrogate the knowledge base.
The program must choose the questions to ask and it must provide the information gained back to the knowledge base.
The program must successfully solve the puzzle for each run. Allow the user to run the program again or exit.
Part 2 – Propositional Logic with Relationships
A Family Matter
As it turns out, all 24 of the Guess Who? characters are related. Relationships include:
Spouse (assume if two people are the parents of the same children, they are married), Sibling, Sister, Brother, Niece, Nephew, Cousin, Parent, Mother, Father, Grandparent, Grandfather, Grandmother, Great-Grandparent, GreatGrandmother, Great-Grandfather
I have provided a list of all parent/child relationships in file relationships.json.
Propositional Logic
In a separate section of your Project 3 Word Document, define the relationships noted above using propositional logic.
Coding Requirements
From project3.zip, you will find the following two files:
py – Defines the Relationships class that reads the parent relationships from the json file.
json – Defines all Parent relationships in the data.
Note: You will need to import and use the KnowledgeBase from project3_guess_who.py to answer some of these questions.
Using your propositional logic definitions from question 7, implement one method for each relationship noted that returns True if x is the {relationship} of y. So, parent("Anita","Paul") would return True based on relationships.json, but parent("Anita","George") returns False.
Using this code, create an output CSV file that lists all relationship pairs contained in the family tree. This file should be in the following format:
Relationship_Name, Person_X, Person_Y
Write a driver program that allows me to interact with your Knowledge Base. Allow me to manually ask questions about the relationships above.