角色角色扮演统计生成

2024-04-26 10:54:32 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我最近一直在做一个python rpg游戏,我遇到了一个用我目前的python技能很难解决的问题,作为背景,我面临的问题是我游戏的关卡函数,它用来生成敌人,我游戏中的每个敌人都有如下属性:健康、力量、魔法,速度、防御和逻辑(魔法防御),它们也有一个类,比如说我们正在生成一个75级的忍者敌人

忍者职业的成长率:生命上限60%,力量上限40%,魔法上限15%,速度上限60%,防御上限30%,逻辑上限20%

为了生成敌人的统计信息: 我会循环75次,因为这是忍者的水平,每次我循环,我会运行增长率和增长率机会,如果它返回真的,那么我在该统计中添加1,例如:

array indexs [MaxHP, Strength, Magic, Speed, Defense, Logic]\
Level 1 iteration: [1, 1, 0, 0, 0, 1]
Level 2 iteration: [2, 1, 0, 1, 1, 1]
Level 3 iteration: [2, 2, 0, 2, 1, 1]
Level 4 iteration: [3, 2, 0, 3, 1, 1]
the algorithm would do this 75 times

正如你所见,统计数据慢慢开始反映增长率,因为忍者最终会在最大生命值、力量和速度方面有更好的统计数据

现在的问题是,这个算法在多人游戏中不断运行,在我的小树莓pi上,我想问的是,是否有更有效的方法来生成敌人,因为现在要生成一个75级忍者,我需要运行rng 75*6=450次,这不是非常有效的

这是算法的代码

def generate_enemy(name,level):
    #used the 0 at the start as placement for the message id
    weapon_type = random.choice(list(class_road_map.keys()))
    num_classes = min(int(level/20)+1,len(class_road_map[weapon_type]))
    classes = class_road_map[weapon_type][:num_classes]
    for num in range(len(classes)):
        classes[num] = random.choice(classes[num].split("-"))
    weapon_thing = generate_class_weapon(classes[-1],level)
    weapon_id = game.hash_string(weapon_thing)
    current_level = 0
    enemy_data = [0, name, weapon_id, classes[-1], level, 0, 0, 3, 1, 1, 1, 1, 1,generate_enemy_loot(level),""]
    for class_name in classes:
        growth_rates = db.get_class(class_name)[1].split("-")
        for x in range(20):
            if current_level == level:
                break
            current_level+=1
            for num in range(len(growth_rates)):
                if rng(float(growth_rates[num])):
                    enemy_data[7+num]+=1
    enemy_data[6] = enemy_data[7]
    return enemy_data

如果您对该项目感兴趣,请查看GitHub repo https://github.com/Graves451/discord-based-rpg


Tags: thename游戏fordatalevelnumclass