Advertisement
Guest User

V1

a guest
Aug 17th, 2015
2,728
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 44.30 KB | None | 0 0
  1. import random
  2. import os
  3. import time
  4. from tkinter import *
  5. from tkinter import messagebox
  6.  
  7. """
  8. 1/14/2015 - Chris Nelson of CnelsonCreations
  9. Wheel of Fortune, Version 0.1 Pre-Beta
  10. """
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. class Player:
  19.     def __init__(self, name):
  20.         self.name = name
  21.         self.player_bank = 500000000
  22.         self.player_wins = 0
  23.         self.player_losses = 0
  24.         self.player_total_guesses = 0
  25.         self.player_record_file = ("{}Records.txt".format(name))
  26.         self.comp_names = ["Chris", "Brianna", "Cooper", "Winston", "James", "Nicole",
  27.                             "Kevin", "Eric", "Sarah"]
  28.         self.comp_difficulty = random.randint(1, 3)
  29.         self.comp1 = random.choice(self.comp_names)
  30.         self.comp2 = random.choice(self.comp_names)
  31.         self.comp1_bank = 0
  32.         self.comp2_bank = 0
  33.         if os.path.isfile(self.player_record_file):
  34.             pass
  35.         else:
  36.             with open(self.player_record_file, "w") as file:
  37.                 self.write_bank = ("{}\n".format(self.player_bank))
  38.                 self.write_wins = ("{}\n".format(self.player_wins))
  39.                 self.write_losses = ("{}\n".format(self.player_losses))
  40.                 self.write_guesses = ("{}".format(self.player_total_guesses))
  41.                 file.write(self.write_bank)
  42.                 file.write(self.write_wins)
  43.                 file.write(self.write_losses)
  44.                 file.write(self.write_guesses)
  45.         self.GetRecords()
  46.  
  47.     def GetRecords(self):
  48.         with open(self.player_record_file, "r") as file:
  49.             self.player_record_bank = file.readline()
  50.             self.player_record_wins = file.readline()
  51.             self.player_record_losses = file.readline()
  52.             self.player_record_guesses = file.readline()
  53.             self.player_record_bank = int(self.player_record_bank)
  54.             self.player_record_wins = int(self.player_record_wins)
  55.             self.player_record_losses = int(self.player_record_losses)
  56.             self.player_record_guesses = int(self.player_record_guesses)
  57.  
  58.     def AppendRecords(self):
  59.         self.player_append_bank = self.player_record_bank + self.player_bank
  60.         self.player_append_wins = self.player_record_wins + self.player_wins
  61.         self.player_append_losses = self.player_record_losses + self.player_losses
  62.         self.player_append_guesses = self.player_record_guesses + self.player_total_guesses
  63.         with open(self.player_record_file, "w") as file:
  64.             write_new_bank = ("{}\n".format(self.player_append_bank))
  65.             write_new_wins = ("{}\n".format(self.player_append_wins))
  66.             write_new_losses = ("{}\n".format(self.player_append_losses))
  67.             write_new_guesses = ("{}".format(self.player_append_guesses))
  68.             file.write(write_new_bank)
  69.             file.write(write_new_wins)
  70.             file.write(write_new_losses)
  71.             file.write(write_new_guesses)
  72.  
  73.     def ResetRecords(self):
  74.         self.player_reset_bank = 0
  75.         self.player_reset_wins = 0
  76.         self.player_reset_losses = 0
  77.         self.player_reset_guesses = 0
  78.         with open(self.player_record_file, "w") as file:
  79.             reset_bank = ("{}\n".format(self.player_reset_bank))
  80.             reset_wins = ("{}\n".format(self.player_reset_wins))
  81.             reset_losses = ("{}\n".format(self.player_reset_losses))
  82.             reset_guesses = ("{}\n".format(self.player_reset_guesses))
  83.             file.write(reset_bank)
  84.             file.write(reset_wins)
  85.             file.write(reset_losses)
  86.             file.write(reset_guesses)
  87.  
  88. class Game:
  89.     def __init__(self):
  90.         """Set the list of letters that can be used."""
  91.         self.letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
  92.                     "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
  93.                     "u", "v", "w", "x", "y", "z"]
  94.  
  95.         """Rare Letters that shouldn't be used by AI players, depending on difficulty"""
  96.         self.rare_letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i",
  97.                     "k", "l", "m", "n", "o", "p", "r", "s", "t",
  98.                     "u", "v", "w"]
  99.  
  100.  
  101.  
  102.         """prize values"""
  103.         self.prizelist = [0, 1, 2, 3, 4, 5, 6, 50, 75, 100, 150, 200,
  104.                         225, 250, 275, 300, 325, 350, 375, 400, 450,
  105.                         500, 550, 600, 650, 700, 750, 800, 825, 850,
  106.                         875, 900, 925, 975, 1000, 1200, 1250, 1300,
  107.                         1400, 1600, 2000, 4500, 5000]
  108.  
  109.         """The phrases to use for the game."""
  110.         self.phrases_other = ["home free", "head over heels", "hello world", "public place",
  111.                     "human calculator", "work schedule", "fast cars", "surf is up",
  112.                     "python programming", "the new year", "just wing it", "good to go",
  113.                     "coin counting", "best friends", "wedding photos", "wedding venue",
  114.                     "phone system", "computer", "website", "android operating system",
  115.                     "the carriage house", "taking back sunday", "hole in one", "golfer",
  116.                     "tiger woods", "water bottle", "cell phone", "home phone", "postcard",
  117.                     "golf clubs", "laptop", "new jersey", "new york", "california", "sunny"]
  118.  
  119.         self.phrase_things = ["three iron", "iphone", "laptop", "tesla model s", "phone charger", "xbox one",
  120.                               "chocolate", "packing peanuts", "cinder block", "model car", "sketch pad",
  121.                               "street lights", "greeting card", "washing machine", "cell phone", "tissue box",
  122.                               "playing cards", "sticky notes", "video games", "credit cards", "boom box", "glow stick",
  123.                               "air freshener", "rubber duck", "candy wrapper", "mouse pad", "hair brush", "ice cube tray",
  124.                               "key chain", "sun glasses", "nail clippers", "paint brush", "picture frame", "television",
  125.                               "checkbook", "thermometer", "newspaper", "headphones", "toothpaste", "fake flowers",
  126.                               "soy sauce packet", "cookie jar", "tire swing", "scotch tape", "stop sign", "soda can"]
  127.  
  128.         self.phrases_places = ["new jersey", "new york", "california", "downtown", "the statue of liberty",
  129.                                "augusta national golf club", "cedar creek golf course", "atlantic city",
  130.                                "the carriage house", "gulf coast", "gold coast", "mexico", "caribbean",
  131.                                "caymen islands", "venezuela", "alaska", "downtown la", "texas", "canada",
  132.                                "disney world", "disney land", ]
  133.  
  134.         self.phrases_people = ["tiger woods", "christopher nelson", "brianna habe", "marilyn monroe", "bill gates",
  135.                                "charles darwin", "paul mccartney", "thomas edison", "rosa parks", "walt disney",
  136.                                "richard branson", "ernest hemingway", "john lennon", "michael jordon", "michael jackson",
  137.                                "steve jobs", "roger federer", "david beckham", "usain bolt", "anne frank", "lance armstrong",
  138.                                "sergey brin", "al gore", "george bush", "brad pitt", "taylor swift", "justin bieber",
  139.                                "katy perry", "harry potter", "jimmy carter", "elon musk", "warren buffet", "rory mcilroy"]
  140.  
  141.         self.phrase_list = [self.phrases_other, self.phrase_things, self.phrases_places, self.phrases_people]
  142.  
  143.         self.phrases = random.choice(self.phrase_list)
  144.  
  145.         """Get a winning phrase."""
  146.         self.current_phrase = random.choice(self.phrases)
  147.         """Set some default values"""
  148.         self.correct_count = 0
  149.         self.win = False
  150.         self.HideWinner()
  151.  
  152.     def GetCat(self):
  153.         if self.phrases == self.phrases_other:
  154.             self.cat = "Other"
  155.         elif self.phrases == self.phrase_things:
  156.             self.cat = "Things"
  157.         elif self.phrases == self.phrases_places:
  158.             self.cat = "Places"
  159.         else:
  160.             self.cat = "People"
  161.         return self.cat
  162.  
  163.     def HideWinner(self):
  164.         print(self.current_phrase) #For debugging only
  165.         self.current_prize = random.choice(self.prizelist)
  166.         self.correct_word = list("-" * len(self.current_phrase))
  167.         self.hide_phrase = []
  168.         """
  169.        Replace on letters, not spaces!
  170.        """
  171.         for self.char in self.current_phrase:
  172.             if self.char == " ":
  173.                 self.hide_phrase += " "
  174.             else:
  175.                 self.hide_phrase += "_"
  176.         for self.char in self.hide_phrase:
  177.             self.hidden = " ".join(self.hide_phrase)
  178.         print(self.hidden)
  179.  
  180.     def GetPrize(self):
  181.         """Get the prize, and determine if we got unlucky
  182.        Did we go bankrupt or lose a turn?"""
  183.         self.current_prize = random.choice(self.prizelist)
  184.         if self.current_prize in (0, 1, 2):
  185.              self.turn = False
  186.              self.bankrupt = True
  187.         elif self.current_prize in (3, 4, 5):
  188.              self.turn = False
  189.              self.bankrupt = False
  190.         elif self.current_prize == 6:
  191.              self.current_prize = 10000
  192.              self.turn = True
  193.              self.bankrupt = False
  194.         else:
  195.             self.bankrupt = False
  196.             self.turn = True
  197.         return self.turn, self.bankrupt, self.current_prize
  198.  
  199.     def SetBonusLetters(self):
  200.         self.guess = "r"
  201.         self.guess1 = "s"
  202.         self.guess2 = "t"
  203.         self.guess3 = "l"
  204.         self.guess4 = "e"
  205.  
  206.     def BonusRound(self, player):
  207.         for i in range(len(self.current_phrase)):
  208.             if self.guess == self.current_phrase[i]:
  209.                 self.hide_phrase[i] = self.guess
  210.                 player.player_bank += self.current_prize
  211.                 self.hidden = " ".join(self.hide_phrase)
  212.         for i in range(len(self.current_phrase)):
  213.             if self.guess1 == self.current_phrase[i]:
  214.                 self.hide_phrase[i] = self.guess1
  215.                 player.player_bank += self.current_prize
  216.                 self.hidden = " ".join(self.hide_phrase)
  217.         for i in range(len(self.current_phrase)):
  218.             if self.guess2 == self.current_phrase[i]:
  219.                 self.hide_phrase[i] = self.guess2
  220.                 player.player_bank += self.current_prize
  221.                 self.hidden = " ".join(self.hide_phrase)
  222.         for i in range(len(self.current_phrase)):
  223.             if self.guess3 == self.current_phrase[i]:
  224.                 self.hide_phrase[i] = self.guess3
  225.                 player.player_bank += self.current_prize
  226.                 self.hidden = " ".join(self.hide_phrase)
  227.         for i in range(len(self.current_phrase)):
  228.             if self.guess4 == self.current_phrase[i]:
  229.                 self.hide_phrase[i] = self.guess4
  230.                 player.player_bank += self.current_prize
  231.                 self.hidden = " ".join(self.hide_phrase)
  232.         print(self.hidden)
  233.  
  234.     def GameLogic(self, player):
  235.         self.turn = True
  236.         if self.guess == self.current_phrase:
  237.             self.win = True
  238.             self.turn = False
  239.         elif self.guess in self.current_phrase:
  240.             self.letters.remove(self.guess)
  241.             if self.guess not in self.rare_letters:
  242.                 pass
  243.             else:
  244.                 self.rare_letters.remove(self.guess)
  245.             for i in range(len(self.current_phrase)):
  246.                 if self.guess == self.current_phrase[i]:
  247.                     self.hide_phrase[i] = self.guess
  248.                     player.player_bank += self.current_prize
  249.                     self.hidden = " ".join(self.hide_phrase)
  250.                     self.correct_count += 1
  251.         else:
  252.             self.turn = False
  253.             self.letters.remove(self.guess)
  254.             if self.guess not in self.rare_letters:
  255.                 pass
  256.             else:
  257.                 self.rare_letters.remove(self.guess)
  258.         return self.turn, self.win
  259.  
  260.     def AIone(self, computer):
  261.         self.win = False
  262.         self.guess = random.choice(self.rare_letters)
  263.         self.AIdif = len(self.current_phrase)
  264.         self.winning = self.correct_count / self.AIdif * 100
  265.         if self.winning >= 70.00:
  266.             self.guess = self.current_phrase
  267.         else:
  268.             pass
  269.         print(self.guess)
  270.         if self.guess == self.current_phrase:
  271.             self.win = True
  272.             self.ai_correct = True
  273.         elif self.guess in self.current_phrase:
  274.             self.letters.remove(self.guess)
  275.             self.rare_letters.remove(self.guess)
  276.             self.ai_correct = True
  277.             for i in range(len(self.current_phrase)):
  278.                 if self.guess == self.current_phrase[i]:
  279.                     self.hide_phrase[i] = self.guess
  280.                     computer.comp1_bank += self.current_prize
  281.                     self.hidden = " ".join(self.hide_phrase)
  282.                     self.correct_count += 1
  283.         else:
  284.             self.turn = False
  285.             self.ai_correct = False
  286.             self.letters.remove(self.guess)
  287.             self.rare_letters.remove(self.guess)
  288.         return self.turn, self.ai_correct, self.win
  289.  
  290.     def AItwo(self, computer):
  291.         self.win = False
  292.         self.guess = random.choice(self.rare_letters)
  293.         self.AIdif = len(self.current_phrase)
  294.         self.winning = self.correct_count / self.AIdif * 100
  295.         if self.winning >= 90.00:
  296.             self.guess = self.current_phrase
  297.         else:
  298.             pass
  299.         print(self.guess)
  300.         if self.guess == self.current_phrase:
  301.             self.win = True
  302.             self.ai_correct = True
  303.         elif self.guess in self.current_phrase:
  304.             self.letters.remove(self.guess)
  305.             self.rare_letters.remove(self.guess)
  306.             self.ai_correct = True
  307.             for i in range(len(self.current_phrase)):
  308.                 if self.guess == self.current_phrase[i]:
  309.                     self.hide_phrase[i] = self.guess
  310.                     computer.comp2_bank += self.current_prize
  311.                     self.hidden = " ".join(self.hide_phrase)
  312.                     self.correct_count += 1
  313.         else:
  314.             self.turn = False
  315.             self.ai_correct = False
  316.             self.letters.remove(self.guess)
  317.             self.rare_letters.remove(self.guess)
  318.         return self.turn, self.ai_correct, self.win
  319.  
  320.     def UserBankrupt(self, player):
  321.         player.player_bank -= player.player_bank
  322.  
  323.     def Comp1Bankrupt(self, computer):
  324.         computer.comp1_bank -= computer.comp1_bank
  325.  
  326.     def Comp2Bankrupt(self, computer):
  327.         computer.comp2_bank -= computer.comp2_bank
  328.  
  329. class GUI:
  330.     def __init__(self):
  331.         self.root = Tk()
  332.         self.w, self.h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
  333.         self.root.geometry("{}x{}".format(self.w, self.h))
  334.         self.root.title("Wheel of Chance!")
  335.         self.topmenu = Menu(self.root)
  336.         self.root.config(menu=self.topmenu)
  337.         self.topmenu.add_command(label="New Game", state="disabled", command=lambda: self.NewGame())
  338.         self.topmenu.add_command(label="Records", state="disabled", command=lambda: self.DisplayRecord())
  339.         self.topmenu.add_command(label="Reset Records", state="disabled", command=lambda: self.ResetRecord())
  340.         self.topmenu.add_command(label="Quit", command=lambda: self.Quit())
  341.         self.new_game = Button(self.root, text="Start New Game!", font="bold", state="disabled", command=lambda: self.NewGame())
  342.         self.quit_game = Button(self.root, text="Save and Quit!", font="bold", state="disabled", command=lambda: self.Quit())
  343.         self.new_player = Entry(self.root)
  344.         self.info = Label(self.root, text="What is your name: ", font="bold")
  345.         self.submit = Button(self.root, text="Continue!", font="bold", command=lambda: self.GetPlayer())
  346.         self.directions = Button(self.root, text="Learn to Play!", font="bold", command=lambda: self.Directions())
  347.         self.info.grid(row=1, column=1, padx=5, pady=5)
  348.         self.new_player.grid(row=1, column=2, padx=5, pady=5)
  349.         self.submit.grid(row=1, column=3, padx=5, pady=5)
  350.         self.new_game.grid(row=2, column=1, padx=5, pady=5)
  351.         self.quit_game.grid(row=2, column=2, padx=5, pady=5)
  352.         self.directions.grid(row=2, column=3, padx=5, pady=5)
  353.         self.root.mainloop()
  354.  
  355.     def Directions(self):
  356.         directions = messagebox.showinfo("Learn to Play!", "This game is very simple. It is much like\n"
  357.                                                            "Wheel of Fortune. There are 4 catogories\n"
  358.                                                            "'People', 'Places', 'Things', and 'Other'.\n"
  359.                                                            "Your will play against two computer players.\n"
  360.                                                            "You will spin the wheel for a prize, and guess a letter.\n"
  361.                                                            "You also have the option to solve the puzzle anytime during\n"
  362.                                                            "your turn. If during any game session you reach $15,000 dollars\n"
  363.                                                            "and win the current puzzle, you will be invite to play the bonus\n"
  364.                                                            "round! You can only solve the puzzle on your turn. The computer\n"
  365.                                                            "will also guess letters and solve the puzzle if possible!\n"
  366.                                                            "Best of luck!")
  367.  
  368.     def DisplayRecord(self):
  369.         self.user.GetRecords()
  370.         self.recordspopup = Toplevel()
  371.         self.recordspopup.focus_set()
  372.         self.recordspopup.geometry("350x200")
  373.         self.displayrecords = Text(self.recordspopup)
  374.         self.displayrecords.insert(1.0, "{} Here are your liftime records!\n"
  375.                                "Total Money in the bank: ${}\n"
  376.                                "Total wins: {}\n"
  377.                                "Total losses: {}\n"
  378.                                "Lifetime guesses: {}".format(self.user.name, self.user.player_record_bank,
  379.                                                              self.user.player_record_wins,
  380.                                                              self.user.player_record_losses,
  381.                                                             self.user.player_record_guesses), END)
  382.         self.displayrecords.pack()
  383.  
  384.     def ResetRecord(self):
  385.         self.confirmreset = messagebox.askyesno("Confirm?",
  386.                                                 "This will reset all your lifetime records for player {}!\n"
  387.                                                             "This action is not reversible!\n"
  388.                                                             "Do you still wish to reset records?".format(self.user.name))
  389.         if self.confirmreset is True:
  390.             self.user.ResetRecords()
  391.             self.truereset = messagebox.showinfo("Records Reset!", "Your records have been reset!")
  392.         else:
  393.             self.truereset = messagebox.showinfo("Reset Cancelled", "The reset has been cancelled!")
  394.  
  395.     def GetPlayer(self):
  396.         self.temp = self.new_player.get()
  397.         self.user = Player(self.temp)
  398.         self.new_player.destroy()
  399.         self.submit.destroy()
  400.         self.info.destroy()
  401.         self.topmenu.entryconfig("New Game", state="normal")
  402.         self.topmenu.entryconfig("Records", state="normal")
  403.         self.topmenu.entryconfig("Reset Records", state="normal")
  404.         self.new_game.config(state="normal")
  405.         self.quit_game.config(state="normal")
  406.         self.info = Label(self.root, font="bold", text="{} best of luck!".format(self.user.name))
  407.         self.info.grid(row=1, column=1)
  408.         self.root.update()
  409.  
  410.     def NewGame(self):
  411.         self.game = Game()
  412.         self.root.destroy()
  413.         self.GameScreen()
  414.  
  415.     def GameScreen(self):
  416.         self.screen = Tk()
  417.         self.screen.title("Good Luck!")
  418.         self.screen.geometry("{}x{}".format(self.w, self.h))
  419.         self.font = ("Verdana", 40, "bold")
  420.         self.game.GetCat()
  421.         self.cat_label = Label(self.screen, text=self.game.cat)
  422.         self.cat_label.config(font=self.font)
  423.         self.word = Label(self.screen, text=self.game.hidden)
  424.         self.word.config(font=self.font)
  425.         self.cat_label.pack(padx=5, pady=5)
  426.         self.word.pack(padx=5, pady=5)
  427.         self.wheel = Button(self.screen, text="Spin the wheel!", font="bold", command=lambda: self.GetPrize())
  428.         self.solve = Button(self.screen, text="Solve!", command=lambda: self.Solve(), font="bold")
  429.         self.solve.pack(padx=5, pady=5)
  430.         self.wheel.pack(padx=5, pady=5)
  431.         self.bank1 = Label(self.screen, font="bold", text="{} You have ${}.00!".format(self.user.name, self.user.player_bank))
  432.         self.bank2 = Label(self.screen, font="bold", text="{} has ${}.00!".format(self.user.comp1, self.user.comp1_bank))
  433.         self.bank3 = Label(self.screen, font="bold", text="{} has ${}.00!".format(self.user.comp2, self.user.comp2_bank))
  434.         self.bank1.pack(padx=5, pady=5)
  435.         self.bank2.pack(padx=5, pady=5)
  436.         self.bank3.pack(padx=5, pady=5)
  437.         self.screen.mainloop()
  438.  
  439.     def GetPrize(self):
  440.         self.game.GetPrize()
  441.         self.wheel.config(state="disabled")
  442.         self.solve = Button(self.screen, text="Solve!", command=lambda: self.Solve(), font="bold", padx=5, pady=5)
  443.         if self.game.current_prize in (0, 1, 2):
  444.             self.prize_info = Label(self.screen, text="Bankrupt and Lose a Turn!")
  445.             self.prize_info.config(font=self.font)
  446.             self.game.UserBankrupt(self.user)
  447.         elif self.game.current_prize in (3, 4, 5):
  448.             self.prize_info = Label(self.screen, text="Lose a turn!")
  449.             self.prize_info.config(font=self.font)
  450.         else:
  451.             self.prize_info = Label(self.screen, text="${}.00".format(self.game.current_prize))
  452.             self.prize_info.config(font=self.font)
  453.         self.prize_info.pack()
  454.         if self.game.turn is True:
  455.             self.guess_button = Button(self.screen, text="Make a Guess!", font="bold", command=lambda: self.MakeGuess())
  456.         else:
  457.             self.guess_button = Button(self.screen, text="Sorry!\n"
  458.                                                          "Next Player!", font="bold", command=lambda: self.SkipGuess())
  459.         self.guess_button.pack()
  460.  
  461.         self.screen.update_idletasks()
  462.  
  463.     def SkipGuess(self):
  464.         self.screen.destroy()
  465.         self.AIOneTurn()
  466.  
  467.     def Solve(self):
  468.         self.solve.config(state="disabled")
  469.         self.guess_window = Tk()
  470.         self.guess_window.geometry("700x200")
  471.         self.guess_window.title("Solve the puzzle!")
  472.         self.info_guess = Label(self.guess_window, text="Solve the puzzle:")
  473.         self.solve_guess = Entry(self.guess_window)
  474.         self.user_submit = Button(self.guess_window, text="Guess!", command=lambda: self.PassSolve())
  475.         self.info_guess.pack(padx=5, pady=5)
  476.         self.solve_guess.pack(padx=5, pady=5)
  477.         self.user_submit.pack(padx=5, pady=5)
  478.  
  479.     def PassSolve(self):
  480.         self.user.player_total_guesses += 1
  481.         self.game.guess = self.solve_guess.get().lower()
  482.         if self.game.guess == self.game.current_phrase:
  483.             self.game.GameLogic(self.user)
  484.         if self.game.win is True:
  485.             self.Winner1()
  486.         else:
  487.             incorrect = messagebox.showinfo("Incorrect!", "Sorry, that is not right! On to the next player.")
  488.             self.screen.destroy()
  489.             self.guess_window.destroy()
  490.             self.AIOneTurn()
  491.  
  492.     def MakeGuess(self):
  493.         self.user.player_total_guesses += 1
  494.         self.guess_button.config(state="disabled")
  495.         self.guess_window = Tk()
  496.         self.guess_window.geometry("700x200")
  497.         self.guess_window.title("Make a Guess!")
  498.         self.font_letters = ("Verdana", 10, "bold")
  499.         self.avil_letter = Label(self.guess_window, text="Letters Available:\n"
  500.                                                    "{}".format(self.game.letters))
  501.         self.avil_letter.config(font=self.font_letters)
  502.         self.info_guess = Label(self.guess_window, text="Type a letter to make a guess:")
  503.         self.user_guess = Entry(self.guess_window)
  504.         self.user_submit = Button(self.guess_window, text="Guess!", command=lambda: self.PassUserGuess())
  505.         self.rando_submit = Button(self.guess_window, text="Random Letter", command=lambda: self.RandoLetter())
  506.         self.rando_submit.pack(padx=5, pady=5)
  507.         self.info_guess.pack(padx=5, pady=5)
  508.         self.user_guess.pack(padx=5, pady=5)
  509.         self.user_submit.pack(padx=5, pady=5)
  510.         self.avil_letter.pack(padx=5, pady=5)
  511.  
  512.     def RandoLetter(self):
  513.         self.rando = random.choice(self.game.letters)
  514.         self.user_guess.delete(0, END)
  515.         self.user_guess.insert(0, self.rando)
  516.  
  517.     def PassUserGuess(self):
  518.         self.user.player_total_guesses += 1
  519.         self.game.guess = self.user_guess.get()
  520.         self.game.guess.lower()
  521.         if self.game.guess not in self.game.letters:
  522.             pop = messagebox.showinfo("Uh oh!", "Sorry that letter has already\n"
  523.                                                 "been guessed! Lets try not to break\n"
  524.                                                 "the program please!")
  525.             self.guess_window.focus_force()
  526.         else:
  527.             self.game.GameLogic(self.user)
  528.             if self.game.win is True:
  529.                 self.Winner1()
  530.             while self.game.turn is True:
  531.                 self.message = messagebox.showinfo("Correct!", "Nice job! You gussed correctly.\n"
  532.                                                                "Click 'Ok' for next spin!")
  533.                 self.screen.destroy()
  534.                 self.guess_window.destroy()
  535.                 self.GameScreen()
  536.             if self.game.turn is False and self.game.win is False:
  537.                 self.AI = messagebox.showinfo("Incorrect!", "Sorry, that letter is not correct.\n"
  538.                                                             " It is now the computers turn!")
  539.                 self.screen.destroy()
  540.                 self.guess_window.destroy()
  541.             if self.game.win is False:
  542.                 self.AIOneTurn()
  543.  
  544.     def AIOneTurn(self):
  545.         self.ai_window = Tk()
  546.         self.ai_window.geometry("{}x{}".format(self.w, self.h))
  547.         self.ai_window.title("{}'s Turn!".format(self.user.comp1))
  548.         self.cat_label1 = Label(self.ai_window, text=self.game.cat)
  549.         self.cat_label1.config(font=self.font)
  550.         self.word1 = Label(self.ai_window, text=self.game.hidden)
  551.         self.word1.config(font=self.font)
  552.         self.cat_label1.pack()
  553.         self.word1.pack()
  554.         self.ai_bank1 = Label(self.ai_window, font="bold", text="{} You have ${}.00!".format(self.user.name, self.user.player_bank))
  555.         self.ai_bank2 = Label(self.ai_window, font="bold", text="{} has ${}.00!".format(self.user.comp1, self.user.comp1_bank))
  556.         self.ai_bank3 = Label(self.ai_window, font="bold", text="{} has ${}.00!".format(self.user.comp2, self.user.comp2_bank))
  557.         self.ai_bank1.pack(padx=5, pady=5)
  558.         self.ai_bank2.pack(padx=5, pady=5)
  559.         self.ai_bank3.pack(padx=5, pady=5)
  560.         spinning = messagebox.showinfo("Wheel Spinning....", "{} has spun the wheel...\n"
  561.                                                              "\n"
  562.                                                              "\n"
  563.                                                              "Click to continue!".format(self.user.comp1))
  564.         self.game.GetPrize()
  565.         if self.game.current_prize in (0, 1, 2):
  566.             skip = True
  567.             self.ai_prize = messagebox.showinfo("Prize!", "{} went Bankrupt and Lost this turn!".format(self.user.comp1))
  568.             self.game.Comp1Bankrupt(self.user)
  569.         elif self.game.current_prize in (3, 4, 5):
  570.             skip = True
  571.             self.ai_prize = messagebox.showinfo("Prize!", "{} lost this turn!".format(self.user.comp1))
  572.             """Add code to skip turn"""
  573.         else:
  574.             skip = False
  575.             self.ai_prize = messagebox.showinfo("Prize!", "The current spin for {} landed on ${}.00!".format(self.user.comp1, self.game.current_prize))
  576.             self.game.AIone(self.user)
  577.         if self.game.win is True:
  578.             skip = True
  579.             self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp1), "{} solved the puzzle with, '{}'!".format(self.user.comp1, self.game.guess))
  580.             self.Winner2()
  581.         if skip is False:
  582.             if self.game.ai_correct is True:
  583.                 self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp1), "{} correctly guessed '{}'!".format(self.user.comp1, self.game.guess))
  584.             if self.game.ai_correct is False:
  585.                 self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp1), "{} guessed '{}' incorrectly!".format(self.user.comp1, self.game.guess))
  586.             while self.game.turn is True:
  587.                 self.ai_window.destroy()
  588.                 self.AIOneTurn()
  589.         if self.game.win is False:
  590.             self.ai_window.destroy()
  591.             self.AITwoTurn()
  592.  
  593.     def AITwoTurn(self):
  594.         self.ai_window1 = Tk()
  595.         self.ai_window1.geometry("{}x{}".format(self.w, self.h))
  596.         self.ai_window1.title("{}'s Turn!".format(self.user.comp2))
  597.         self.cat_label2 = Label(self.ai_window1, text=self.game.cat)
  598.         self.cat_label2.config(font=self.font)
  599.         self.word2 = Label(self.ai_window1, text=self.game.hidden)
  600.         self.word2.config(font=self.font)
  601.         self.cat_label2.pack()
  602.         self.word2.pack()
  603.         self.ai2_bank1 = Label(self.ai_window1, font="bold", text="{} You have ${}.00!".format(self.user.name, self.user.player_bank))
  604.         self.ai2_bank2 = Label(self.ai_window1, font="bold", text="{} has ${}.00!".format(self.user.comp1, self.user.comp1_bank))
  605.         self.ai2_bank3 = Label(self.ai_window1, font="bold", text="{} has ${}.00!".format(self.user.comp2, self.user.comp2_bank))
  606.         self.ai2_bank1.pack(padx=5, pady=5)
  607.         self.ai2_bank2.pack(padx=5, pady=5)
  608.         self.ai2_bank3.pack(padx=5, pady=5)
  609.         spinning = messagebox.showinfo("Wheel Spinning....", "{} has spun the wheel...\n"
  610.                                                              "\n"
  611.                                                              "\n"
  612.                                                              "Click to continue!".format(self.user.comp2))
  613.         self.game.GetPrize()
  614.         if self.game.current_prize in (0, 1, 2):
  615.             skip = True
  616.             self.ai_prize = messagebox.showinfo("Prize!", "{} went Bankrupt and Lost this turn!".format(self.user.comp2))
  617.             self.game.Comp2Bankrupt(self.user)
  618.         elif self.game.current_prize in (3, 4, 5):
  619.             skip = True
  620.             self.ai_prize = messagebox.showinfo("Prize!", "{} lost this turn!".format(self.user.comp2))
  621.             """Add code to skip turn"""
  622.         else:
  623.             skip = False
  624.             self.ai_prize = messagebox.showinfo("Prize!", "The current spin for {} landed on ${}.00!".format(self.user.comp2, self.game.current_prize))
  625.             self.game.AItwo(self.user)
  626.         if self.game.win is True:
  627.             skip = True
  628.             self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp2), "{} solved the puzzle with, '{}'!".format(self.user.comp2, self.game.guess))
  629.             self.Winner3()
  630.         if skip is False:
  631.             if self.game.ai_correct is True:
  632.                 self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp2), "{} correctly guessed '{}'!".format(self.user.comp2, self.game.guess))
  633.             if self.game.ai_correct is False:
  634.                 self.ai_guess = messagebox.showinfo("{} Guess!".format(self.user.comp2), "{} guessed '{}' incorrectly!".format(self.user.comp2, self.game.guess))
  635.             while self.game.turn is True:
  636.                 self.ai_window1.destroy()
  637.                 self.AITwoTurn()
  638.         if self.game.win is False:
  639.             self.ai_window1.destroy()
  640.             self.GameScreen()
  641.  
  642.     def Quit(self):
  643.         self.user.AppendRecords()
  644.         goodbye = messagebox.showinfo("Good Bye!", "Hope you had fun!")
  645.         raise SystemExit
  646.  
  647.     def PlayAgain1(self):
  648.         self.user.AppendRecords()
  649.         self.game = Game()
  650.         self.winner1.destroy()
  651.         self.GameScreen()
  652.  
  653.     def PlayAgain2(self):
  654.         self.user.AppendRecords()
  655.         self.game = Game()
  656.         self.winner2.destroy()
  657.         self.GameScreen()
  658.  
  659.     def PlayAgain3(self):
  660.         self.user.AppendRecords()
  661.         self.game = Game()
  662.         self.winner3.destroy()
  663.         self.GameScreen()
  664.  
  665.     def PlayBonus(self):
  666.         self.bonus = Game()
  667.         self.bonus.SetBonusLetters()
  668.         self.bonus.BonusRound(self.user)
  669.         self.BonusGameScreen()
  670.  
  671.     def Winner1(self):
  672.         self.screen.destroy()
  673.         self.guess_window.destroy()
  674.         self.user.player_wins += 1
  675.         if self.user.player_bank >= 15000:
  676.             self.winner1 = Tk()
  677.             self.winner1.geometry("{}x{}".format(self.w, self.h))
  678.             self.winner1.title("Congratulations {}!".format(self.user.name))
  679.             winner1 = Label(self.winner1, text="Great job on solving the puzzle!", font="bold")
  680.             winner2 = Label(self.winner1, text="Your total winnings: ${}.00!".format(self.user.player_bank), font="bold")
  681.             winner3 = Label(self.winner1, text="You qualified for the bonus round!".format(self.user.player_bank), font="bold")
  682.             self.bonus_round = Button(self.winner1, text="Play Bonus Round!", font="bold", command=lambda: self.PlayBonus())
  683.             self.play_agin = Button(self.winner1, text="Play Again!", font="bold", command=lambda: self.PlayAgain1())
  684.             self.quit = Button(self.winner1, text="No Thanks!", font="bold", command=lambda: self.Quit())
  685.             winner3.pack()
  686.             winner1.pack()
  687.             winner2.pack()
  688.             self.bonus_round.pack(padx=5, pady=5)
  689.             self.play_agin.pack(padx=5, pady=5)
  690.             self.quit.pack(padx=5, pady=5)
  691.             self.word = Label(self.winner1, text=self.game.current_phrase)
  692.             self.word.config(font=self.font)
  693.             self.word.pack()
  694.         else:
  695.             self.winner1 = Tk()
  696.             self.winner1.geometry("{}x{}".format(self.w, self.h))
  697.             self.winner1.title("Congratulations {}!".format(self.user.name))
  698.             winner1 = Label(self.winner1, text="Great job on solving the puzzle!", font="bold")
  699.             winner2 = Label(self.winner1, text="Your total winnings: ${}.00!".format(self.user.player_bank), font="bold")
  700.             self.play_agin = Button(self.winner1, text="Play Again!", font="bold", command=lambda: self.PlayAgain1())
  701.             self.quit = Button(self.winner1, text="No Thanks!", font="bold", command=lambda: self.Quit())
  702.             winner1.pack()
  703.             winner2.pack()
  704.             self.play_agin.pack(padx=5, pady=5)
  705.             self.quit.pack(padx=5, pady=5)
  706.             self.word = Label(self.winner1, text=self.game.current_phrase)
  707.             self.word.config(font=self.font)
  708.             self.word.pack()
  709.  
  710.     def Winner2(self):
  711.         self.ai_window.destroy()
  712.         self.user.player_losses += 1
  713.         self.winner2 = Tk()
  714.         self.winner2.geometry("{}x{}".format(self.w, self.h))
  715.         self.winner2.title("Congratulations {}!".format(self.user.comp1))
  716.         self.winner2_info = Label(self.winner2, text="{} maybe you will win next time!".format(self.user.name), font="bold")
  717.         self.winner3_info = Label(self.winner2, text="Hope you had fun!", font="bold")
  718.         self.play_agin = Button(self.winner2, text="Play Again!", font="bold", command=lambda: self.PlayAgain2())
  719.         self.quit = Button(self.winner2, text="No Thanks!", font="bold", command=lambda: self.Quit())
  720.         self.winner2_info.pack()
  721.         self.winner3_info.pack()
  722.         self.play_agin.pack(padx=5, pady=5)
  723.         self.quit.pack(padx=5, pady=5)
  724.         self.word = Label(self.winner2, text=self.game.current_phrase)
  725.         self.word.config(font=self.font)
  726.         self.word.pack()
  727.  
  728.     def Winner3(self):
  729.         self.ai_window1.destroy()
  730.         self.user.player_losses += 1
  731.         self.winner3 = Tk()
  732.         self.winner3.geometry("{}x{}".format(self.w, self.h))
  733.         self.winner3.title("Congratulations {}!".format(self.user.comp2))
  734.         self.winner4_info = Label(self.winner3, text="{} maybe you will win next time!".format(self.user.name), font="bold")
  735.         self.winner5_info = Label(self.winner3, text="Hope you had fun!", font="bold")
  736.         self.play_agin = Button(self.winner3, text="Play Again!", font="bold", command=lambda: self.PlayAgain3())
  737.         self.quit = Button(self.winner3, text="No Thanks!", font="bold", command=lambda: self.Quit())
  738.         self.winner4_info.pack()
  739.         self.winner5_info.pack()
  740.         self.play_agin.pack(padx=5, pady=5)
  741.         self.quit.pack(padx=5, pady=5)
  742.         self.word = Label(self.winner3, text=self.game.current_phrase)
  743.         self.word.config(font=self.font)
  744.         self.word.pack()
  745.  
  746.     def BonusGameScreen(self):
  747.         self.winner1.destroy()
  748.         self.screen = Tk()
  749.         self.screen.title("Good Luck!")
  750.         self.screen.geometry("{}x{}".format(self.w, self.h))
  751.         self.font = ("Verdana", 40, "bold")
  752.         self.bonus.GetCat()
  753.         self.cat_label = Label(self.screen, text=self.bonus.cat)
  754.         self.cat_label.config(font=self.font)
  755.         self.word = Label(self.screen, text=self.bonus.hidden)
  756.         self.word.config(font=self.font)
  757.         self.cat_label.pack(padx=5, pady=5)
  758.         self.word.pack(padx=5, pady=5)
  759.         self.solve = Button(self.screen, text="Solve!", command=lambda: self.Solve(), font="bold")
  760.         self.solve.pack(padx=5, pady=5)
  761.         self.given_letters = Label(self.screen, text="Letters Given: 'R', 'S', 'T', 'L', 'E'.", font="bold")
  762.         self.given_letters.pack()
  763.         self.user_guess_bonus = Entry(self.screen)
  764.         self.user_guess_bonus1 = Entry(self.screen)
  765.         self.user_guess_bonus2 = Entry(self.screen)
  766.         self.user_guess_bonus3 = Entry(self.screen)
  767.         self.user_guess_bonus4 = Entry(self.screen)
  768.         self.submit = Button(self.screen, text="Submit Guesses!", font="bold", command=lambda: self.PassBonus())
  769.         self.bank1 = Label(self.screen, font="bold", text="{} You have ${}.00!".format(self.user.name, self.user.player_bank))
  770.         self.user_guess_bonus.pack()
  771.         self.user_guess_bonus1.pack()
  772.         self.user_guess_bonus2.pack()
  773.         self.user_guess_bonus3.pack()
  774.         self.user_guess_bonus4.pack()
  775.         self.bank1.pack(padx=5, pady=5)
  776.         self.submit.pack()
  777.         self.screen.mainloop()
  778.  
  779.     def PassBonus(self):
  780.         self.bonus.guess = self.user_guess_bonus.get()
  781.         self.bonus.guess1 = self.user_guess_bonus1.get()
  782.         self.bonus.guess2 = self.user_guess_bonus2.get()
  783.         self.bonus.guess3 = self.user_guess_bonus3.get()
  784.         self.bonus.guess4 = self.user_guess_bonus4.get()
  785.         self.submit.config(state="disabled")
  786.         self.bonus.BonusRound(self.user)
  787.         self.word.destroy()
  788.         self.cat_label.destroy()
  789.         self.submit.destroy()
  790.         self.bank1.destroy()
  791.         self.solve.destroy()
  792.         self.user_guess_bonus.destroy()
  793.         self.user_guess_bonus1.destroy()
  794.         self.user_guess_bonus2.destroy()
  795.         self.user_guess_bonus3.destroy()
  796.         self.user_guess_bonus4.destroy()
  797.         self.word = Label(self.screen, text=self.bonus.hidden)
  798.         self.cat_label = Label(self.screen, text=self.bonus.cat)
  799.         self.bank1 = Label(self.screen, font="bold", text="{} You have ${}.00!".format(self.user.name, self.user.player_bank))
  800.         self.solve = Button(self.screen, text="Solve!", command=lambda: self.BonusSolveGuess(), font="bold")
  801.         self.word.config(font=self.font)
  802.         self.cat_label.config(font=self.font)
  803.         self.cat_label.pack()
  804.         self.word.pack()
  805.         self.time = 90
  806.         self.timerlabel = Label(self.screen, text=self.time, font="bold")
  807.         self.timefont = ("Verdana", 25, "bold")
  808.         self.timerlabel.config(font=self.timefont)
  809.         self.timerlabel.pack()
  810.         self.solve.pack()
  811.         self.bank1.pack()
  812.  
  813.         self.BonusTimer()
  814.         self.screen.update_idletasks()
  815.  
  816.     def BonusTimer(self):
  817.         self.time -= 1
  818.         if self.time == 0:
  819.             self.BonusLoser()
  820.         elif self.time <= 15 and self.time > 0:
  821.             self.bonustimer = Toplevel(self.screen)
  822.             self.bonustimer.withdraw()
  823.             self.timerlabel.destroy()
  824.             self.timerlabel = Label(self.screen, text=self.time, font="bold", fg="red")
  825.             self.timefont = ("Verdana", 25, "bold")
  826.             self.timerlabel.config(font=self.timefont)
  827.             self.timerlabel.pack()
  828.             self.bonustimer.after(1000, self.BonusTimer)
  829.         else:
  830.             self.bonustimer = Toplevel(self.screen)
  831.             self.bonustimer.withdraw()
  832.             self.timerlabel.destroy()
  833.             self.timerlabel = Label(self.screen, text=self.time, font="bold")
  834.             self.timefont = ("Verdana", 25, "bold")
  835.             self.timerlabel.config(font=self.timefont)
  836.             self.timerlabel.pack()
  837.             self.bonustimer.after(1000, self.BonusTimer)
  838.  
  839.     def BonusSolveGuess(self):
  840.         self.screen1 = Tk()
  841.         self.screen1.title("Good Luck!")
  842.         self.screen1.geometry("700x200")
  843.         self.font = ("Verdana", 40, "bold")
  844.         self.solvelabel = Label(self.screen1, text="Solve the puzzle!", font="bold")
  845.         self.solve = Button(self.screen1, text="Solve!", command=lambda: self.BonusSolve(), font="bold")
  846.         self.solvelabel.pack(padx=5, pady=5)
  847.         self.user_guess_bonus_1 = Entry(self.screen1)
  848.         self.user_guess_bonus_1.pack(padx=5, pady=5)
  849.         self.solve.pack(padx=5, pady=5)
  850.  
  851.     def BonusSolve(self):
  852.         user_bonus = self.user_guess_bonus_1.get()
  853.         if user_bonus.lower() == self.bonus.current_phrase:
  854.  
  855.             winner = messagebox.showinfo("Congradulations!", "Nice Job! You won the bonus round!")
  856.             self.bonustimer.destroy()
  857.             self.screen1.destroy()
  858.             self.screen.destroy()
  859.             self.BonusWinner()
  860.         else:
  861.             loser = messagebox.showinfo("Incorrect!", "Click ok to continue guessing!")
  862.             self.screen1.destroy()
  863.  
  864.     def BonusWinner(self):
  865.         self.user.player_wins += 1
  866.         self.user.AppendRecords()
  867.         self.winner1 = Tk()
  868.         self.winner1.geometry("{}x{}".format(self.w, self.h))
  869.         self.winner1.title("Congratulations {}!".format(self.user.name))
  870.         winner1 = Label(self.winner1, text="Great job on solving the puzzle!", font="bold")
  871.         winner2 = Label(self.winner1, text="Your total winnings: ${}.00!".format(self.user.player_bank), font="bold")
  872.         self.play_agin = Button(self.winner1, text="Play Again!", font="bold", command=lambda: self.PlayAgain1())
  873.         self.quit = Button(self.winner1, text="No Thanks!", font="bold", command=lambda: self.Quit())
  874.         winner1.pack()
  875.         winner2.pack()
  876.         self.play_agin.pack(padx=5, pady=5)
  877.         self.quit.pack(padx=5, pady=5)
  878.         self.word = Label(self.winner1, text=self.bonus.current_phrase)
  879.         self.word.config(font=self.font)
  880.         self.word.pack()
  881.         self.user.player_bank -= self.user.player_bank
  882.  
  883.     def BonusLoser(self):
  884.         self.screen1.destroy()
  885.         self.winner1 = Tk()
  886.         self.winner1.geometry("{}x{}".format(self.w, self.h))
  887.         self.winner1.title("{} you lost!".format(self.user.name))
  888.         winner1 = Label(self.winner1, text="Maybe you will get it next time!", font="bold")
  889.         winner2 = Label(self.winner1, text="Your total winnings: ${}.00!".format(self.user.player_bank), font="bold")
  890.         self.play_agin = Button(self.winner1, text="Play Again!", font="bold", command=lambda: self.PlayAgain1())
  891.         self.quit = Button(self.winner1, text="No Thanks!", font="bold", command=lambda: self.Quit())
  892.         winner1.pack()
  893.         winner2.pack()
  894.         self.play_agin.pack(padx=5, pady=5)
  895.         self.quit.pack(padx=5, pady=5)
  896.         self.word = Label(self.winner1, text=self.bonus.current_phrase)
  897.         self.word.config(font=self.font)
  898.         self.word.pack()
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907. start = GUI()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement