python练习:简单火柴人游戏

这个游戏是我初学python时写的,个人觉得例子非常好,现在分享给大家。

每一行代码不懂得直接评论吧我都会详细解释~,希望能有助于各位的学习。


游戏如下:

在单词库中给出一系列单词,如果猜错火柴人会一步步形成:

如果猜对,则会显示单词,并恭喜您答对单词~

 

附上源码:

import random
# 构建图像
HANGMAN_PICS = ['''
#  +---+
#      |
#      |
#      |
#     ===''','''
#  +---+
#  0   |
#      |
#      |
#     ===   ''','''
#  +---+
#  0   |
#  |   |
#      |
#     ===   ''','''
#  +---+
#  0   |
# /|   |
#      |
#     ===   ''','''
#  +---+
#  0   |
# /|\  |
#      |
#     ===   ''','''
#  +---+
#  0   |
# /|\  |
# /    |
#     ===   ''','''
#  +---+
#  0   |
# /|\  |
# / \  |
#     ===   ''']
# 定义单词库
words = 'fantasy salute tike pisces raven zara stussy'.split()
# 定义选择的单词方法
# wordList为单词列表
def getRandomWord(wordList):
	wordIndex = random.randint(0,len(wordList) - 1)
	return wordList[wordIndex]

# 定义显示板
# missedLetters correctLetters secretWord 玩家猜过不在神秘单词里面,玩家猜过在神秘单词,神秘单词
def displayBoard(missedLetters,correctLetters,secretWord):
	# HANGMAN_PICS为全局变量,即整个火柴的全部内容
	print(HANGMAN_PICS[len(missedLetters)])
	print()
	# 打印出错误的字母,用for 循环在打印出每个字母
	print('Missed letters:',end='')
	for letter in missedLetters:
		print(letter,end='')
	print()
	

	# 对__的长度进变化
	blank='_'*len(secretWord)
    # 对blank中的东西进行替换
	for i in range(len(secretWord)):
			if secretWord[i] in correctLetters:
				# --[:2]=>0,1 [2:]=>2到最后 含头不含尾
				blank = blank[:i]+secretWord[i]+blank[i+1:]
	for letter in blank:
			print(letter,end='')
	print()


# 玩家猜测的数据
def getGuess(alreadyGuessed):
	while True:
		print('Guess a letter.')
		guess = input()
		guess = guess.lower()
		if len(guess)!=1:
			print("please enter a single letter")
		elif guess in alreadyGuessed:
			print("猜对了,请继续")
		else:
			return guess
# 判断玩家是否还想在玩一次
def playAgian():
	print("你还想再玩么 (yes or no)")
	return input().lower().startswith('y')

# 程序开始执行并循环
print('H A N G M A N ')
missedLetters = ''
correctLetters = ''
secretWord = getRandomWord(words)
gameisDone = False
while True:
	displayBoard(missedLetters,correctLetters,secretWord)
	guess = getGuess(missedLetters + correctLetters)
	if guess in secretWord:
		correctLetters =correctLetters+ guess
		foundAllLetters = True
		for i in range(len(secretWord)):
			if secretWord[i] not in correctLetters:
				foundAllLetters = False
				break
		if foundAllLetters:
			print('yes! the secretWord is " '+ secretWord +'"! you have won ')
			gameisDone

	else:
		missedLetters = missedLetters +guess 

		if len(missedLetters)== len(HANGMAN_PICS) -1:
			displayBoard(missedLetters,correctLetters,secretWord)
			print('you have run out of guesses! \n After '+ str(len(missedLetters)) + 'missed guesses and ' +
					str(len(correctLetters)) + 'correct guessed,the word was "' + secretWord + '" ')
			gameisDone = True
				

	if gameisDone:
		if playAgian():
			missedLetters=''
			correctLetters=''
			gameisDone=False
			secretWord = getRandomWord(words)
		else:
			break

 

输入win+R=》cmd打开终端,再将文档拖入终端内,即可执行(或者直接用python运行)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值