博客信息

Python基础之面向对象(回合制游戏)

发布时间:『 2019-06-27 00:54』  博客类别:Python  阅读(1061)

需求:

回合制游戏:

    大话西游、梦幻西游、魔塔...

 

    角色:

        Hero

            属性:

                名字、生命值、伤害值(浮动随机值)

            方法:

                攻击方法

 

        Boss

            属性:

                名字、生命值、伤害值(浮动)

            方法:

                攻击方法

 

实现思路伪代码:

    Hero

    Boss

    while True:

        if Hero.活着:

            Hero.攻击(Boss)

            if Boss.生命值 <= 0:

                print(“You Win”)

                break

        if Boss.没挂:

            Boss.反击(Hero)

             if Hero.生命值 <= 0:

                print(“Boss Win”)

                break

回合制游戏V1.0


import random
import time
class Hero():
    def __init__(self,name,hp,damage):
        self.name = name
        self.hp = hp
        self.damage = damage
    #英雄攻击boss的方法,boss做参数,传进来
    def attack_boss(self,boss):
        # 伤害值增加随机浮动伤害值
        rand_damge = random.randint(1,99)
        boss.hp -= (self.damage+rand_damge)
        print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"
              %(self.name,boss.name,self.damage+rand_damge,boss.hp))

class Boss():
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage

    # 英雄攻击boss的方法,boss做参数,传进来
    def attack_hero(self, hero):
        rand_damge = random.randint(1, 35)
        hero.hp -= (self.damage+rand_damge)
        print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"
              % (self.name, hero.name, self.damage+rand_damge, hero.hp))

count = 1
#创建英雄
hero1 = Hero('至尊宝',1000,20)
#创建Boss
boss1 = Boss('白晶晶',3000,5)
while True:
    print("------------------【round%d】-----------------"%count)
    if hero1.hp > 0:
        hero1.attack_boss(boss1)
        if boss1.hp <= 0:
            print("至尊宝获胜")
            break
    if boss1.hp > 0:
        boss1.attack_hero(hero1)
        if hero1.hp <= 0:
            print("晶晶获胜")
            break
    count += 1
    time.sleep(0.8)
    print('\n'*5)

 

 

控制台截图


小李飞刀_Python


回合制游戏V1.1 (增加暴击)

 

v1.1

    新增功能:

        1.暴击伤害

            概率性的暴击

            伤害值*2

            暴击伤害打印的突出(颜色,字体加粗)

 

这里定的暴击伤害的出现概率是20%

import random
import time
class Hero():
    def __init__(self,name,hp,damage):
        self.name = name
        self.hp = hp
        self.damage = damage
    #英雄攻击boss的方法,boss做参数,传进来
    def attack_boss(self,boss):

        rand_num = random.randint(1,10)
        if rand_num == 1 or rand_num == 2:
            #调用暴击伤害
            self.attack2_boss(boss)
        else:
            #调用普通伤害
            self.attack1_boss(boss)
    #普通伤害
    def attack1_boss(self,boss):
        # 伤害值增加随机浮动伤害值
        rand_damge = random.randint(1, 99)
        boss.hp -= (self.damage + rand_damge)
        print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"
              % (self.name, boss.name, self.damage + rand_damge, boss.hp))
    #暴击伤害
    def attack2_boss(self,boss):
        # 伤害值增加随机浮动伤害值
        rand_damge = random.randint(1, 99)
        boss.hp -= (self.damage + rand_damge)*2
        print("英雄:%s 攻击Boss:%s \033[1;31m暴击伤害值:%d\033[0m Boss剩余生命值:%d"
              % (self.name, boss.name, (self.damage + rand_damge)*2, boss.hp))
    #技能伤害
    # def attack3_boss(self,boss):
    #     pass

class Boss():
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage

    # 英雄攻击boss的方法,boss做参数,传进来
    def attack_hero(self, hero):
        rand_damge = random.randint(1, 35)
        hero.hp -= (self.damage+rand_damge)
        print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"
              % (self.name, hero.name, self.damage+rand_damge, hero.hp))

count = 1
#创建英雄
hero1 = Hero('至尊宝',1000,20)
#创建Boss
boss1 = Boss('白晶晶',3000,5)
while True:
    print("------------------【round%d】-----------------"%count)
    if hero1.hp > 0:
        hero1.attack_boss(boss1)
        if boss1.hp <= 0:
            print("至尊宝获胜")
            break
    if boss1.hp > 0:
        boss1.attack_hero(hero1)
        if hero1.hp <= 0:
            print("晶晶获胜")
            break
    count += 1
    time.sleep(0.8)
    print('\n'*5)


控制台截图


小李飞刀_Python


回合制游戏V1.2 (增加技能攻击)

v1.2

    新增功能:

        1.技能伤害

            封装技能类

                属性:

                    技能名

                    伤害值

2. 英雄创建的时候,需要直接给与技能

 

这里定的技能攻击伤害值为300,出现概率为10%

import random
import time
class Hero():
    def __init__(self,name,hp,damage,skillQ):
        self.name = name
        self.hp = hp
        self.damage = damage
        self.skillQ = skillQ
    #英雄攻击boss的方法,boss做参数,传进来
    def attack_boss(self,boss):

        rand_num = random.randint(1,10)
        if rand_num == 1 or rand_num == 2:
            #调用暴击伤害
            self.attack2_boss(boss)
        elif rand_num == 3:
            #调用技能伤害
            self.attack3_boss(boss)
        else:
            #调用普通伤害
            self.attack1_boss(boss)
    #普通伤害
    def attack1_boss(self,boss):
        # 伤害值增加随机浮动伤害值
        rand_damge = random.randint(1, 99)
        boss.hp -= (self.damage + rand_damge)
        print("英雄:%s 攻击Boss:%s 伤害值:%d Boss剩余生命值:%d"
              % (self.name, boss.name, self.damage + rand_damge, boss.hp))
    #暴击伤害
    def attack2_boss(self,boss):
        # 伤害值增加随机浮动伤害值
        rand_damge = random.randint(1, 99)
        boss.hp -= (self.damage + rand_damge)*2
        print("英雄:%s 攻击Boss:%s \033[1;31m暴击伤害值:%d\033[0m Boss剩余生命值:%d"
              % (self.name, boss.name, (self.damage + rand_damge)*2, boss.hp))
    #技能伤害
    def attack3_boss(self,boss):
        boss.hp -= self.skillQ.skillDamage
        print("英雄:%s 攻击Boss:%s \033[1;34m技能伤害值:%d\033[0m Boss剩余生命值:%d"
              % (self.name, boss.name, self.skillQ.skillDamage, boss.hp))

class Boss():
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage

    # 英雄攻击boss的方法,boss做参数,传进来
    def attack_hero(self, hero):
        rand_damge = random.randint(1, 50)
        hero.hp -= (self.damage+rand_damge)
        print("Boss:%s 攻击英雄:%s 伤害值:%d 英雄剩余生命值:%d"
              % (self.name, hero.name, self.damage+rand_damge, hero.hp))
#创建技能类
class Skill():
    def __init__(self,skillName,skillDamage):
        self.skillName = skillName
        self.skillDamage = skillDamage

count = 1

#创建技能对象
skillQ = Skill('当头一棒',300)
#创建英雄
hero1 = Hero('至尊宝',1000,20,skillQ)
#创建Boss
boss1 = Boss('白晶晶',3000,5)
while True:
    print("------------------【round%d】-----------------"%count)
    if hero1.hp > 0:
        hero1.attack_boss(boss1)
        if boss1.hp <= 0:
            print("至尊宝获胜")
            break
    if boss1.hp > 0:
        boss1.attack_hero(hero1)
        if hero1.hp <= 0:
            print("晶晶获胜")
            break
    count += 1
    time.sleep(0.8)
    print('\n'*5)


控制台截图


小李飞刀_Python



over......


关键字:     Python基础       面向对象  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有