Python程式設計:人機大戰之劃拳遊戲
題目:
- 用面向對象的思想
-
玩家猜拳:1 剪刀 2 石頭 3 布 玩家輸入一個1-3的數字
電腦出拳:随機産生一個1-3的數字,提示電腦出拳結果
本局對戰結束,輸出誰赢,是否繼續
- 輸出結果:玩家赢幾局 電腦赢幾局 平局幾次 遊戲結束
代碼:
import random
#定義一個人類
class person():
def play(self):
while True: #做一個死循環,直到選擇正确為止
finger = input("請輸入要出拳的選項:\n1---石頭 2---剪刀 3---布\n")
if finger.isdigit(): #isdigit() 方法檢測字元串是否隻由數字組成
finger = int(finger) #将input預設輸入的為字元類型,将它轉化為數字類型
if finger == 1: #用if判斷玩家的出拳
print("[玩家]選擇出---石頭") #輸出玩家的出拳
break #選擇正确時,結束死循環
elif finger == 2:
print("[玩家]選擇出---剪刀")
break
elif finger == 3:
print("[玩家]選擇出--- 布 ")
break
else:
print("輸入數字有誤!請重新輸入---")
else:
print("輸入選項有誤!請輸入數字---")
return finger #傳回玩家的出拳
#定義一個電腦類
class computer():
def stochastic(self):
random_number = random.randint(1,3) #用random.randint(1,3)産生一個1到3的随機整數
if random_number == 1: #用if判斷電腦的出拳
print("[電腦]選擇出---石頭") #輸出電腦的出拳
elif random_number == 2:
print("[電腦]選擇出---剪刀")
else:
print("[電腦]選擇出--- 布 ")
return random_number #傳回電腦的出拳
#定義一個過程類
class process():
print("---------------人機大戰---------------\n")
case1 = 0 #case1表示玩家勝利的次數
case2 = 0 #case2表示平局的次數
case3 = 0 #case1表示電腦勝利的次數
def _init_(self):
person_object = person() #person類 對象
computer_object = computer() #computer類 對象
while True: #做一個死循環,一直進行遊戲,直到玩家想要結束遊戲
person_result = person_object.play() #用person_result接受玩家的出拳
computer_result = computer_object.stochastic() #用computer_result接受電腦的出拳
#1:石頭,2:剪刀,3:布,比較結果,判斷此次遊戲誰赢
if person_result == 1 and computer_result == 2 or \
person_result == 2 and computer_result == 3 or \
person_result == 3 and computer_result == 1:
print("------------------------玩家赢!")
self.case1 += 1 #此時玩家勝利的次數case1+1
elif person_result == computer_result:
print("------------------------ 平局! ")
self.case2 += 1 #此時平局的次數case2+1
else:
print("------------------------電腦赢!")
self.case3 += 1 #此時電腦勝利的次數case3+1
if input("是否繼續遊戲:yes or no ?\n按任意鍵繼續,輸入n或者N結束遊戲\n").lower()=="n": #接收輸入,玩家是否想要繼續遊戲,将接收的輸入轉化為小寫,和'n'進行比較,如果等于結束遊戲,反之繼續
break
if self.case1 > self.case3: #玩家選擇結束遊戲之後,對之前所有的戰局進行統計對比,判斷誰赢
result = "玩家勝利!"
elif self.case1 == self.case3:
result = "平局"
else:
result = "電腦勝利"
print("---------------人機大戰---------------\n遊戲結束:\n"
"玩家共赢{0}次---電腦共赢{1}次---平局次數{2}次\n---總結果為:{3}"\
.format(self.case1,self.case3,self.case2,result)) #輸出整個遊戲的結束,其中\在Python語言中表示一行未結束,下一行緊跟上一行,相當于一行
#主函數,開始遊戲
game_object = process()._init_()