zoukankan      html  css  js  c++  java
  • Python hangman小游戏

    hangman

    # words.py 使用pickle永久性存储数据
    
    import pickle
    
    filename = 'words.pk'
    
    data = ['cat', 'dog', 'perro', 'gato', 'horse', 'elephant', 'mono']
    
    with open(filename, 'wb') as f:
        pickle.dump(data, f)
    # hangman.py 猜词游戏
    
    # 使用pickle导入数据
    import pickle
    # 使用random.choice函数在序列中随机选择
    import random
    
    def hangman(word):  # 传入一个参数(word)
        # 错误数量
        wrong = 0 
        # 要画的步骤 
        stages = ["",
            "______       ",
            "|      |       ",
            "|      |    ",
            "|      0    ",
            "|     /|   ",
            "|     /    ",
            "|           ",
        ]
        # 将词转换为一个列表
        rletters = list(word)
        # 生成一个下划线的待猜列表
        board = ["_"] * len(word)
        # 未赢
        win = False
        print('Welcome to Hangman')
        
        # 如果画还没画完
        while wrong < len(stages) - 1:
            print('
    ')    
            # 猜一个字母
            msg = 'Guess a letter: '
            char = input(msg)
            # 如果字母在列表中
            if char in rletters:
                # 将列表中的字母剔除('$'),并在待猜列表中添加字母
                cind = rletters.index(char)
                board[cind] = char
                rletters[cind] = '$'
            # 如果字母不在列表中
            else:
                # 错误+1
                wrong += 1
            # 显示待猜列表
            print('word: ' + (" ".join(board)))
            # 打印图画
            e = wrong + 1
            print('
    '.join(stages[0:e]))
            # 如果待猜列表中以及没有下划线了,赢了
            if '_' not in board:
                print('You win!')
                print(' '.join(board))
                win = True
                break
        # 如果输了
        if not win:
            print('You lose! It was {}'.format(word))
    
    
    def random_word(filename='words.pk'):
        with open(filename, 'rb') as f:
            data = pickle.load(f)
            return random.choice(data)
    
    
    if __name__ == '__main__':
        while True:
            hangman(random_word())
            flag = input('Do you want to continue?(Y/N) ')    
            if flag.lower() not in ['y', 'yes']:
                break
        
    Resistance is Futile!
  • 相关阅读:
    缓存穿透与缓存雪崩
    hibernate 用hql做中文排序
    设计一个算法,求非空二叉树中指定的第k层(k&gt;1)的叶子节点的个数
    CI框架源代码阅读笔记3 全局函数Common.php
    Linux安装中文man手冊
    ios 自己定义导航栏和切割线
    算法7-7:有向图简单介绍
    [Leetcode]-Min Stack
    ios28--UIScrollView
    ios27--kvo
  • 原文地址:https://www.cnblogs.com/noonjuan/p/10848246.html
Copyright © 2011-2022 走看看