Python程序开发基础 课件 任务2 面向对象-设计人机猜拳游戏_第1页
Python程序开发基础 课件 任务2 面向对象-设计人机猜拳游戏_第2页
Python程序开发基础 课件 任务2 面向对象-设计人机猜拳游戏_第3页
Python程序开发基础 课件 任务2 面向对象-设计人机猜拳游戏_第4页
Python程序开发基础 课件 任务2 面向对象-设计人机猜拳游戏_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象-设计人机猜拳游戏任务描述

猜拳游戏又称“猜丁壳”,是一个古老、简单的游戏,常用来解决争议的情况。猜拳游戏有三种手势表示,即剪子、石头、布。游戏规则是:剪子胜布、石头胜剪子、布胜石头。

本任务是编写程序,实现人机猜拳游戏。要求采用面向对象的程序设计思想。俗话说“老猫房上睡,一辈传一辈”,这句话说出了自然界的继承关系。Python中类与类之间也同样具有继承关系。01单继承与多继承02方法重写03任务实现单继承与多继承01单继承Python中类与类之间具有继承关系,其中被继承的类称为父类或基类,继承的类称为子类或派生类。子类在继承父类时,会自动拥有父类中的方法和属性。单继承指的是子类只继承一个父类,其语法格式如下:class子类(父类)单继承定义一个表示两栖动物的父类Amphibian和一个表示青蛙的子类Frog。classAmphibian(object):name="两栖动物"deffeatures(self):print("幼年用鳃呼吸")print("成年用肺兼皮肤呼吸")classFrog(Amphibian):defattr(self):print(f"青蛙是{}")print("我会呱呱叫")frog=Frog()print()frog.features()frog.attr()多继承多继承指的是一个子类继承多个父类,其语法格式如下:class子类(父类A,父类B,...):定义English类、Math类与Student类,使Student类继承English类与Math类。classEnglish:defeng_know(self):print('具备英语知识。')classMath:defmath_know(self):print('具备数学知识。')classStudent(English,Math):defstudy(self):print('学生的任务是学习。')stu=Student()stu.eng_know()stu.math_know()stu.study()多继承classHorse(object):defrun(self):print("马儿奔跑")classDonkey(object):defrun(self):print("驴儿打滚")classMule(Horse,Donkey):passmule=Mule()mule.run()方法重写02方法的重写子类可以继承父类的属性和方法,若父类的方法不能满足子类的要求,子类可以重写父类的方法,以达到理想的需求。父类定义如下:classCat(Felines):name="猫"defspeciality(self):print(f'{}会抓老鼠')print(f'{}会爬树')子类定义如下:classFelines:defspeciality(self):print("猫科动物特长是爬树")方法的重写#父类定义如下classFelines:defspeciality(self):print("猫科动物特长是爬树")#子类定义如下classCat(Felines):name="猫"defspeciality(self):print(f'{}会抓老鼠')print(f'{}会爬树')cat=Cat()cat.speciality()运行结果是:猫会抓老鼠猫会爬树>>>从运行结果可以看到,子类Cat重写了父类Felines的父类的speciality()方法super()函数如果子类重写了父类的方法,但仍希望调用父类中的方法,那么可以使用super()函数实现。super()只能在子类中使用,用于调用父类中的方法。super().方法名()classFelines:defspeciality(self):print("猫科动物特长是爬树")classCat(Felines):name="猫"defspeciality(self):print(f'{}会抓老鼠')print(f'{}会爬树')cat=Cat()cat.speciality()super().speciality()任务实现03设计人机猜拳游戏

#设计人机猜拳游戏importrandomclassPlayer:def__init__(self):self.dict={0:'剪刀',1:'石头',2:'布'}#手势defgesture(self):player_input=int(input("请输入(0剪刀、1石头、2布:)"))returnself.dict[player_input]classAIPlayer(Player):play_data=[]defai_gesture(self):whileTrue:computer=random.randint(0,2)iflen(self.play_data)>=4:#获取玩家出拳的最大概率max_prob=max(self.play_data,key=self.play_data.count)ifmax_prob=='剪刀':return'石头'elifmax_prob=='石头':return'布'else:return'剪刀'else:returnself.dict[computer]设计人机猜拳游戏

classGame:defgame_judge(self):player=Player().gesture()AIPlayer().play_data.append(player)aiplayer=AIPlayer().ai_gesture()if(player=='剪刀'andaiplayer=='布')or\(player=='石头'andaiplayer=='剪刀')\or(player=='布'andaiplayer=='石头'):print(f"电脑出的手势是{aiplayer},恭喜,你赢了!")elif(player=='剪刀'andaiplayer=='剪刀')or\(player=='石头'andaiplayer=='石头')\or(player=='布'andaiplayer=='布'):print(f"电脑出的手势是{aiplayer},打成平局了!")else:print(f"电脑出的手势是{aiplayer},你输了,再接再厉!")defgame_start(self):self.game_judge()whileTrue:option=input("是否继续:y/n\n")ifoption=='y':self.game_judge()else:breakg=Game()g.game_start()任务总结俗话说“老鼠的儿子会打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论