Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3.2
- # A hangman game in the console.
- from random import seed,choice;seed()
- def getInput(pre):
- try:return input(pre)
- except:return raw_input(pre)
- class GameRound:
- words = [ #A list of words to choose from. static.
- "Alpha",
- "Beta",
- "Theta"
- ]
- cutOff = 10
- letterValue = 20
- def __init__(self):
- self.score = 0
- self.word = choice(GameRound.words).lower()# Don't worry about case-sensitivity.
- self.guessedLetters = [] #A list of guessed letters.
- @property
- def wrong(self):
- return len([letter for letter in self.guessedLetters if letter not in self.word])
- def guess(self,letter):
- assert letter not in self.guessedLetters
- self.guessedLetters.append(letter)
- ret = letter in self.word
- if ret:self.score+=GameRound.letterValue
- else:self.score-=GameRound.letterValue
- return ret
- @property
- def guessQuota(self):return max(len(self.word),GameRound.cutOff)
- @property
- def complete(self):
- for letter in self.word:
- if letter not in self.guessedLetters:
- return len(self.guessedLetters)>self.guessQuota
- print("You have guessed all the letters! The word was:",self.word)
- return True
- @property
- def knownWord(self):
- return "".join([letter if letter in self.guessedLetters else '_' for letter in self.word])
- class Game:
- def __init__(self):
- self.score = 0
- self.levels = []
- @property
- def activeLevel(self):
- if len(self.levels)<1:
- self.levels.append(GameRound())
- elif self.levels[-1].complete:
- self.score+=self.levels[-1].score
- self.levels.append(GameRound())
- return self.levels[-1]
- def playRound(level):
- while not level.complete:
- w,q = level.wrong,level.guessQuota
- print("*" * level.wrong + "_" * (q-w),"]")
- print(level.knownWord)
- level.guess(getInput(">")[:1].lower())
- def play(self):
- prev = None
- while True:
- Game.playRound(self.activeLevel)
- if getInput("Continue? y/n >")[:1].lower()=='n':
- break
- if __name__=="__main__":
- g=Game()
- g.play()
- print("Your final score was:",g.score)
- print("After",len(g.levels),"levels.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement