In [5]:
import random

def saveIdiomsList():
    fh = open(r'f:\temp\idioms.txt')
    text = fh.read()
    text = text.replace('、', '')
    idioms=text.split('\n')
    fh.close()
    
    fh=open(r'f:\temp\idioms_correct.txt','w')
    for idiom in idioms:
        idiom=idiom+'\n'
        fh.write(idiom)
    fh.close()

def savePoemsList():
    fh = open(r'f:\temp\poems.txt')
    text = fh.read()
    text = text.replace('\n', '')
    text = text.replace('、', '\n')
    text = text.replace(',', '\n')
    text = text.replace('。', '\n')
    text = text.replace('?', '\n')
    text = text.replace('!', '\n')
    poems=text.split('\n')
    fh.close()
    
    fh=open(r'f:\temp\poems_correct.txt','w')
    for poem in poems:
        poem=poem+'\n'
        fh.write(poem)
    fh.close()

def idiom_game():
    filename = r'f:\temp\idioms_correct.txt'
    score = 10
    while score >= 0:
        real_idiom = idiom_robot(filename)
        answer_idiom = input('请输入猜测成语,回车结束,直接回车表示退出游戏:')
        if answer_idiom == real_idiom:
            print('答对了,加十分')
            score += 10
            print('你当前的分数是:', score)
            if score == 100:
                win()
                return
        elif answer_idiom == '':
            print('退出游戏。')
            print('你最后的分数是:', score)
            return
        else:
            score -= 10
            print('答错了,减十分')
            print('成语其实是:', real_idiom)
            print('你当前的分数是:', score)
    else:
        lose()
        return
    
def idiom_robot(file_name):
    with open(file_name) as fh:
        text = fh.read()
    idioms = text.split()
    idiom = random.choice(idioms)
    chs = get_ch_table(text.replace(r'\n', ''))

    guess_ch_table = [ch for ch in idiom]
    while len(guess_ch_table) < 6:
        ch = random.choice(chs)
        if ch not in guess_ch_table:
            guess_ch_table.append(ch)
    
    random.shuffle(guess_ch_table)
    
    for i in range(0,6,2):
        print(guess_ch_table[i], guess_ch_table[i+1])
    
    return idiom

def poem_game():
    filename = r'f:\temp\poems_correct.txt'
    score = 10
    while score >= 0:
        real_poem = poem_robot(filename)
        answer_poem = input('请输入猜测诗句,回车结束,直接回车表示退出游戏:')
        if answer_poem == real_poem:
            print('答对了,加十分')
            score += 10
            print('你当前的分数是:', score)
            if score == 100:
                win()
                return
        elif answer_poem == '':
            print('退出游戏。')
            print('你最后的分数是:', score)
            return
        else:
            score -= 10
            print('答错了,减十分')
            print('诗句其实是:', real_poem)
            print('你当前的分数是:', score)
    else:
        lose()
        return
    
def poem_robot(file_name):
    with open(file_name) as fh:
        text = fh.read()
    poems = text.split()
    poem = random.choice(poems)
    chs = get_ch_table(text.replace(r'\n', ''))

    guess_ch_table = [ch for ch in poem]
    if(len(poem)==5):
        while len(guess_ch_table) < 9:
            ch = random.choice(chs)
            if ch not in guess_ch_table:
                guess_ch_table.append(ch)
    
        random.shuffle(guess_ch_table)
    
        for i in range(0,9,3):
            print(guess_ch_table[i], guess_ch_table[i+1], guess_ch_table[i+2])
    else:
        while len(guess_ch_table) < 12:
            ch = random.choice(chs)
            if ch not in guess_ch_table:
                guess_ch_table.append(ch)
    
        random.shuffle(guess_ch_table)
    
        for i in range(0,12,3):
            print(guess_ch_table[i], guess_ch_table[i+1], guess_ch_table[i+2])
    
    return poem
    
def get_ch_table(line):#字表统计
    ch_table = []
    for ch in line:
        if ch not in ch_table:
            ch_table.append(ch)
    return ch_table

def menu():
    print('''
             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          '''
    )
    
def show_instruction():
    print('''
             =====INSTRUCTION=====
             
       Please guess the right idiom/poem
          from the charactors in box
                
             =====INSTRUCTION=====
          '''
    )

def welcome():
    print(
        '''
           ======欢迎来到猜成语/诗词游戏=======
        
                     /  \     ,    ,
           _._     _ |oo| _  / \__/ \
    
          _||||   ((/ () \))   /   \
    
          |||||/|  ( ==== )    |oo|    
           \____/  _`\  /'_    /   \
    
           /   /.-' /\<>/\ `\.( () )_._      
           |    `  /  \/  \  /`'--'////)
            \__,-'`|  |.  |\/ |/\/\|"\"` 
                   |  |.  | \___/\___/  
                   |  |.  |   |    |
          
          ======欢迎来到猜成语/诗词游戏=======
        '''
    )

def game_over():
     print(
        '''
           ======GAME OVER=======
        
             _________ 
            / ======= \ 
           / __________\ 
          | ___________ | 
          | | -       | | 
          | |         | | 
          | |_________| |________________ 
          \=____________/                ) 
          / """"""""""" \               / 
         / ::::::::::::: \          =D-' 
        (_________________) 

       
          ======GAME OVER=======
        '''
    )

def win():
    print(
        '''
           ======恭喜你,你赢了=======
        
    
                ."".    ."",
                |  |   /  /
                |  |  /  /
                |  | /  /
                |  |/  ;-._ 
                }  ` _/  / ;
                |  /` ) /  /
                | /  /_/\_/\
                |/  /      |
                (  ' \ '-  |
                 \    `.  /
                  |      |
                  |      |
          
          ======恭喜你,你赢了=======
        '''
    )   
    
def lose():
     print(
        '''
           ======抱歉,你输了=======
        
    
                

                   .-"      "-.
                  /            \
                 |              |
                 |,  .-.  .-.  ,|
                 | )(__/  \__)( |
                 |/     /\     \|
       (@_       (_     ^^     _)
  _     ) \_______\__|IIIIII|__/__________________________
 (_)@8@8{}<________|-\IIIIII/-|___________________________>
        )_/        \          /
       (@           `--------`
       
       
       
          ======抱歉,你输了=======
        '''
    ) 

def show_team():
    print('''
             =====TEAM COMPOSITION=====
             
                Programmer:Rita
                Designer:Rita
                Director: Rita
                
             =====TEAM COMPOSITION=====
           '''
    )


def main():  
    saveIdiomsList()
    savePoemsList()
    
    while True:  
        menu()
        choice = int(input('请输入你的选择'))
        if choice == 1:
            show_instruction()
        elif choice == 2:
            welcome()
            idiom_game()
        elif choice == 3:
            welcome()
            poem_game()
        elif choice == 4:
            game_over()
            break
        else:
            show_team()
    
main()


             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          
请输入你的选择1

             =====INSTRUCTION=====
             
       Please guess the right idiom/poem
          from the charactors in box
                
             =====INSTRUCTION=====
          

             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          
请输入你的选择5

             =====TEAM COMPOSITION=====
             
                Programmer:Rita
                Designer:Rita
                Director: Rita
                
             =====TEAM COMPOSITION=====
           

             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          
请输入你的选择2

           ======欢迎来到猜成语/诗词游戏=======
        
                     /  \     ,    ,
           _._     _ |oo| _  / \__/     
          _||||   ((/ () \))   /       
          |||||/|  ( ==== )    |oo|    
           \____/  _`\  /'_    /       
           /   /.-' /\<>/\ `\.( () )_._      
           |    `  /  \/  \  /`'--'////)
            \__,-'`|  |.  |\/ |/\/\|""` 
                   |  |.  | \___/\___/  
                   |  |.  |   |    |
          
          ======欢迎来到猜成语/诗词游戏=======
        
不 一
秦 绝
丝 挂
请输入猜测成语,回车结束,直接回车表示退出游戏:一丝不挂
答对了,加十分
你当前的分数是: 20
再 再
乌 厉
著 接
请输入猜测成语,回车结束,直接回车表示退出游戏:再接再厉
答对了,加十分
你当前的分数是: 30
纵 马
走 观
凉 花
请输入猜测成语,回车结束,直接回车表示退出游戏:走马观花
答对了,加十分
你当前的分数是: 40
可 在
君 手
热 炙
请输入猜测成语,回车结束,直接回车表示退出游戏:炙手可热
答对了,加十分
你当前的分数是: 50
肘 无
眩 晕
头 目
请输入猜测成语,回车结束,直接回车表示退出游戏:
退出游戏。
你最后的分数是: 50

             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          
请输入你的选择3

           ======欢迎来到猜成语/诗词游戏=======
        
                     /  \     ,    ,
           _._     _ |oo| _  / \__/     
          _||||   ((/ () \))   /       
          |||||/|  ( ==== )    |oo|    
           \____/  _`\  /'_    /       
           /   /.-' /\<>/\ `\.( () )_._      
           |    `  /  \/  \  /`'--'////)
            \__,-'`|  |.  |\/ |/\/\|""` 
                   |  |.  | \___/\___/  
                   |  |.  |   |    |
          
          ======欢迎来到猜成语/诗词游戏=======
        
不 之 薄
狐 衾 干
暖 村 裘
满 舟 锦
请输入猜测诗句,回车结束,直接回车表示退出游戏:狐裘不暖锦衾薄
答对了,加十分
你当前的分数是: 20
山 愁 瘴
昏 若 寺
十 鸣 昼
佳 已 钟
请输入猜测诗句,回车结束,直接回车表示退出游戏:山寺钟鸣昼已昏
答对了,加十分
你当前的分数是: 30
关 斗 去
日 是 情
玉 总 清
请输入猜测诗句,回车结束,直接回车表示退出游戏:总是玉关情
答对了,加十分
你当前的分数是: 40
梅 知 见
陇 头 月
户 应 空
请输入猜测诗句,回车结束,直接回车表示退出游戏:应见陇头梅
答对了,加十分
你当前的分数是: 50
外 著 食
四 衣 都
护 铁 钓
俱 犹 冷
请输入猜测诗句,回车结束,直接回车表示退出游戏:都护铁衣冷难着
答错了,减十分
诗句其实是: 都护铁衣冷犹著
你当前的分数是: 40
瘴 不 护
昏 羞 林
琴 户 开
请输入猜测诗句,回车结束,直接回车表示退出游戏:林昏户不开
答错了,减十分
诗句其实是: 林昏瘴不开
你当前的分数是: 30
弟 不 停
秋 春 食
杯 此 箸
曲 投 能
请输入猜测诗句,回车结束,直接回车表示退出游戏:停杯投箸不能食
答对了,加十分
你当前的分数是: 40
门 薄 投
杯 不 试
箸 前 食
辅 能 停
请输入猜测诗句,回车结束,直接回车表示退出游戏:停杯投箸不能食
答对了,加十分
你当前的分数是: 50
色 凝 望
边 空 戍
缝 客 直
请输入猜测诗句,回车结束,直接回车表示退出游戏:戍边空望色
答错了,减十分
诗句其实是: 戍客望边色
你当前的分数是: 40
戍 归 雁
达 洛 阳
边 钟 有
请输入猜测诗句,回车结束,直接回车表示退出游戏:
退出游戏。
你最后的分数是: 40

             =====游戏菜单=====
                1. 游戏说明
                2. 开始成语游戏
                3. 开始诗词游戏
                4. 退出游戏
                5. 制作团队
             =====游戏菜单=====
          
请输入你的选择4

           ======GAME OVER=======
        
             _________ 
            / ======= \ 
           / __________\ 
          | ___________ | 
          | | -       | | 
          | |         | | 
          | |_________| |________________ 
          \=____________/                ) 
          / """"""""""" \               / 
         / ::::::::::::: \          =D-' 
        (_________________) 

       
          ======GAME OVER=======