hangman游戏c语言,Python实现的简单hangman游戏实例

本文实例讲述了Python实现的简单hangman游戏。分享给大家供大家参考。具体如下:

#!/usr/bin/env python

import random

import cPickle

class Hangman(object):

'''A simple hangman game that tries to improve your vocabulary a bit '''

def __init__(self):

# the variables used, this is not necessary

self.dumpfile = '' #the dictionary file

self.dictionary = {} #the pickled dict

self.words = [] #list of words used

self.secret_word = '' #the 'key'

self.length = 0 #length of the 'key'

self.keys = [] #inputs that match the 'key'

self.used_keys = [] #keys that are already used

self.guess = '' #player's guess

self.mistakes = 0 #number of incorrect inputs

return self.load_dict()

#insert some random hints for the player

def insert_random(self, length):

randint = random.randint

# 3 hints

if length >= 7: hint = 3

else: hint = 1

for x in xrange(hint):

a = randint(1, length - 1)

self.keys[a-1] = self.secret_word[a-1]

def test_input(self):

#if the guessed letter matches

if self.guess in self.secret_word:

indexes = [i for i, item in enumerate(self.secret_word) if item == self.guess]

for index in indexes:

self.keys[index] = self.guess

self.used_keys.append(self.guess)

print "used letters ",set(self.used_keys),'\n'

#if the guessed letter didn't match

else:

self.used_keys.append(self.guess)

self.mistakes += 1

print "used letters ",set(self.used_keys),'\n'

# load the pickled word dictionary and unpickle them

def load_dict(self):

try :

self.dumpfile = open("~/python/hangman/wordsdict.pkl", "r")

except IOError:

print "Couldn't find the file 'wordsdict.pkl'"

quit()

self.dictionary = cPickle.load(self.dumpfile)

self.words = self.dictionary.keys()

self.dumpfile.close()

return self.prepare_word()

#randomly choose a word for the challenge

def prepare_word(self):

self.secret_word = random.choice(self.words)

#don't count trailing spaces

self.length = len(self.secret_word.rstrip())

self.keys = ['_' for x in xrange(self.length)]

self.insert_random(self.length)

return self.ask()

#display the challenge

def ask(self):

print ' '.join(self.keys), ":", self.dictionary[self.secret_word]

print

return self.input_loop()

#take input from the player

def input_loop(self):

#four self.mistakes are allowed

chances = len(set(self.secret_word)) + 4

while chances != 0 and self.mistakes < 5:

try:

self.guess = raw_input("> ")

except EOFError:

exit(1)

self.test_input()

print ' '.join(self.keys)

if '_' not in self.keys:

print 'well done!'

break

chances -= 1

if self.mistakes > 4: print 'the word was', ''.join(self.secret_word).upper()

return self.quit_message()

def quit_message(self):

print "\n"

print "Press 'c' to continue, or any other key to quit the game. "

print "You can always quit the game by pressing 'Ctrl+D'"

try:

command = raw_input('> ')

if command == 'c': return self.__init__() #loopback

else : exit(0)

except EOFError: exit(1)

if __name__ == '__main__':

game = Hangman()

game.__init__()

希望本文所述对大家的Python程序设计有所帮助。

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值