Starting from:

$25

CSCI5260- Project 3: Guess Who? Solved

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.

More products