Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import sys
- import random
- import data
- class GameInstance():
- def __init__(self, bad_guesses, good_guesses, check, wordindex, secret_word, score, name):
- #Hardcoded settings:
- self.max_guesses = 7
- self.bad_guesses = bad_guesses
- self.good_guesses = good_guesses
- self.check = check
- self.wordindex = wordindex
- self.secret_word = secret_word
- self.score = score
- self.name = name
- self.comment = data.comments[wordindex]
- def can_guess(self):
- return len(self.bad_guesses) <= self.max_guesses
- def make_guessed_line(self):
- result = ""
- for letter in self.secret_word:
- if letter in self.good_guesses:
- result += letter
- else:
- result += "_"
- result += " "
- return result
- def make_bad_guesses_line(self):
- result = ""
- for letter in self.bad_guesses:
- result += letter + " "
- return result
- def has_guessed(self, letter):
- return letter in self.bad_guesses or letter in self.good_guesses
- def has_won(self):
- return len(self.good_guesses) == len(self.check)
- def guess(self, letter):
- if letter in self.secret_word:
- self.good_guesses.append(letter)
- self.score += 10
- return True
- else:
- self.bad_guesses.append(letter)
- self.score -= 20
- return False
- def make_full_guess(self, word):
- if word == self.secret_word:
- gscore = len(self.check) - len(self.good_guesses)
- gscore *= 30
- self.score += gscore
- return True
- else:
- self.score -= 50
- return False
- class Game():
- def __init__(self):
- self.sboard = []
- def cls(self):
- if os.name == 'nt':
- os.system('cls')
- else:
- os.system('clear')
- def instructions(self):
- self.cls()
- print(data.instruc1)
- cont = input("Press enter to continue to page 2, 'Scoring and Scoreboard': ").lower()
- self.cls()
- print(data.instruc2)
- while True:
- end = input("""Type 'menu' to return to the main menu, 'quit' to exit the game,
- or 'back' to go back to the previous page: """).lower()
- if end == "menu":
- self.introduction()
- elif end == "quit":
- self.cls()
- sys.exit()
- elif end == "back":
- self.instructions()
- def introduction(self):
- print(data.intro1)
- while True:
- start = input("Press enter to start: ").lower()
- if start == "quit":
- self.cls()
- sys.exit()
- elif start == "instructions":
- self.instructions()
- elif start == "menu":
- continue
- elif start == "guess":
- print("\nYou cannot guess yet!")
- continue
- elif start == "score":
- self.scoreboard()
- else:
- self.setupgame()
- def scoreboard(self):
- self.cls()
- self.sboard.sort()
- print("\n\n\nSCOREBOARD\n\n")
- try:
- print("1st PLACE: ", self.sboard[0], "\n")
- except IndexError:
- print("1st PLACE: \n")
- num1 = 2
- num2 = 1
- while num1 <= 9:
- try:
- print("{} > ".format(num1), self.sboard[num2])
- except IndexError:
- print("{} > ".format(num1))
- num1 += 1
- num2 += 1
- try:
- print("10 > ", self.sboard[9])
- except IndexError:
- print("10 > ")
- print("\n\n\n(Note: Type 'wipe' to refresh the scoreboard!)\n")
- while True:
- back = input("Type 'menu' to go back to the main menu, or 'quit' to exit the game: ").lower()
- if back == "menu":
- self.introduction()
- elif back == "quit":
- self.cls()
- sys.exit()
- elif back == "wipe":
- self.sboard = []
- self.scoreboard()
- def setupgame(self):
- self.cls()
- name = input("\n\n\nEnter your name (for the scoreboard): ")
- if name.lower() == "menu":
- self.introduction()
- elif name.lower() == "quit":
- self.cls()
- sys.exit()
- self.cls()
- secret_word = random.choice(data.words)
- wordindex = data.words.index("{}".format(secret_word))
- bad_guesses = []
- good_guesses = []
- check = []
- score = 0
- for letters in secret_word:
- if letters not in check:
- check.append(letters)
- else:
- continue
- print('\n\n')
- game_session = GameInstance(bad_guesses, good_guesses, check, wordindex, secret_word, score, name)
- self.main(game_session)
- def main(self, gamesession):
- print('\n\n')
- while gamesession.can_guess():
- print("\nClue:\n")
- print(gamesession.comment)
- print('\n')
- print(gamesession.make_guessed_line())
- print("\n\nYour score is: {}".format(gamesession.score))
- print("\nStrikes: {}/7\n".format(len(gamesession.bad_guesses)))
- print("Wrong Guesses: ")
- print(gamesession.make_bad_guesses_line())
- print("\n\n\nOptions: 'guess' 'menu' 'quit'\n")
- self.guess(gamesession)
- else:
- self.cls()
- print("\n\n\nYou didn't get it! LOSER!!! My word was '{}'.".format(gamesession.secret_word))
- print("\n\nYour score was: {}!\n".format(gamesession.score))
- result = gamesession.name + " " + str(gamesession.score)
- self.sboard.append(result)
- self.playagain()
- def guess(self, gamesession):
- userguess = input("Guess a letter: ").lower()
- self.cls()
- if userguess == "quit":
- sys.exit()
- elif userguess == "menu":
- self.introduction()
- elif userguess == "guess":
- self.fullguess(gamesession)
- return
- elif len(userguess) != 1:
- print("\n\nYou must guess a (single) letter!")
- return
- elif gamesession.has_guessed(userguess):
- print("\n\nYou've already guessed that letter!")
- return
- elif not userguess.isalpha():
- print("\n\nYou can only guess letters!")
- return
- if gamesession.guess(userguess):
- print("\n\nGood guess!")
- if gamesession.has_won():
- self.cls()
- print("\n\n\nYOU WIN!!! The word was '{}'.\n".format(gamesession.secret_word))
- print("\n\nYour score was: {}!\n".format(gamesession.score))
- result = gamesession.name + " " + str(gamesession.score)
- self.sboard.append(result)
- self.playagain()
- return
- else:
- bad1 = int(len(gamesession.bad_guesses))
- if bad1 == 7:
- print("\n\nNext incorrect answer means that you lose!!")
- else:
- print("\n\nUnlucky! You have used {} of your 7 wrong guesses!".format(bad1))
- return
- def fullguess(self, gamesession):
- self.cls()
- print("\n\n\nThis is what you have so far:\n")
- print(gamesession.make_guessed_line())
- print("\nThe clue was:")
- print(gamesession.comment)
- print("\n\nEnter the word/phrase that you think is correct:")
- print("(Type 'letters' to go back to guessing letter by letter)")
- fguess = input("> ").lower()
- if fguess == "quit":
- self.cls()
- sys.exit()
- elif fguess == "menu":
- self.introduction()
- elif fguess == "letters":
- self.cls()
- print('\n\n')
- return
- elif gamesession.make_full_guess(fguess):
- self.cls()
- print("\n\n\nCONGRATULATIONS!!! You got it right!\n")
- print("\nYour score was: {}!\n".format(gamesession.score))
- result = gamesession.name + " " + str(gamesession.score)
- self.sboard.append(result)
- self.playagain()
- else:
- self.cls()
- print("\n\n\nOUCH!!! Bad luck, keep trying!")
- print("\nYour score is: {}!\n".format(gamesession.score))
- while True:
- g_again = input("Type 'again' to guess again, or 'letters' to go back to guessing by letter: ").lower()
- if g_again == "again":
- self.fullguess(gamesession)
- elif g_again == "letters":
- self.cls()
- print('\n\n')
- return
- elif g_again == "quit":
- self.cls()
- sys.exit()
- elif g_again == "menu":
- self.introduction()
- return
- def playagain(self):
- while True:
- play_again = input("""
- Options: 'yes' 'no' 'menu' 'score' 'quit'\n
- Would you like to play again?: """).lower()
- if play_again == "yes":
- self.setupgame()
- elif play_again == "no" or play_again == "quit":
- self.cls()
- sys.exit()
- elif play_again == "menu":
- self.introduction()
- elif play_again == "score":
- self.scoreboard()
- else:
- self.cls()
- print("\n\nYou must type either 'yes' or 'no'!\n\n")
- if __name__ == '__main__':
- game = Game()
- game.introduction()
Advertisement
Add Comment
Please, Sign In to add comment