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

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

什么是面向对象

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

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

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

import time #导入time库
class NPC:
    #声明了一个游戏NPC的类,用于封装NPC的属性和方法
    def __init__(self, se, hp): #初始化数据,相当于初始化对象的属性,se为武力值,hp为血量
        self.se = se
        self.hp = hp
    
    def beat(self): 
        return self.se

    def upexp(self): 
        self.se = self.se + 2
    
    def 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')
                        return
                else:
                    print('boss已经被消灭,恭喜英雄!')
                    return        
            else:
                hero.uphp() #升级血量

        boss.hp -= hero.beat()
        print('英雄攻击,boss血量还剩下%s'%boss.hp)
        if boss.hp <= 0:
            print('boss血量小于0,已经被消灭')
            break
            
        time.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=5
    print('英雄已经诞生,武力值为%s,血量为%s' %(hero.se, hero.hp))
    time.sleep(1)
    boss = NPC(2,10) #创建了另一个NPC对象,并赋值给变量boss,其中se=2,hp=10
    yn_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,打怪游戏实例升级版icon-default.png?t=M5H6https://www.x1y1z1.com/python/pyoop.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值