单词游戏: hangman
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相关推荐
- Yii Framework 开发教程(4) Hangman 猜单词游戏实例
有了前面"Hello,World"的例子和对Yii Framework Web应用基础的介绍,可以开始介绍一个简单而相对而有比较完整的Web应用-Hangman(猜单词游戏),这个 ...
- Python实现猜词游戏 Hangman Game(不带提示和带提示版本)
本文目录 Python实现猜词游戏(Hangman Game) 一.任务准备 二.Hangman游戏的功能需求 三.辅助函数的构建 1.确定一个单词是否被猜出 2.获取用户当前的猜词进度 3.确定还有 ...
- python背单词游戏_Python基础-背单词游戏
Hangman直译为"吊死鬼",是一个猜单词的双人游戏. 由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母.第一个人抽走单词或短语,只留下相应数量的空白与下划线 ...
- Python基础-背单词游戏!
Hangman直译为"吊死鬼",是一个猜单词的双人游戏.由一个玩家想出一个单词或短语,另一个玩家猜该单词或短语中的每一个字母.第一个人抽走单词或短语,只留下相应数量的空白与下划线. ...
- java猜单词游戏_序列应用——猜单词游戏
开发工具:Visual Studio Code 1.游戏介绍 猜单词游戏就是计筧机随机产生一个单词,打乱字母顺序,供玩家去猜测.此游戏采用控制字符界面. 2.程序设计思路 游戏中,可使用序列中的元组存 ...
- 单词九连猜python编程_python实现猜单词游戏
本文实例为大家分享了python实现猜单词游戏的具体代码,供大家参考,具体内容如下 0.效果 1.代码 # 猜单词游戏 import random #添加 WORDS = ("python& ...
- c语言猜单词游戏实验报告,猜单词游戏c语言源程序.doc
猜单词游戏c语言源程序 包括程序及txt文档,希望可以对您有所帮助 #include #include #include #include #include #include #include voi ...
- Python实现猜单词游戏
推荐自己的专栏:分享一些Python案例,将所学用出来 欢迎参加猜单词游戏! 请把乱序后的字母组成一个单词乱序后的单词: odticnraiy请输入您猜测的结果:dictionary恭喜您,猜对了!是 ...
- python猜单词游戏_python实现猜单词游戏
本文实例为大家分享了python实现猜单词游戏的具体代码,供大家参考,具体内容如下 0.效果 1.代码 # 猜单词游戏 import random #添加 WORDS = ("python& ...
最新文章
- Extjs4.0.7 MVC Architecture异常
- jspxcms bug表
- python编程爱心-Python使用turtle库画一个爱心构成的爱心
- Just a Simple Problem
- HTML邮件制作规范
- 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
- 论坛的搭建以及优化方案
- python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法
- 想设计亿万级高并发架构,你要先知道高并发是什么?
- Nginx (1)---安装配置
- C语言局部变量、全局变量、静态局部变量、静态全局变量
- 区块链学习-以太坊学习简介
- java random产生随机数_Random随机数
- 【LCS】POJ1458Common Subsequence
- win10进程太多怎么优化_摆脱流氓软件,这16款实用的Windows优化软件让你的系统更好用...
- 关于五险一金(南京)
- Java面试自我介绍篇
- 【关于Java方法的学习】
- 机器学习 —— 周志华
- php for android