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!
  • 相关阅读:
    memcached全面剖析--3.memcached的删除机制和发展方向
    memcached完全剖析--1. memcached的基础
    memcached全面剖析--2.理解memcached的内存存储
    memcached内存管理机制[未整理]
    memcached缓存基本概念
    有关memcached企业面试案例讲解
    网关协议学习:CGI、FastCGI、WSGI
    Redis和Memcached的区别
    Linux 日志切割工具cronolog详解
    vim粘贴代码格式变乱
  • 原文地址:https://www.cnblogs.com/noonjuan/p/10848246.html
Copyright © 2011-2022 走看看