为了能够让大家充分理解什么是面向对象,在上一章节中,我们特地讲解了python的面向过程,并用python并不擅长的面向过程的编程思想简单设计了一个打怪游戏实例。这一节,我们将正式地来介绍Python的面向对象的编程思想OOP,并将上一节中设计的打怪游戏的实例代码进行面向对象地重新设计编写。

什么是面向对象

面向对象:可以通俗的理解为“直接用某一个具体的事物来进行编程!比如让人换个衣服,让人吃饭,或者让动物飞翔等等”。当然了,这样定义可能不是很正确,但个人认为这样更有助于理解面向对象。

好了,下面我们将通过升级上一章节python面向过程的编程思想,打怪游戏实例中的打怪游戏实例代码,变为面向对象的方法模式,同时优化了一些程序逻辑。

python面向对象打怪游戏程序设计实例

import time #导入time库
class NPC:#声明了一个游戏NPC的类,用于封装NPC的属性和方法def __init__(self, se, hp): #初始化数据,相当于初始化对象的属性,se为武力值,hp为血量self.se = seself.hp = hpdef beat(self): return self.sedef upexp(self): self.se = self.se + 2def uphp(self): self.hp = 5#上面的类,就相当于游戏中的人物模型,有了这样的人物模型,接下来,我们就可以直接通过python的面向对象对人物直接进行编程。def fire(hero, boss):while hero.hp > 0 and boss.hp > 0:if hero.hp <= 2:print('英雄,你的血量为%s'%hero.hp)uphp_inp = input('英雄是否要先撤退补充血量(y/n)?')if uphp_inp == 'n':boss.hp = boss.hp - hero.beat()print('英雄攻击,boss的血量还剩下%s'%boss.hp)if boss.hp > 0:time.sleep(1)hero.hp -= boss.beat() #和上面boss.hp的式子一样print('boss攻击,英雄的血量还剩下%s' %hero.hp)if hero.hp <= 0:print('英雄血量小于0,game over')returnelse:print('boss已经被消灭,恭喜英雄!')return        else:hero.uphp() #升级血量boss.hp -= hero.beat()print('英雄攻击,boss血量还剩下%s'%boss.hp)if boss.hp <= 0:print('boss血量小于0,已经被消灭')breaktime.sleep(1)hero.hp -= boss.beat()print('boss攻击,英雄血量还剩下%s'%hero.hp)if hero.hp <= 0:print('英雄血量过低,game over')            time.sleep(1)#游戏的主函数
def mian():print('欢迎来到大器编程x1y1z1.com的python面向对象的打怪游戏实例!')time.sleep(1)print('英雄正在创建...')time.sleep(1)hero = NPC(1,5) #创建一个NPC对象,并赋值给变量hero,其中se=1,hp=5print('英雄已经诞生,武力值为%s,血量为%s' %(hero.se, hero.hp))time.sleep(1)boss = NPC(2,10) #创建了另一个NPC对象,并赋值给变量boss,其中se=2,hp=10yn_inp = input('boss挥舞着棒槌步步紧逼,英雄是否决定迎战(y/n):')if yn_inp == 'n':print('英雄与世无争,退隐江湖!游戏退出!')return else:print('boss的武力值为%s,血量为%s' %(boss.se, boss.hp))time.sleep(1)upexp_inp = input('英雄是否要升级武力值(y/n):')if upexp_inp == 'n':fire(hero, boss)else:upexp_inp = input('升级武力值之前,需要先回答问题,请问1+1=?:')while upexp_inp != '2':upexp_inp = input('回答错误,请问1+1=?:')hero.upexp()fire(hero, boss)#一定要记得调用主函数main(),否则程序无法执行。
mian()

更多python面向对象的打怪游戏代码的解析以及面向对象的内容,可以参考下面内容:

python的面向对象OOP,打怪游戏实例升级版https://www.x1y1z1.com/python/pyoop.html

用打怪游戏实例升级版,理解python面向对象相关推荐

  1. 用打怪游戏实例,深度理解python面向过程

    python更其他的大多数计算机语言更擅长的是面向对象的编程,在理解面向对象之前,有必要先了解或理解一下什么是面向过程. 简而言之,面向过程就是根据现实中的需求,将所要解决的问题分解成步骤,然后用函数 ...

  2. 深入理解python面向对象_转:Python3 面向对象,较为深入的两个理解

    一, 1. 类的声明和创建 对于 Python 函数来说,声明与定义类没什么区别,因为他们是同时进行的,定义(类体)紧跟在声明(含 class 关键字的头行[header line])和可选(但总是推 ...

  3. 如何理解Python 面向对象编程思想

    Python 面向对象编程思想 1. 宽泛的面向对象的概念 举例说明 面向过程:做一件事情,从头到尾,每一个细节都要关注,重点在于过程 面向对象:做一件事情,用对象去做,不关心细节和过程,万物皆对象 ...

  4. 理解 Python 面向对象

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中 ...

  5. python面向对象编程实例爬虫_​Python面向对象编程⑭

    14)函数参数注解 你写好了一个函数,然后想为这个函数的参数增加一些额外的信息(每个参数的类型),这样的话其他调用者就能清楚的知道这个函数应该怎么使用. 解决方案:使用函数参数注解是一个很好的办法,它 ...

  6. python面向对象三大特性_深入理解Python面向对象的三大特性

    在面向对象程序设计中,对象可以看做是数据(特性)以及由一系列可以存取.操作这些数据的方法所组成的集合.编写代码时,我们可以将所有功能都写在一个文件里,这样也是可行的,但是这样不利于代码的维护,你总不希 ...

  7. 从一个“信用卡”类理解python面向对象编程的核心概念

    以下类的代码来自:Data structures and algorithms in python第二章 实例: 信用卡 CreditCard: 识别信息 - Customer, Bank, Acco ...

  8. python self理解_Python面向对象总结,让你快速掌握面向对象常用的用法

    python等面向对象的提出是为了更好的处理和管理同属一个类别的事情,这样就可以省去多余重复的基础代码,让程序变得更加简洁和强大.对于学习编程的朋友来说,熟悉掌握面向对象是非常重要的. 下面开始讲讲关 ...

  9. python扫雷的代码及原理_基于Python实现的扫雷游戏实例代码

    摘要:这篇Python开发技术栏目下的"基于Python实现的扫雷游戏实例代码",介绍的技术点是"Python实现.Python.实例代码.扫雷游戏.扫雷.游戏" ...

最新文章

  1. 批量修改图片以及加水印
  2. 求3*4数组的全部元素之和
  3. 网站响应慢的原因分析
  4. “裁员” + 滤镜 = “毕业”
  5. JavaScript Notes
  6. 极度舒适的 Python 入门教程,佩奇也能学会~
  7. 网友提问:关于CX_VSI_SYSTEM_ERROR异常,Fiori病毒扫描参数文件
  8. python中int是什么的缩写_python中int是什么类型
  9. 荣耀赵明评苹果发布会掉队5G:意料之中 情理之外
  10. 参考ethtool写了个Linux设置、获取网卡模式的接口
  11. Maven学习总结(23)——Maven常用命令介绍
  12. 无向图的邻接表表示法 及 深搜遍历DFS
  13. ETL调度工具 Taskctl 作业(组)节点类型概述
  14. 还不知道IEEE、ACM、SCI、EI、nature、期刊、会议论文之间的关系?一幅关系图搞定~
  15. lae界面开发工具入门之介绍九--lua脚本组件篇
  16. ARTS-17(富爸爸穷爸爸)
  17. get_sequencer的用法总结
  18. python之并发编程-进程之间的通信
  19. 人工智能会取代艺术家?
  20. Java的三大版本和JDK,JRE,JVM的概念

热门文章

  1. VS中创建MFC界面人脸识别门禁系统(人脸识别+串口通讯+单片机STM32F407)
  2. STL——queue、priority_queue、deque
  3. 【C语言】排序算法之冒泡排序
  4. JAVA毕设项目酒店订房系统(java+VUE+Mybatis+Maven+Mysql)
  5. 计算机内存,硬盘(硬盘平均寻道时间 )和cpu的作用,HD Tune平均读写/寻道时间对比_硬盘_内存硬盘评测-中关村在线...
  6. 阅读小课堂:【程序员职场关系商】 关系基本盘、破冰式求助、 点头之交的中立同事本质、 盟友、 和你的领导互通信号(好的上下级关系、 什么样的领导不值得跟、 职场的竞争不是战场而是秀场即开放性竞争)
  7. CSS 属性计算过程
  8. java获取中国城市代码 中国城市ID
  9. 已知长方体相邻三个面的面积,求长方形的周长(数学公式)
  10. jav获取本地图片上传到数据库中