1、 设计完成一个单词游戏: HANGMAN。请按题目指导逐步完成。

这是一个经典单词游戏Hangman的变形设计。如果你对游戏规则不熟悉,可以点击链接(https://en.wikipedia.org/wiki/Hangman_(game))。此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretWord)

在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。在完成这个函数的设计之前,需要先创建几个辅助函数。

首先下载两个文件ps3_hangman.py 和 words.txt,存放在同一个目录中。打开并运行文件ps3_hangman.py,不要做任何修改,以保证正确运行。

题目所给的代码从文本文件wors.txt中装载单词列表,如果运行正常应该可以看到:

Loading word list from file...

55909 words loaded.

如果出现错误,需要将语句:

WORDLIST_FILENAME = "words.txt"

修改为类似如下形式(取决于words.txt存在哪个目录中):

WORDLIST_FILENAME = "C:\Users\Zhangjl\words.txt"

文件 ps3_hangman.py 已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。可以将自己的代码都写在这个文件里。

游戏要求:

1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。

2、游戏是交互式的,游戏的流程如下:

• 刚开始时,让用户知道单词的长度(即secretWord的长度)

• 每一轮让用户猜一次(一个字母)

• 用户能得到立即反馈,所猜字母是否是secret单词的字母

• 每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母

3. 游戏的额外规则:

• 用户可以猜8次.每一轮猜测后提醒他剩余多少次可猜。假设用户总是每次输入一个字母(A-Z)。

• 当用户错误猜测时,猜测次数减少1次。

• 如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续猜测。

• 如果用户猜过的字母拼出了那个单词,游戏结束。如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。

样例(注:有两类,仔细看哦,对写代码有好处)

赢了游戏应如下显示:

Loading word list from file...

55900 words loaded.

Welcome to the game, Hangman!

I am thinking of a word that is 4 letters long.

-------------

You have 8 guesses left.

Available letters: abcdefghijklmnopqrstuvwxyz

Please guess a letter: a

Good guess: _ a_ _

------------

You have 8 guesses left.

Available letters: bcdefghijklmnopqrstuvwxyz

Please guess a letter: a

Oops! You've already guessed that letter: _ a_ _

------------

You have 8 guesses left.

Available letters: bcdefghijklmnopqrstuvwxyz

Please guess a letter: s

Oops! That letter is not in my word: _ a_ _

------------

You have 7 guesses left.

Available letters: bcdefghijklmnopqrtuvwxyz

Please guess a letter: t

Good guess: ta_ t

------------

You have 7 guesses left.

Available letters: bcdefghijklmnopqruvwxyz

Please guess a letter: r

Oops! That letter is not in my word: ta_ t

------------

You have 6 guesses left.

Available letters: bcdefghijklmnopquvwxyz

Please guess a letter: m

Oops! That letter is not in my word: ta_ t

------------

You have 5 guesses left.

Available letters: bcdefghijklnopquvwxyz

Please guess a letter: c

Good guess: tact

------------

Congratulations, you won!

输了游戏如下显示:

Loading word list from file...

55900 words loaded.

Welcome to the game Hangman!

I am thinking of a word that is 4 letters long

-----------

You have 8 guesses left

Available Letters: abcdefghijklmnopqrstuvwxyz

Please guess a letter: a

Oops! That letter is not in my word _ _ _ _

-----------

You have 7 guesses left

Available Letters: bcdefghijklmnopqrstuvwxyz

Please guess a letter: b

Oops! That letter is not in my word _ _ _ _

-----------

You have 6 guesses left

Available Letters: cdefghijklmnopqrstuvwxyz

Please guess a letter: c

Oops! That letter is not in my word _ _ _ _

-----------

You have 5 guesses left

Available Letters: defghijklmnopqrstuvwxyz

Please guess a letter: d

Oops! That letter is not in my word _ _ _ _

-----------

You have 4 guesses left

Available Letters: efghijklmnopqrstuvwxyz

Please guess a letter: e

Good guess: e_ _ e

-----------

You have 4 guesses left

Available Letters: fghijklmnopqrstuvwxyz

Please guess a letter: f

Oops! That letter is not in my word e_ _ e

-----------

You have 3 guesses left

Available Letters: ghijklmnopqrstuvwxyz

Please guess a letter: g

Oops! That letter is not in my word e_ _ e

-----------

You have 2 guesses left

Available Letters: hijklmnopqrstuvwxyz

Please guess a letter: h

Oops! That letter is not in my word e_ _ e

-----------

You have 1 guesses left

Available Letters: ijklmnopqrstuvwxyz

Please guess a letter: i

Oops! That letter is not in my word e_ _ e

-----------

Sorry, you ran out of guesses. The word was else.

源代码:

# -*- coding: utf-8 -*-
"""
__name__ = "gdzhang"
__serialNumber = "147"
__time__ = "2017.11.01"
"""
import randomWORDLIST_FILENAME = "words.txt"###加载文件,输出单词序列
def loadWords():print "Loading word list from file..."inFile = open(WORDLIST_FILENAME, 'r', -1)line = inFile.readline()wordlist = line.split()print "  "+str(len(wordlist))+ "words loaded."return wordlist###随机生成被猜测的秘密单词
def chooseWord(wordlist):secretWord = random.choice(wordlist).lower()print secretWordreturn secretWord###判断猜测的所有字符是否组成了要猜测的秘密单词
def isWordGuessed(secretWord, lettersGuessed):for element in secretWord:if element not in lettersGuessed:return Falsereturn True###对猜测的结果进行处理。是,就用该字符填充,不是就用下划线代替
def getGuessedWord(secretWord, lettersGuessed):secretWord = secretWord.lower()word_hint = []for elem in secretWord:if elem not in lettersGuessed:word_wrong = "_ "word_hint.append(word_wrong)else:word_hint.append(elem)guessedWord= "".join(word_hint)return guessedWord###从所有字母的字符串中,清除已经被猜测的字符
def getAvailableLetters(lettersGuessed):string1 = "abcdefghijklmnopqrstuvwxyz"# availableLetters = re.sub(str(lettersGuessed),'',s)# return availableLettersavailableLetter_list = []for s in string1:if s not in lettersGuessed:availableLetter_list.append(s)availableLetters = ''.join(availableLetter_list)return availableLettersdef hangman():wordlist = loadWords()print "Welcome to the game Hangman!"secretWord = chooseWord(wordlist).lower()print "I am thinking of a word that is %d letters long" % len(secretWord)print "------------"total_times = 8count_times = 8wrong_times = 0lettersGuessed = []while wrong_times < total_times:print "You have %s guesses left." % count_timesavailableLetters = getAvailableLetters(lettersGuessed)print "Available letters:%s" % availableLettersletter_Guessed = raw_input("Please guess a letter:").lower()# lettersGuessed.append(letter_Guessed)# guessedWord = getGuessedWord(secretWord, lettersGuessed)if letter_Guessed in secretWord:if letter_Guessed not in lettersGuessed:lettersGuessed.append(letter_Guessed)guessedWord = getGuessedWord(secretWord, lettersGuessed)print "Good guess: %s" % guessedWordprint "------------"if isWordGuessed(secretWord, lettersGuessed):breakelse:guessedWord = getGuessedWord(secretWord, lettersGuessed)print "Oops! You've already guessed that letter:%s"% guessedWordprint "------------"else:guessedWord = getGuessedWord(secretWord, lettersGuessed)print "Oops! That letter is not in my word: %s" % guessedWordprint "------------"count_times -= 1wrong_times += 1isWord_Guessed = isWordGuessed(secretWord, lettersGuessed)if isWord_Guessed:print "Congratulations, you won!"else:print "Sorry, you ran out of guesses. The word was %s." % secretWordif __name__ == "__main__":hangman()

单词游戏: hangman相关推荐

  1. Yii Framework 开发教程(4) Hangman 猜单词游戏实例

    有了前面"Hello,World"的例子和对Yii Framework Web应用基础的介绍,可以开始介绍一个简单而相对而有比较完整的Web应用-Hangman(猜单词游戏),这个 ...

  2. Python实现猜词游戏 Hangman Game(不带提示和带提示版本)

    本文目录 Python实现猜词游戏(Hangman Game) 一.任务准备 二.Hangman游戏的功能需求 三.辅助函数的构建 1.确定一个单词是否被猜出 2.获取用户当前的猜词进度 3.确定还有 ...

  3. python背单词游戏_Python基础-背单词游戏

    Hangman直译为"吊死鬼",是一个猜单词的双人游戏. 由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母.第一个人抽走单词或短语,只留下相应数量的空白与下划线 ...

  4. Python基础-背单词游戏!

    Hangman直译为"吊死鬼",是一个猜单词的双人游戏.由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母.第一个人抽走单词或短语,只留下相应数量的空白与下划线. ...

  5. java猜单词游戏_序列应用——猜单词游戏

    开发工具:Visual Studio Code 1.游戏介绍 猜单词游戏就是计筧机随机产生一个单词,打乱字母顺序,供玩家去猜测.此游戏采用控制字符界面. 2.程序设计思路 游戏中,可使用序列中的元组存 ...

  6. 单词九连猜python编程_python实现猜单词游戏

    本文实例为大家分享了python实现猜单词游戏的具体代码,供大家参考,具体内容如下 0.效果 1.代码 # 猜单词游戏 import random #添加 WORDS = ("python& ...

  7. c语言猜单词游戏实验报告,猜单词游戏c语言源程序.doc

    猜单词游戏c语言源程序 包括程序及txt文档,希望可以对您有所帮助 #include #include #include #include #include #include #include voi ...

  8. Python实现猜单词游戏

    推荐自己的专栏:分享一些Python案例,将所学用出来 欢迎参加猜单词游戏! 请把乱序后的字母组成一个单词乱序后的单词: odticnraiy请输入您猜测的结果:dictionary恭喜您,猜对了!是 ...

  9. python猜单词游戏_python实现猜单词游戏

    本文实例为大家分享了python实现猜单词游戏的具体代码,供大家参考,具体内容如下 0.效果 1.代码 # 猜单词游戏 import random #添加 WORDS = ("python& ...

最新文章

  1. Extjs4.0.7 MVC Architecture异常
  2. jspxcms bug表
  3. python编程爱心-Python使用turtle库画一个爱心构成的爱心
  4. Just a Simple Problem
  5. HTML邮件制作规范
  6. 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
  7. 论坛的搭建以及优化方案
  8. python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法
  9. 想设计亿万级高并发架构,你要先知道高并发是什么?
  10. Nginx (1)---安装配置
  11. C语言局部变量、全局变量、静态局部变量、静态全局变量
  12. 区块链学习-以太坊学习简介
  13. java random产生随机数_Random随机数
  14. 【LCS】POJ1458Common Subsequence
  15. win10进程太多怎么优化_摆脱流氓软件,这16款实用的Windows优化软件让你的系统更好用...
  16. 关于五险一金(南京)
  17. Java面试自我介绍篇
  18. 【关于Java方法的学习】
  19. 机器学习 —— 周志华
  20. php for android

热门文章

  1. OpenGL中关于矩阵缩放、平移、旋转的讲解
  2. codeforces 448CPainting Fence
  3. 嵌入式Linux(5):驱动开发网络调试驱动设备的Linux系统移植
  4. Python简易的HTTP服务器
  5. 2022 年前端技术发展趋势知识小结
  6. mysql数据库date_format函数格式化时间
  7. 2022 年山东省职业院校技能大赛“中职组” 网络搭建与应用赛项
  8. 数据库原理与应用--数据库系统概述
  9. 点焊机器人焊接超时_机器人点焊自动化 I 附机器人点焊焊接工艺
  10. VMware发布Project Monterey