iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 6
0

學到這邊,希望大家對程式語言都有基本的認識了,其實只要學會一種程式語言,要轉換到其他種都不困難,困難的是在一開始建立計算機思維的部分,因為人腦天生處理事情的方法和電腦不同,如何以電腦的邏輯去揣摩問題,解決問題是想要學習程式的人一個很重要的課題,今天我們就利用大家學過的判斷、迴圈來寫一個簡單的 1A2B 小遊戲吧。

1A2B遊戲的規則是一個人設定一組四碼的數字作為謎底,另一方猜。每猜一個數,出數者就要根據這個數字給出提示,提示以 XAYB 形式呈現,直到猜中為止。其中 X 表示位置正確的數的個數,而 Y 表示數字正確而位置不對的數的個數。

例如,當謎底為8123,而猜謎者猜1052時,出題者必須提示0A2B。[Wikipidia]

這邊附上一段遊戲的完整程式碼,這將會你們自己寫出的第一個遊戲啊哈哈哈,雖然裡面用到了一些沒教過的概念,不過沒關係,把這段程式碼複製貼上,玩玩看,然後到處改改看,你就能自己領悟出些心得。程式裡有註解會解釋每一行在做什麼。

import random
targetNum = random.sample('1234567890',4) #創建一個四位數的隨機list
print (targetNum)

#宣告布林 Flag 表示玩家尚未贏得遊戲
IsWin = False

#如果玩家未勝利則持續進行
while(not(IsWin)):
    #取得使用者鍵盤輸入
    userNum=list(input("輸入4個不同數字:"))

    #檢查A 相同數字相同位置
    a = 0
    for i in range(4):
        #如果位置相同且數字相同 A+1
        if(targetNum[i] == userNum[i]):
            a = a + 1 #A+1
    
    #檢查B 相同數字但不同位置
    b = 0
    for i in range(4):
        #如果數字相同且位置不相同 B+1
        if(userNum[i] in targetNum and userNum[i] != targetNum[i]):
            b = b + 1 #B+1
     
    #顯示結果
    print(a,"A", b, "B")
    
    #如果 4A 遊戲勝利
    if (a == 4):
        IsWin = True #4A 玩家獲勝

https://ithelp.ithome.com.tw/upload/images/20190922/20120282MPkxJKtqOD.jpg
大概就是這樣~到這個段落,我想大家對程式都已經有基本認識了,接下來的教學手法會比較偏向正常的寫法,而不是為了零基礎的人寫的,如果遇到問題隨時可以問我,我會再加進文章,也可以上網搜尋如何解決,上網查多了,看的東西、處理的情況多了,你就會變成一個優秀的程式設計師啦!


上一篇
Day5-上萬筆資料我該怎麼辦
下一篇
Day7-相同程式碼不想重寫,初識函式
系列文
原來電腦可以這樣用!? 果蠅也懂的程式語言教學30

尚未有邦友留言

立即登入留言