#!/usr/bin/python ## ## Chuck Burd ## CSCI A598 ## Homework 2 ## quiz.py ## ## This program uses Python to implement a state machine ## that allows a user to play a flag-guessing quiz. import cgi, random ## Get parameters depending on where we are in the quiz def getParameters(data): # Check if no guess has been given on quiz if data.has_key("message") and not data.has_key("guess"): message = data["message"].value message = message.split() answer = message[0] picture = message[0] message = " ".join(message) # Check if we have a guess elif data.has_key("message"): message = data["message"].value message = message.split() answer = message.pop(0) # Get a value of the next country for flag except if quiz # is done. if message: picture = message[0] else: picture = "" message = " ".join(message) # Initialize state else: tmp = ["Australia", "Brazil", "China", "Italy", "Russia", "SouthAfrica", "Spain", "UnitedStates"] message = [] while tmp: i = random.randrange(len(tmp)) message.insert(0, tmp[i]) del tmp[i] picture = message[0] message = " ".join(message) answer = "noAnswer" # Check for state if data.has_key("score"): score = int(data["score"].value) else: score = 0 if data.has_key("count"): count = int(data["count"].value) else: count = 0 if data.has_key("guess"): guess = data["guess"].value else: guess = "noGuess" return message, answer, picture, score, count, guess ## Check answer and calculate score def checkAnswer(guess, answer, score, count): if guess == answer: score += 1 correct = "Correct!" elif (guess != "noGuess"): correct = "Wrong!" else: correct = "" # Check for cases when no guess has been given, otherwise # increment count if guess == "noGuess": pass else: count += 1 return score, correct, count ## Output the HTML headers and element def printHeader(): print "Content-type: text/html\n\n" print """ Flag Quiz """ ## Output the game board def printForm(count, picture, correct, score, message): # Check if we're still playing. If so, print game board. if (count != 8): print """
Match the flag with the country

flag pic Australia
Brazil
China
Italy
Russia
%s South Africa
Score: %s / %s Spain
United States

Reset

""" % (picture, correct, score, count, message, score, count) # Print game results since we're done else: print """
Match the flag with the country

Game over!
Score: %s / %s
""" % (score, count) ## Create main game function def main(): data = cgi.FieldStorage() message, answer, picture, score, count, guess = getParameters(data) score, correct, count = checkAnswer(guess, answer, score, count) printHeader() printForm(count, picture, correct, score, message) main()