欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 实现 Hangman 小游戏

程序员文章站 2023-08-30 14:28:03
Hangman 游戏简介 百度百科 打印Hangman 其它 开始游戏 给定一个需要猜测的单词开始游戏 def start_game(word): 已经猜错的词 wrong = '' 将未猜出的以 显示 secret = hide(word) 记录还剩多少个 ,如果为0,则为全部猜中 secret_ ......

hangman--游戏简介--> 百度百科

打印hangman

def printhangman(n):
    #   第一行
    print("\t____")
    #   第二行
    print("\t|  |")
    #   第三行
    print("\t|  ", end="")

    if n > 0:
        #   第三行 第一笔
        print("o")
    else:
        #   第三行 换行
        print()

    #   第四行
    print("\t| ", end="")

    if n > 2:
        #   第四行 第三笔
        print("/", end="")
    else:
        #   第四行 换行
        print(" ", end="")

    if n > 1:
        #   第四行 第二笔
        print("|", end="")
    else:
        #   第四行 换行
        print(" ", end="")

    if n > 3:
        #   第四行 第四笔
        print("\\")
    else:
        #   第四行 换行
        print(" ")

    #   第五行
    print("\t| ", end="")

    if n > 4:
        #   第五行 第五笔
        print("/ ", end="")
    else:
        #   第五行 换行
        print("  ", end="")

    if n > 5:
        #   第五行 第六笔(画完结束)
        print("\\")
    else:
        #   第五行 换行
        print(" ")

    #   第六行
    print("\t|")
    #   第七行
    print("-------------")


# printhangman(0)
# printhangman(1)
# printhangman(2)
# printhangman(3)
# printhangman(4)
# printhangman(5)
# printhangman(6)


其它

#   生成一个仅包含星号的长度相同的字符串
def hide(s):
    return '*' * len(s)


#   计算星号
def hide_num(secret):
    num = 0
    for i in secret:
        if i == "*":
            num += 1
    return num


#   记录猜测错误的词
def record_wrong(wrong, wrong_in):
    wrong = wrong + wrong_in
    return wrong


#   打印已经猜错的词
def print_wrong(wrong):
    print("you've entered (wrong):", end=' ')
    for i in wrong:
        if i != wrong[-1]:
            print(i, end=',')
        else:
            print(i)


#   将猜对的词在对应位置显示出来
def show_correct(word, secret, correct_in):
    index = 0
    temp = ''
    for i in word:
        #   将每个词和输入的进行匹配
        if i == correct_in:
            temp = temp + correct_in
        #   将已经猜对的词继续显示
        elif secret[index] != '*':
            temp = temp + secret[index]
        #   没猜中的继续以 * 表示
        else:
            temp = temp + '*'
        index += 1
    return temp


开始游戏

#   给定一个需要猜测的单词开始游戏
def start_game(word):
    #   已经猜错的词
    wrong = ''
    #   将未猜出的以 * 显示
    secret = hide(word)
    #   记录还剩多少个 * ,如果为0,则为全部猜中
    secret_num = hide_num(secret)
    #   猜错的步数,6步画完小人,表示失败
    hang = 0

    #   6步之内而且还有 * 未猜出
    while secret_num > 0 and hang < 7:
        print('you word looks like this:')
        print(secret)
        printhangman(hang)
        
        if hang < 6:
            print('choose a letter:', end='')
            char_in = input()

            # 判断猜的词是否在单词中
            if char_in in word:
                secret = show_correct(word,secret, char_in)
            else:
                wrong = record_wrong(wrong, char_in)
                hang = hang + 1

            secret_num = hide_num(secret)
            # 代表得分,假如abbc,猜b,得两分
            score = len(word) - secret_num
            print('your points so far:', score)
            if wrong != '':
                print_wrong(wrong)
            print()
        else:
            #   小人画完
            break
            
    #   胜利
    if secret_num == 0:
        print('win')
        print('word:', word)
    #   失败
    else:
        print('defeat')
        print('word:', word)


结果

Python 实现 Hangman 小游戏