《Python游戏编程快速上手》第八章--Hangman

可能有的读者会觉得很奇怪,上一篇还是第五章,这一篇就是第八章了,中间的第六七章难道被博主吃掉了吗?
我想说明一下的是,在学习《Python游戏编程快速上手》一书的过程中,我越发觉得这本书更适合用做python的入门教材,就我看的这前几章来说,这本书对于python的基础用法讲解极其详细,而且学生还可以在学习过程中寓教于乐,真的是居家必备,入门python之必备良书啊。
第六章和第七章一章讲解的是python的编译器的用法,一章讲解的是流程图的画法。两章都是python基础知识,大家看书就好,我就不分享了。所以话不多说,我们开始第八章的游戏编程。
第八章讲的是一个国外的小游戏,其实就是猜单词的小游戏。(大概瞄了一眼第九章,还是这个游戏,只不过加些新拓展)

  • 游戏规则:
  • 程序从词库中随机选择一个单词,然后告诉用户单词的长度,用户一个字母一个字母地猜,猜错的话,画一笔小火柴人,如果小火柴人画完之前全部猜对就赢了,如果小火柴人画完后还没有猜出来,就输了。

代码如下:

import random

HANGMAN_PICS = ['''
 +---+
     |
     |
     |
    ===''','''
 +---+
 0   |
     |
     |
    ===   ''','''
 +---+
 0   |
 |   |
     |
    ===   ''','''
 +---+
 0   |
/|   |
     |
    ===   ''','''
 +---+
 0   |
/|\  |
     |
    ===   ''','''
 +---+
 0   |
/|\  |
/    |
    ===   ''','''
 +---+
 0   |
/|\  |
/ \  |
    ===   ''']
words = "ant baboon badger bat bear beaver camel cat clam cobra cougar coyote crow deer " \
        "dog donkey duck eagle ferret fox frog goat goose hawk lion lizard llama mole monkey " \
        "moose mule newt otter owl panda parrot pigeon python rabbit ram rat raven rhino".split()

def getWord():
    num = random.randint(1,len(words))
    return words[num-1]

def checkCharacter(word, character):
    for c in range(len(word)):
        if word[c] == character:
            return c
    return -1

def Gauss():
    word = getWord()
    count = 0
    rightNum = 0
    out = ["_"for _ in range(len(word))]
    miss = ""
    while True:
        print(HANGMAN_PICS[count])
        print("Missed letter: " + miss)
        print(out)
        print("Gauss a character")
        character = input().lower()
        check = checkCharacter(word, character)
        if check == -1 and count < len(HANGMAN_PICS)-2:
            miss += character
            count += 1
        elif count>=len(HANGMAN_PICS)-2:
            print(HANGMAN_PICS[count])
            print("You failed!The letter is "+word.upper()+" .Do you want try again?(y or n)")
            if input() == "n":
                break
            else:
                Gauss()
        else:
            out[check] = character
            rightNum += 1
        if rightNum == len(word):
            print("You win!The latter is "+word.upper()+" .Do you want restart it?(y or n)")
            if input() == "n":
                break
            else:
                Gauss()

if __name__ == "__main__":
    print("H A N G M A N")
    Gauss()

代码非常简陋,也不需要太多注释。这个可以改进的地方比较多,不过我就不改了哈,但我在看这一章时,我对其中根据ASCII码画图那部分比较感兴趣,所以这周木我会看看这部分,争取用python写出一个代码来,分享给大家,哈哈哈。

努力吧,少年!

你可能感兴趣的:(python游戏)