1. 程式人生 > >Python入門程式設計小程式-猜數字遊戲

Python入門程式設計小程式-猜數字遊戲

        這是一個簡單的小遊戲,用到的Python知識相當少,但是還是需要了解Python基本語法的。

程式整體上的演算法流程簡單介紹如下(不想用VS畫流程圖了,懶):

        既然猜數字遊戲,那麼首先應該實現的是,要設定數字,然後允許player去輸入猜測的數字。最簡單莫過於,設定一個固定的數字,與player的輸入相比較,得出正確與否的結論,三行程式碼就能實現,那會顯得很沒意思。那麼就要改進這個程式碼,可以用固定的list來設定數字,實現起來也不難,看完程式碼後再猜測也顯得無聊。再改進程式碼,用隨機序列是個不錯的選擇,呼叫random。比較大小的環節也是從最簡單一步步改進的,一開始立馬想到if語句就好,針對相等,大於,小於的情況,來為player列印一串提示語,但這種猜一次就game over 的遊戲機制也太low了,雖然我是菜鳥,也忍受不來這種侮辱。改進程式碼,用while迴圈來實現玩三次後,遊戲結束,實現起來也不難,無非是if語句巢狀,梳理好思路寫下來也是不太費勁的。當然我還是菜鳥階段,整段程式碼寫的毫無美感,更不用說什麼風格。。。。大家將就看,不喜勿噴

        其實到這裡似乎遊戲可以簡單的玩了,我比較有癮可以玩1個小時。但是三次機會用盡後,想再玩總要在直譯器中F5一下,實在是噁心極了,能不能出現Restart再玩一次的命令,於是我開始著手去寫。這個簡單問題我思考了一天,不得不說菜的真可怕。既然想restart,那麼就要求程式碼在player輸入某些值時,程式碼要重新執行。聽起來很簡單,有人說for迴圈即可,有人說可以把次數引數清零,返回繼續執行。但Python有沒有彙編的jump.yeild我又覺得彆扭,無法實現。因為之前的程式段中已經包含了while迴圈,我用for迴圈試了試變數設定混亂不堪,況且我試了在while迴圈後return次數變數清零,沒有實現。我思考良久我覺得要不斷的去迴圈這段程式碼,和不斷呼叫函式的概念是一樣的,那麼我就把這段程式碼全部封裝在compare函式裡面,隨時呼叫就行。

       問題又來了,的確是可以在game over後可以再玩一次,但只是玩一次,因為你呼叫的程式碼只執行一次,所以只調用上面程式碼一次而已。也就是說我的呼叫程式碼也要一直迴圈,我為了省事呢(實話是:其他高階的語法不會),就用for迴圈內嵌while else語句簡單寫了一段,所以大家看原始碼會發現我只是讓遊戲進行了10輪而已,我覺得我是沒有耐心玩超過30次了,當然你也可以設定更大的值,大到近乎於無限迴圈。當然是否繼續遊戲,是可以選擇的,player選擇拒絕再次遊戲就直接退出了,這部分是while else語句來實現的,懂起來比較容易。

       到此為止完成了一個十分簡陋的遊戲,無風格無美感無結構的,需要無盡優化的程式碼。。。。菜鳥共勉。絕對是菜鳥直接上手的小遊戲了。

def compare(i):
 import random
 secret = random.randint(1,10)
 temp = input("guess the number in my heart(from 1 to 10):\n")
 guess = int(temp)
 if guess == secret:
     print("amazing,you are right")
 else:
     if guess > secret:
        print("worring,it's bigger,you have the last two chances")
     else:
        print('OMG! so foolish you are.litter!!The last two chances ~~')
     while i < 2:
           temp = input("guess again please~~:\n")
           guess = int(temp)
           i=i+1
           if guess == secret:
              print("ok,you win.")
              break
           elif (guess > secret):
              if i==1:
                  print("guess it by your heart please!!bigger!last chance")
              else:
                  print("see you latter!biggerererer!")
           elif (guess < secret):
              if i==1:
                 print('want to fuck someone!wrong ,again,litter!last chance')
              else:
                 print('you make me angery,say goodbye to games.')
 print( 'game over')
 return
compare(0)
n=0
while n<10:
  restart = input('do you want to restart?please write 1 or 0:')
  n=n+1
  if restart==1:
    compare(0)
  else:
    print('see you latter')
    break