Python 實現 Hangman 小遊戲

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)


結果

相關文章
相關標籤/搜索