Python-面向对象-人与机器猜拳游戏-对一次拳累加一次输赢
人和机器猜拳游戏写成一个类,有如下几个函数:
1. 函数1: 选择角色 1 曹操 2 张飞 3 刘备
2. 函数2: 角色选择猜拳 1 剪刀 2 石头 3 布,玩家输入一个1-3的数字
3. 函数3: 电脑出拳, 随机产生1个1-3的数字,提示电脑出拳结果
4. 函数4: 角色和机器出拳对战, 对战结束后,最后出示本局对战结果赢/输,
然后提示用户是否继续? 按y继续,按n退出
5. 最后结束的时候输出结果 角色赢几局,电脑赢几局,平局几次。
思路分析:
类里封装所有的函数
因为后面角色赢几局,其他几个函数也要用,所以定义为实例变量
from random import randint,choice class Game: def __init__(self): self.xjs=None self.ping=0 self.win=0 self.fail=0 def xuanjiaose(self): dict = {'1': '曹操', '2': '张飞', '3': '刘备'} while True: js = input('请输入您要选择的角色') if js in ('1', '2', '3'): self.xjs = dict[js] print('您选择的角色是%s' % self.xjs) return else: continue def rcq(self): dict={'1':'剪刀','2':'石头','3':'布'} while True: cq = input('请输入您要选择的拳') if cq in('1','2','3'): self.cq=dict[cq] print('%s出的拳是%s'%(self.xjs,self.cq)) return self.rcq else: continue def dcq(self): dict={'1':'剪刀','2':'石头','3':'布'} list=['1','2','3'] cq=choice(list) dcq=dict[cq] print('电脑出的拳是%s'%dcq) return dcq def duizhan(self): self.xuanjiaose() while True: r=self.rcq() d=self.dcq() if r==d: print('平局') self.ping+=1 elif r=='剪刀' and d=='石头' or r=='石头' and d=='布' or r=='布' and d=='剪刀': print('%s输了'%self.xjs) self.fail+=1 else: print('%s赢了'%self.xjs) self.win+=1 xw=input('请问您还玩吗?') if xw=='yes': continue elif xw=='no': print('游戏中,平局%s,%s赢了%d次,%s输了%d次'%(self.ping,self.xjs,self.win,self.xjs,self.fail)) break a=Game() a.duizhan()