剪刀、石頭、布;這個游戲的主要目的為了解決爭議,因為三者相互制約,因此不論平局幾次,總會有勝負的時候,游戲規則中,石頭克剪刀,剪刀克布,布克石頭,
程式設計:
用戶輸入,機器隨機出拳,系統判斷勝負;用戶按q或Q退出機制;輸入要求限制;五局三勝制;未分出勝負繼續比,直到分出勝負程式自行退出;統計雙方對戰情況,
import random
tip = "請輸入一個數字,剪刀:1、石頭:2、布:3 q或Q(表示退出游戲)\n"
results = {1:'剪刀',2:'石頭',3:'布'}
bout,total_bount = 0,5 #回合計數,總的回合計數默認5局
computer_win,mine_win,same_win = 0,0,0 #電腦贏得回合計數,我贏的回合計數
each_winner,winner = '','' #每一回合的勝利者,最終勝利者
while (bout < total_bount): #5個回合,五局三勝
bout += 1 #每玩一次回合計數增加1
input_str = input(tip) #接受用戶輸入
if input_str in ['q',"Q"] or (input_str.isdigit() and int(input_str) not in [1,2,3]): #按鍵q|Q則退出,不是數字或不在1-3范圍的都退出
print('不按規則出拳,取消參賽資格,成績作廢!')
break
mine = int(input_str) #輸入內容轉換
computer = random.randint(1,3) #電腦亂數
if (computer - mine == -1) or (computer - mine == 2):#我贏的情況
res = "我"
mine_win += 1
if (mine - computer == -1) or (mine - computer == 2):#電腦贏的情況
res = "電腦"
computer_win += 1
if computer == mine : #平局
res = '平局'
same_win += 1
print("第%d回合->電腦:%s,我:%s,本局勝者:%s\n"%(bout,results[computer],results[mine],res)) #回合戰果輸出
if(computer_win >= 3): #判斷是否電腦贏
winner = "電腦"
break
elif(mine_win >= 3): #判斷是否我贏
winner = "我"
break
else:
if(bout == total_bount):#最后一局還沒有分出勝負,則增加一局
total_bount += 1
print('游戲結束,本場游戲總共%s回合,電腦勝%s回合,我勝%s回合,平局%s,最終勝利者是:%s'%(total_bount,computer_win,mine_win,same_win,winner))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294563.html
標籤:其他
上一篇:牛客第十場 題解
下一篇:C++實作打飛機與彈球游戲
