從決定學習python到今天,已經(jīng)過去了好1個月膀值,買的幾本書還沒一本看完的棍丐,慚愧。
忙不是借口沧踏,是時候來點計劃骄酗,來點堅持。寫點什么吧悦冀,算是學習的記錄趋翻,也是對自己的鞭策。
今天寫一個猜字游戲盒蟆,模仿正在讀的《教孩子學編程(Python語言版)》里的GuessingGame.py踏烙。
古人有云,模仿也是一種創(chuàng)新嘛历等。
游戲玩法:機器隨機出拳(石頭剪刀布中的一種)讨惩,由玩家猜機器的手勢,猜對贏寒屯,否則輸荐捻。
流水賬開始:
IDE: Microsoft Visual Studio Community 2017
Language: Python
1. 新建Python項目,選擇Python應用程序黍少。
2.寫代碼,見下:
#!GuessingNumer.py
# encoding = utf-8
import random
number_list = [1,2,3]??# 1: 石頭,2:剪刀,3:布
guesture_list = ["石頭","剪刀","布"]??# 1: 石頭,2:剪刀,3:布
win_of_machine = 0 #機器贏局數(shù)
win_of_player = 0??#玩家贏局數(shù)
number_of_tries = 0
def guess():
????guesture_machine = random.choice(number_list)
????guesture_player = int(input("請猜手勢(輸入數(shù)字):1-石頭处面,2-剪刀厂置,3-布\n"))
????global number_of_tries
????number_of_tries = number_of_tries + 1
????if guesture_machine == guesture_player:#平局
????????print("恭喜你,猜對了.""機器出:",guesture_list[guesture_machine-1])
????????global win_of_player
????????win_of_player = win_of_player + 1
????else:
???????print("對不起魂角,猜錯了昵济。", "機器出:",guesture_list[guesture_machine-1])
???????global win_of_machine
???????win_of_machine = win_of_machine + 1
def display( ):
????print("***************************************************")
????print("********人機猜拳大賽-石頭剪刀布********************")
????print("********玩法:機器出拳,玩家猜對手勢贏野揪,否則輸*****")
????print("***************************************************")
????if(number_of_tries == 0):
???????return
????print("玩家 VS 機器")
????print("局數(shù): ", number_of_tries)
????print("比分:",win_of_player, ":",win_of_machine)
????if win_of_player > win_of_machine:
????????print("好棒哦访忿!繼續(xù)努力.")
????else:
????????print("加油!K刮取海铆!")
????print("***************************************************")
if(__name__ =="__main__"):
????while True:
????????display()
????????guess()
3. 運行調(diào)試
調(diào)試過程中,發(fā)現(xiàn)函數(shù)里不能修改全局變量挣惰,借助互聯(lián)網(wǎng)的力量卧斟,知道了global的用法。
此外通熄,display在開始不顯示比分唆涝,使用了break找都,導致IDE崩潰唇辨,只能強行關(guān)閉。函數(shù)返回應該用return能耻。
再者赏枚,如果玩家輸入非數(shù)字,會導致?guesture_player = int(input("請猜手勢(輸入數(shù)字):1-石頭晓猛,2-剪刀饿幅,3-布\n"))語句拋出錯誤。
還有戒职,對玩家輸入非1栗恩、2和3的數(shù)字沒有做處理,哎~?
綜合考慮以上因素后洪燥,折騰后的代碼如下:
#!GuessingNumer.py
# encoding = utf-8
import random
number_list = [1,2,3]??# 1: 石頭,2:剪刀,3:布
guesture_list = ["石頭","剪刀","布"]??# 1: 石頭,2:剪刀,3:布
win_of_machine = 0 #機器贏局數(shù)
win_of_player = 0??#玩家贏局數(shù)
number_of_tries = 0
def guess():
????guesture_machine = random.choice(number_list)
????try:
??????guesture_player = int(input("請猜手勢(輸入數(shù)字):1-石頭磕秤,2-剪刀,3-布\n"))
??????if(guesture_player<1 or guesture_player >3):
??????????print("糊弄誰呢捧韵,請輸入數(shù)字1市咆、2或3!")
??????????return
????except:
??????print("出錯了,輸入的不是數(shù)字!!")
??????return
????global number_of_tries
????number_of_tries = number_of_tries + 1
????if guesture_machine == guesture_player:#平局
????????print("恭喜你再来,猜對了.""機器出:",guesture_list[guesture_machine-1])
????????global win_of_player
????????win_of_player = win_of_player + 1
????else:
???????print("對不起蒙兰,猜錯了。", "機器出:",guesture_list[guesture_machine-1])
???????global win_of_machine
???????win_of_machine = win_of_machine + 1
def display( ):
????print("***************************************************")
????print("********人機猜拳大賽-石頭剪刀布********************")
????print("********玩法:機器出拳,玩家猜對手勢贏搜变,否則輸*****")
????print("***************************************************")
????if(number_of_tries == 0):
???????return
????print("玩家 VS 機器")
????print("局數(shù): ", number_of_tries)
????print("比分:",win_of_player, ":",win_of_machine)
????if win_of_player > win_of_machine:
????????print("好棒哦采缚!繼續(xù)努力.")
????else:
????????print("加油!1匝拧仰担!")
????print("***************************************************")
if(__name__ =="__main__"):
????while True:
????????display()
????????guess()
跑起來基本可以玩了,不過戰(zhàn)績差得可以绩社,見下圖摔蓝。80局,32:48愉耙。