面向對象寫的小遊戲,歡迎玩耍

面向對象寫的小遊戲

歡迎玩耍

class Omnicience:
    camp = 'Omniscience'

    def __init__(self,
                 name,
                 atk=100,
                 hp=1000,
                 mp=500,
                 power=500,
                 lever=1,
                 atk_growth=2.0,
                 hp_growth=1.9,
                 mp_growth=1.2,
                 power_growth=1.3,
                 money=1000
                 ):
        self.name = name
        self.atk = atk * atk_growth ** lever
        self.hp = hp * hp_growth ** lever
        self.mp = mp * mp_growth ** lever
        self.power = power * power_growth ** lever
        self.lever = lever
        self.money = money

    def attack(self, enemy):  # 普通攻擊技能,enemy是敵人;
        damage_value = self.atk - enemy.power*0.05  # 根據本身的攻擊力,攻擊敵人就減掉敵人的生命值。
        enemy.hp -= damage_value

    def Sword(self, enemy):
        self.mp -= 200
        enemy.hp -= 300 * self.lever


class Offscum:
    camp = 'offscum'

    def __init__(self,
                 name,
                 atk=100,
                 hp=1000,
                 mp=500,
                 power=500,
                 lever=1,
                 atk_growth=1.3,
                 hp_growth=1.6,
                 mp_growth=1.2,
                 power_growth=2.0,
                 money=1000
                 ):
        self.name = name
        self.atk = atk * atk_growth ** lever
        self.hp = hp * hp_growth ** lever
        self.mp = mp * mp_growth ** lever
        self.power = power * power_growth ** lever
        self.lever = lever
        self.money = money

    def attack(self, enemy):  # 普通攻擊技能,enemy是敵人;
        damage_value = self.atk - enemy.power*0.05  # 根據本身的攻擊力,攻擊敵人就減掉敵人的生命值。
        enemy.hp -= damage_value

    def xianglong_zhang(self, enemy):
        self.mp -= 200
        enemy.hp -= 200 * self.lever


class Critters:
    camp = 'Critters'
    def __init__(self,
                 name,
                 atk=10,
                 hp=100,
                 mp=50,
                 power=50,
                 lever=1,
                 atk_growth=1.3,
                 hp_growth=1.6,
                 mp_growth=1.2,
                 power_growth=2.0,
                 money=100):
        self.name = name
        self.atk = atk * atk_growth ** lever
        self.hp = hp * hp_growth ** lever
        self.mp = mp * mp_growth ** lever
        self.power = power * power_growth ** lever
        self.lever = lever
        self.money = money

    def attack(self, enemy):  # 普通攻擊技能,enemy是敵人;
        damage_value = self.atk - enemy.power  # 根據本身的攻擊力,攻擊敵人就減掉敵人的生命值。
        enemy.hp -= damage_value

    def xianglong_zhang(self, enemy):
        self.mp -= 20
        enemy.hp -= 20 * self.lever


class Dagger:
    def __init__(self, name='dagger', price=475, atk=9, hp=100, lever=10):
        self.name = name
        self.price = price
        self.atk = atk
        self.hp = hp
        self.lever = lever

    def update(self, obj):
        if obj.lever >= self.lever and obj.money >= self.price:
            obj.money -= self.price  # 減錢
            obj.atk += self.atk  # 加攻擊
            obj.hp += self.hp  # 加生命值

import random
import time
p_1 = Omnicience('ywy')
boos = Offscum('wq',lever=random.randint(1,10))
npc = Critters('nick')
equipment = Dagger()


while True:
    print(f'name:{p_1.name}')
    print(f'lever:{p_1.lever}')
    print(f'money:{p_1.money}')
    print(f'hp:{p_1.hp}')
    print(f'mp:{p_1.mp}')
    print(f'atk:{p_1.atk}')
    print(f'power:{p_1.power}')
    print('旅行中..........')
    time.sleep(random.random()*10)
    meet = random.choice(('boos', 'npc', 'equipment'))
    if meet == 'boos':
        print('BOOS出現了')
        print(f'name:{boos.name}')
        print(f'lever:{boos.lever}')
        print(f'money:{boos.money}')
        print(f'hp:{boos.hp}')
        print(f'mp:{boos.mp}')
        print(f'atk:{boos.atk}')
        print(f'power:{boos.power}')
        while boos.hp > 0 and p_1.hp > 0:
            print('請選擇')
            p_1_chiose = input('普通攻擊,六脈神劍\n')
            if p_1_chiose == '普通攻擊':
                p_1.attack(boos)
                print(f'{p_1.name}使用了{p_1_chiose}攻擊了boos')
                print(f'boos剩餘{boos.hp}hp')
                boos_chiose = random.choice(('普通攻擊','降龍十八掌'))
                print(boos_chiose)
                if boos.hp <= 0:
                    print('boos臨死也不放過你')
                if boos_chiose == '普通攻擊':
                    boos.attack(p_1)
                    print(f'{boos.name}使用了{boos_chiose}攻擊了{p_1.name}')
                    print(f'你剩餘{p_1.hp}hp')
                elif boos_chiose == '降龍十八掌':
                    if boos.mp >= 200:
                        boos.xianglong_zhang(p_1)
                        print(f'{boos.name}使用了{boos_chiose}攻擊了{p_1.name}')
                        print(f'你剩餘{p_1.hp}hp')
                    else:
                        print(f'傻子boos{boos.name}沒有藍無法使用{boos_chiose}你躲過一劫')
                        print(f'你剩餘{p_1.hp}hp')
            elif p_1_chiose == '六脈神劍':
                if p_1.mp >= 200:
                    p_1.Sword(boos)
                    print(f'boos剩餘{boos.hp}hp')
                    if boos.hp <= 0:
                        print('boos臨死也不放過你')
                    boos_chiose = random.choice(('普通攻擊','降龍十八掌'))
                    if boos_chiose == '普通攻擊':
                        boos.attack(p_1)
                        print(f'{boos.name}使用了{boos_chiose}攻擊了{p_1.name}')
                        print(f'你剩餘{p_1.hp}hp')
                    elif boos_chiose == '降龍十八掌':
                        if boos.mp >= 200:
                            boos.xianglong_zhang(p_1)
                            print(f'{boos.name}使用了{boos_chiose}攻擊了{p_1.name}')
                            print(f'你剩餘{p_1.hp}hp')
                        else:
                            print(f'傻子boos{boos.name}沒有藍無法使用{boos_chiose}你躲過一劫')
                            print(f'你剩餘{p_1.hp}hp')
                else:
                    print('藍不夠')
                    continue
        if p_1.hp <= 0 and boos.hp <= 0:
            print('你和boos玉石俱焚了')
            break
        elif p_1.hp <= 0:
            print('你死了boos贏了')
            break
        elif boos.hp <= 0:
            print('恭喜你經過了')
            break
    if meet == 'npc':
        print('npc出現了')
        print(f'name:{npc.name}')
        print(f'lever:{npc.lever}')
        print(f'money:{npc.money}')
        print(f'hp:{npc.hp}')
        print(f'mp:{npc.mp}')
        print(f'atk:{npc.atk}')
        print(f'power:{npc.power}')
        while npc.hp > 0 and p_1.hp > 0:
            print('請選擇')
            p_1_chiose = input('普通攻擊,六脈神劍\n')
            if p_1_chiose == '普通攻擊':
                p_1.attack(npc)
                print(f'{p_1.name}使用了{p_1_chiose}攻擊了npc')
                print(f'npc剩餘{npc.hp}hp')
                if npc.hp <=0:
                    print('nike臨死也不放過你')

                npc_chiose = random.choice(('普通攻擊','鯉魚打滾'))
                if npc_chiose == '普通攻擊':
                    npc.attack(p_1)
                    print(f'{npc.name}使用了{npc_chiose}攻擊了{p_1.name}')
                    print(f'你剩餘{p_1.hp}hp')
                elif npc_chiose == '鯉魚打滾':
                    if npc.mp >= 200:
                        npc.xianglong_zhang(p_1)
                        print(f'{npc.name}使用了{npc_chiose}攻擊了{p_1.name}')
                        print(f'你剩餘{p_1.hp}hp')
                    else:
                        print(f'傻子npc{npc.name}沒有藍無法使用{npc_chiose}你躲過一劫')
                        print(f'你剩餘{p_1.hp}hp')
            elif p_1_chiose == '六脈神劍':
                if p_1.mp >= 200:
                    p_1.Sword(npc)
                    print(f'npc剩餘{npc.hp}hp')
                    if npc.hp <= 0:
                        print('nike臨死也不放過你')
                    npc_chiose = random.choice(('普通攻擊','鯉魚打滾'))
                    if npc_chiose == '普通攻擊':
                        npc.attack(p_1)
                        print(f'{npc}使用了{npc_chiose}攻擊了{p_1.name}')
                        print(f'你剩餘{p_1.hp}hp')
                    if npc_chiose == '鯉魚打滾':
                        if npc.mp >= 200:
                            npc.xianglong_zhang(p_1)
                            print(f'{npc}使用了{npc_chiose}攻擊了{p_1.name}')
                            print(f'你剩餘{p_1.hp}hp')
                        else:
                            print(f'傻子npc{npc.name}沒有藍無法使用{npc_chiose}你躲過一劫')
                            print(f'你剩餘{p_1.hp}hp')
                else:
                    print('藍不夠')
                    continue
        if p_1.hp <= 0 and npc.hp <= 0:
            print('你和npc玉石俱焚了')
            break
        elif p_1.hp <= 0:
            print('你死了npc贏了')
            break
        elif npc.hp <= 0:
            print('你打死了npc')
            print('升級1級')
            p_1.lever += 1
            npc.lever = random.randint(1,100)
            p_1 = Omnicience('ywy',lever=p_1.lever)
            npc = Critters('nick',lever=npc.lever)
    elif meet == 'equipment':
        if p_1.lever >= equipment.lever and p_1.money >= equipment.price:
            print('碰到裝備裝備成功')
        else:
            print('等級不夠或者錢不夠你與裝備有緣無分')
相關文章
相關標籤/搜索