1. 程式人生 > >python類與物件小練習2

python類與物件小練習2

#人和機器猜拳遊戲
#選擇角色1 曹操 2張飛 3 劉備
#角色猜拳1剪刀 2石頭 3布 隨便輸入一個字元隨機產生一個1-3的數字
#電腦出拳 隨機產生1個1-3的數字,提示電腦出拳結果,本局對戰結果...贏...輸,是否繼續?y/n
#輸出結果 角色贏幾局 電腦贏幾局,平局幾次 遊戲結束
import random
#寫法------2

class ren():
    nam=""
    def __init__(self,name):  #name引數=(zidian[inp])
        self.nam=name         #建立nam屬性
    def caiquan(self):             #ren方法
       return random.randint(1,3)   #返回生成隨機數


class zongju():
    jieguo1=0    #建立3個類屬性
    jieguo2=0
    jieguo3=0

    def  __init__(self):                               #自動執行方法
        zidian1={1:"剪刀",2:"石頭",3:"布"}
        wanjia=self.fff()                          #呼叫物件fff方法 建立一個ren類物件
        diannao = ren("電腦")                      #建立一個ren類物件
        while 1 :

                input("請輸入任意健進行猜拳------")
                wan=wanjia.caiquan()         #建立變數呼叫物件的caiquan方法
                dian=diannao.caiquan()        #...呼叫隨機方法
                if wan==1 and dian==2 or wan==2 and dian==3 or wan==3 and dian==1:
                    print("電腦勝\n{0}---------{1}\n電腦---------{2}:"\
                          .format(wanjia.nam,zidian1[wan],zidian1[dian]))    #用健去取值
                    self.jieguo1+=1                                           #物件屬性值
                elif  wan==dian :
                    print("雙方平局\n{0}---------{1}\n電腦---------{2}:"\
                          .format(wanjia.nam,zidian1[wan],zidian1[dian]))
                    self.jieguo2+=1
                else:
                    print("{0}勝\n{0}---------{1}\n電腦---------{2}:"\
                          .format(wanjia.nam,zidian1[wan],zidian1[dian]))
                    self.jieguo3+=1
                if input("是否繼續? yes任意鍵---n退出")=="n":

                    break
        print("----------------玩家vs電腦--------------\n比賽總結果為:\n電腦勝-----{0}\n玩家勝-----{1}"
              "\n平局為-----{2}".format(self.jieguo1,self.jieguo3,self.jieguo2))
        if self.jieguo1>self.jieguo3:
            print("總比分為----電腦勝!")
        elif self.jieguo1<self.jieguo3:
            print("總比分為----玩家勝!")
        else:
            print("總比分為----雙方平局!")
    def  fff(self):
        zidian = {1: "曹操", 2: "張飛", 3: "劉備"}
        print("--------------人機猜拳遊戲-----------------")

        while 1:
            inp=input("請選擇角色\n1: 曹操 2: 張飛 3: 劉備")
            if inp.isdigit():
                inp=int(inp)
                if inp in zidian:
                    mingzi=ren(zidian[inp]) #引數給了類中初始化方法           #建立一個ren類物件
                    print("您選擇的角色是:",mingzi.nam)   #輸出物件屬性
                    return mingzi                            #返回物件
                else:
                    print("人物選擇錯誤!請從新選擇")

            else:
                print("輸入有誤請從新輸入")

zongju() # 自動建立zongju類物件  執行物件