手把手教你编写战斗类文字游戏---PYTHON

首先,写一个游戏你可以先从它的战斗系统开始。

在这教程中我们需引入''sys'',''random''模块

import sys
import random

之后就是要写玩家的战斗函数,以及它的体力值。

def fight(fight ,physical_strength):
    
    if fight == 1:
        return 10
    if fight ==2 and physical_strength<=3:
        physical_strength+=1
        
        return random.choice([20,30])#舍命一击
    if fight == 2 and physical_strength > 2:
       
        print('体力不足,你已力竭,无法舍命一击')
        
        return 1

在fight函数中,fight是攻击指令,由他来返回伤害的多少。而''physical_strength''则是体力值

当玩家输入的战斗指令为二时,它就会加一,当家到二时,玩家就没体力了,攻击自动变为1。

这里我们用''random''模块来随机暴击伤害。

像这样,当我们编写玩后,就要写防御函数了。

def fang(fang):
    if fang == 1:
        return 5    #普防
    if fang == 2:
        return random.choice([10,25])  #万防

这里 fang是其防御指令。当防御指令为2时用''random''这个模块来随机防御值。

当我们写完玩家的函数后,还要将人机的攻击函数写出来,而防御函数则可根据自己的要求来决定是否要写,这里人机和玩家共用一个防御函数''fang''。

人机的攻击模块可为


def fight2(fight ):
 
    if fight == 1:                  #敌人的攻击系统
        return 8
    if fight ==2 :
        return random.choice([16,26])#舍命一击

这里和''fight''函数类同,大家可以根据自己的需求决定是否添加体力条。

下面我们学要定义出人机和玩家的血量。

plyer= 100
emy = 100

player为玩家,emy为人机。

要将体力值应用到游戏中还需写出''体力条''和体力点。

cold = 0  #体力点
coldtime = 0 #体力条

接下来就是让玩家将攻击指令赋值,带入函数中了。

while True:
    p_f  = int(input('攻击>>'))
    pf = fight(p_f,cold)   #攻击值
    p_y = int(input('防御>>'))
    py = fang(p_y)    #防御值

    e_f = random.choice([1,2,2,2])
    ef  = fight2(e_f)  #敌人攻击值

  
    e_y = random.choice([1,2])
    ey = fang(e_y)   #敌人防御值

当然,不要忘了完善我们的体力环节了。

代码如:

if coldtime>10:
        coldtime = 0
        cold = 0

    if p_f == 2:
        coldtime+=0.5

    if p_f == 1:
        coldtime -=1.5
        print('以减少冷却:1.5,now:',coldtime)

       
        if coldtime <0:
            coldtime = 0
            print('冷却完毕')
            print('冷却值:',coldtime)

    
    if coldtime>0:
        cold+=1
    else:
        cold = 0

这里,当战斗指令为2,coldtime也就是我们的体力条就会增加,而当它增加时,cold(体力点)也会随之增加,将其带入''fight''函数中''physical_strength''就可以了。

这里如上代码中有两个坚守体力条方法:1.当体力条大于十时,自动清零。2.使用普攻,每次使用都会减少1.5的体力条。

当体力条大于零时,体力点也会随之增加1点,

相反,体力点为零。

---------------------------------------------------------------------------------------------------------------------------------

下面就是我们的判定环节了

if ey - pf > 0:
        em_now_blood = 0
        emy = emy+em_now_blood
    else:
        emy = emy+ey-pf
    
    if py - ef >0:
        now_blood = 0  #打完扣血为0
        plyer = plyer + now_blood
    else:
        plyer = plyer + py - ef                                

    if plyer <= 0:
            print('you are killed')
            for i in range(10):
                print('菜'*i)
            sys.exit()

    if emy <= 0:
        print('you win')
        sys.exit()

    if emy <=0 and plyer<=0:
        print('all died')
        for i in range(10):
            print('菜'*i)
        sys.exit()

    else:
        print(f'emy:{emy},you:{plyer}')
        print(f'敌人攻击:{ef},你的攻击:{pf}')   #基本数值打印
        print(f'敌人防御:{ey},你的防御:{py}')
        print(f'你的冷却值:{coldtime},-- {cold}')
    

为防止防御值大于攻击值而导致角色或人机无缘无故加血,我们要写一个判定:

if py - ef >0:
        now_blood = 0  #打完扣血为0
        plyer = plyer + now_blood
    else:
        plyer = plyer + py - ef                                

这样,我们打完是负攻击值就会被定义为零。

当死了或赢了后,不要忘记用''sys.exit()''退出程序。

这样我们的战斗系统就编辑好了,只要在前面添加战斗剧情就是一个游戏了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值