所以我最近一直在做一个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
目前没有回答
相关问题 更多 >
编程相关推荐