零基礎學python-2.21 回到咱們的遊戲 加入類和函數

咱們再一次回到遊戲當中,此次,咱們將會加上類與函數的用法java

回顧一下之前的代碼:python

import random
exitTag=0
userList={}
while exitTag!=1:
    userName=input("請輸入你的名字:")
    if userName=='exit':
        exitTag=1
        break;
    else:
        secret=random.randint(1,100)#生成隨機數
        #print (secret)
        time=6#猜數字的次數
        guess=0#輸入的數字
        minNum=0#最小隨機數
        maxNum=100#最大隨機數
        print("---------歡迎來到猜數字的地方,請開始---------")
        while guess!=secret and time>=0:#條件
            guess=int(input("*數字區間0-100,請輸入你猜的數字:"))
            print("你輸入數字是:",guess)
            if guess==secret:
                userList[userName]=7-time
                print("猜對了,真厲害")
                print("歷史記錄:")
                for item in userList:
                    print(item+"只用了"+str(userList[item])+"次就猜到了")                
            else:
                #當不等於的時候,還須要打印出相應的區間,讓用戶更容易使用
                if guess<secret:
                    if minNum<guess:
                        minNum=guess
                    print("提示:你的猜數小於正確答案")            
                    print("提示:正確的數字區間是:",minNum,"-",maxNum)
                else:
                    if maxNum>guess:
                        maxNum=guess
                    print("提示:你的猜數大於正確答案")
                    print("提示:正確的數字區間是:",minNum,"-",maxNum)
                print("太遺憾,你猜錯了,你還有",time,"次機會")
            time-=1
print("遊戲結束")

在新的代碼裏面,

1.咱們把中間那一部分核心的遊戲代碼封裝成一個core的類,core類裏面有一個guessNum的方法dom

2.咱們把用戶封裝成一個類,在類裏面加入名字和成績列表,以便記錄用戶與成績函數

下面看代碼,請你們留意註釋,由於它基本表明了全部的邏輯和解釋性能

#創建遊戲的核心玩法類
class core(object):
    version=1.0
    def guessNum(self):
        secret=random.randint(1,100)#生成隨機數
        #print (secret)
        time=6#猜數字的次數
        guess=0#輸入的數字
        minNum=0#最小隨機數
        maxNum=100#最大隨機數
        print("---------歡迎來到猜數字的地方,請開始---------")
        print("提示:輸入-1能夠隨時退出遊戲")
        while guess!=secret and time>=0:#條件
            guess=int(input("*數字區間0-100,請輸入你猜的數字:"))
            print("你輸入數字是:",guess)
            if guess==secret:
                return (7-time)#爲何是7,由於咱們上面的條件是0-6,因此是7次
                print("猜對了,真厲害")
            elif guess==-1:
                print("提示:你強行退出,這一次不記錄成績")
                return 'exit'
            else:
                #當不等於的時候,還須要打印出相應的區間,讓用戶更容易使用
                if guess<secret:
                    if minNum<guess:
                        minNum=guess
                    print("提示:你的猜數小於正確答案")            
                    print("提示:正確的數字區間是:",minNum,"-",maxNum)
                else:
                    if maxNum>guess:
                        maxNum=guess
                    print("提示:你的猜數大於正確答案")
                    print("提示:正確的數字區間是:",minNum,"-",maxNum)
                print("太遺憾,你猜錯了,你還有",time,"次機會")
            guess=0
            time-=1

class User(object):
    userName=""#用戶名
    resultDict={}#結果列表
    playTime=1#玩的次數
    def setUserName(self,name='ray'):
        self.userName=name
    def setResultDict(self,guessTime):
        self.resultDict[self.playTime]=guessTime
        self.playTime+=1
    
#下面是運行代碼,相似於java的main函數
import random
exitAllTag=0#記錄是否所有退出遊戲,1:退出
exitGameTag=0#記錄是否退出我的遊戲部分,1:退出
userDict={}#記錄用戶組數據
result=''#猜數字遊戲返回的結果
#處理邏輯:
#1.先輸入名稱,若是不是退出,能夠直接進入遊戲
#2.進行遊戲的過程當中,能夠一直玩,也能夠強退,強退沒成績
#3.當用戶進行完遊戲,記錄用戶的成績
#4.噹全部的用戶都退出後,打印全部的成績
while exitAllTag!=1:   
    userName=input("請輸入你的名字:")
    #設置用戶的名字
    user=User()
    user.setUserName(userName)
    exitGameTag=0
    if userName=='exit':
            exitAllTag=1
            break;
    else:
        #進行遊戲
        while exitGameTag!=1:            
            result=core().guessNum()#這裏存在性能問題,最好使用單例模式
            if result=='exit':
                exitGameTag=1
                #當用戶退出時,把成績記錄下來
                userDict[userName]=user.resultDict;
                break
            else:
                #設置用戶的結果
                user.setResultDict(result)
                for e in user.resultDict:
                    print(e,user.resultDict[e])
print("遊戲結束")
#輸出全部人的成績
for name in userDict:
    print("用戶的名字:"+name)
    for e in userDict[name]:
        print(e,userDict[name][e])



就說到這裏,謝謝你們
.net

------------------------------------------------------------------code

點擊跳轉零基礎學python-目錄blog

 




版權聲明:本文爲博主原創文章,未經博主容許不得轉載。遊戲

相關文章
相關標籤/搜索