本帖最后由 小锟 于 2017-8-22 21:31 编辑
- #因为不用求最优解,就多加了很多条件
- #条件一 :boss用斩杀,player就闪避
- #条件二 :只要血量允许,就用搏命一击,否则就治疗,除非最后一下攻击就可以打死
- boss_skill_1 = ['普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击',
- '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击', '普通攻击']
- boss_skill_2 = ['普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击', '普通攻击', '普通攻击', '致命一击']
- boss_skill_3 = ['普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀']
- boss_skill_4 = ['普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击', '普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击', '普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击', '普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击', '普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击', '普通攻击', '致命一击', '普通攻击', '斩杀', '致命一击']
- boss_skill_5 = ['致命一击', '普通攻击', '致命一击', '斩杀', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '普通攻击', '致命一击', '斩杀', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击', '致命一击', '普通攻击', '致命一击', '斩杀', '致命一击', '斩杀', '普通攻击', '致命一击', '斩杀', '普通攻击']
- def gen_skill(boss_skill):
- count = 0
- player_skill = []
- boss_hp = player_hp = 100
- boss_skills = {'普通攻击': 15, '致命一击': 25, '斩杀': 45}
- while len(boss_skill) and boss_hp > 0:
- if boss_hp <= 100:
- boss_hp += 3
- if boss_hp > 100 :
- boss_hp = 100
- if count > 0:
- player_hp += 10
- count -= 1
- i = boss_skill.pop(0)
- if i == '斩杀':
- player_skill.append('躲闪')
- #print('player:', player_hp, ' boss', i, boss_hp)
- continue
- player_hp -= boss_skills[i]
- if 0 < player_hp and boss_hp <= 10:
- player_skill.append('攻击')
- boss_hp -= 10
- #print('最后一击boss', boss_hp)
- continue
- if player_hp <= 10:
- player_skill.append('治疗')
- count = 2
- player_hp += 30
- elif boss_hp <= 10:
- player_skill.append('攻击')
- boss_hp -= 10
- elif boss_hp > 10:
- player_skill.append('搏命一击')
- player_hp -= 10
- boss_hp -= 20
- #print('player:', player_hp,' boss',i ,boss_hp)
- return player_skill#,len(player_skill)
- for i in [boss_skill_1, boss_skill_2, boss_skill_3, boss_skill_4, boss_skill_5]:
- print(gen_skill(i))
复制代码
- #输出结果
- ['搏命一击', '搏命一击', '搏命一击', '治疗', '搏命一击', '搏命一击', '治疗', '搏命一击', '攻击']
- ['搏命一击', '搏命一击', '搏命一击', '治疗', '搏命一击', '治疗', '搏命一击', '治疗', '搏命一击', '攻击']
- ['搏命一击', '搏命一击', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击']
- ['搏命一击', '搏命一击', '搏命一击', '躲闪', '治疗', '搏命一击', '治疗', '搏命一击', '躲闪', '治疗', '搏命一击', '治疗', '搏命一击']
- ['搏命一击', '搏命一击', '搏命一击', '躲闪', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击', '治疗', '治疗', '搏命一击', '躲闪', '治疗', '躲闪', '搏命一击', '治疗', '躲闪', '搏命一击']
复制代码
头大
想问下楼主什么是状态机啊,我这算贪心算法吗
搞不懂
|