文章目录

  • 《真三国无双20th纪念》
  • 羁绊计算器源码

《真三国无双20th纪念》

目前 《真三国无双20th纪念》 这个手游在国内没有代理商,所以服务器是国际服,想找该游戏的去一些有外服的应用商店查找吧。

应广大群友要求制作了一个人物副将羁绊计算机,用于增加整体队伍属性使用。


先来看一个我自己搭配的一个比较优质的组合,由于这游戏人物太多了几百个人物,所以想要达到一个最优的组合还需要氪金一下。

羁绊计算器源码

先来看一个效果图吧,我用Django部署到我的个人服务器上了。


源码如下:

import pandas as pd
from collections import Counter
import numpy as npdf = pd.read_excel("sanguo_data.xlsx",sheet_name="全部羁绊")
df_s = pd.read_excel("sanguo_data.xlsx",sheet_name="特殊羁绊")
df_c = pd.read_excel("sanguo_data.xlsx",sheet_name="国家")name_1 = "吕布" # 优先
attr_type = "atk" # 这里选择一个优先选择属性项
# attr属性列表索引序号
attr_type_dict ={"atk" : 0,"def":1,"HP":2,"war":3,"str":4,"move":5
}all_data_list = []for i in range(len(df)):if name_1 in df["name1"][i] or name_1 in df["name2"][i] or name_1 in df["name3"][i] :# 添加遍历的武将姓名name_list = [df['name1'][i],df['name2'][i],df['name3'][i]]name_list = [i for i in name_list if i != '-']name_tuple = tuple(name_list)# 获取当前记录的属性值data_atk = df['atk'][i] data_def = df['def'][i] data_HP = df['HP'][i] data_war = df['war'][i] data_str = df['str'][i] data_move = df['move'][i] data_list = (data_atk,data_def,data_HP,data_war,data_str,data_move)# 计算当前记录所选属性的贡献度attr_dict = {"atk" : data_atk,"def":data_def,"HP":data_HP,"war":data_war,"str":data_str,"move":data_move}attr_w = attr_dict[attr_type] / len(name_list)result_data = (name_tuple,data_list,attr_w)if data_list[attr_type_dict[attr_type]] != 0:all_data_list.append(result_data)# 根据所选择的羁绊人物填充到列表,数值累计求和
def append_sum_data(name_list,df,i):# 设置全局变量global  sum_atk,sum_def,sum_HP,sum_war,sum_str,sum_move# 添加遍历的武将姓名name_list = name_list + [df['name1'][i],df['name2'][i],df['name3'][i]]# 累计求和遍历的武将关联的数值属性sum_atk = sum_atk + df['atk'][i] sum_def = sum_def + df['def'][i] sum_HP = sum_HP + df['HP'][i] sum_war = sum_war + df['war'][i] sum_str = sum_str + df['str'][i] sum_move = sum_move + df['move'][i] #     print(sum_atk,sum_def,sum_HP,sum_war,sum_str,sum_move)return name_list# 计算全部羁绊关联的武将且优先选择定位属性
name_list = []
sum_atk = 0
sum_def = 0
sum_HP = 0
sum_war = 0
sum_str = 0
sum_move = 0for i in range(len(df)):# 先遍历 name_1 优选,根据一个优先选择项排除无用的羁绊关联if name_1 in df['name1'][i]:# 根据所选择的羁绊人物填充到列表,数值累计求和name_list = append_sum_data(name_list,df,i)elif name_1  in df['name2'][i]:name_list = append_sum_data(name_list,df,i)elif name_1  in df['name3'][i]:name_list = append_sum_data(name_list,df,i)# name1 武将列表去重、删除空白制表符
name1_list = list(set(name_list))
name1_list = [i for i in name1_list if i != '-']
name1_list.remove(name_1)print("{} {} 羁绊所需 {} 人物:".format(name_1,attr_type,len(name1_list)),",".join(name1_list))
print("计算结果:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(sum_atk,sum_def,sum_HP,sum_war,sum_str,sum_move))for name in name1_list:for i in range(len(df)):if name in df["name1"][i] or name in df["name2"][i] or name in df["name3"][i] :# 添加遍历的武将姓名name_list = [df['name1'][i],df['name2'][i],df['name3'][i]]name_list = [i for i in name_list if i != '-']name_tuple = tuple(name_list)# 获取当前记录的属性值data_atk = df['atk'][i] data_def = df['def'][i] data_HP = df['HP'][i] data_war = df['war'][i] data_str = df['str'][i] data_move = df['move'][i] data_list = (data_atk,data_def,data_HP,data_war,data_str,data_move)# 计算当前记录所选属性的贡献度attr_dict = {"atk" : data_atk,"def":data_def,"HP":data_HP,"war":data_war,"str":data_str,"move":data_move}attr_w = attr_dict[attr_type] / len(name_list)result_data = (name_tuple,data_list,attr_w)if data_list[attr_type_dict[attr_type]] != 0:all_data_list.append(result_data)# 按照w权重排序
all_data_list = list(set(all_data_list))
all_data_list = sorted(all_data_list, key=lambda x: x[2],reverse=True)result_name_list = []
result_data_list = [0,0,0,0,0,0]
result_all_data_list = []
person_num = 11 # 限制羁绊1-9人
for data in all_data_list:if len(result_name_list) < person_num:# 累计填充武将result_name_list = result_name_list + list(data[0])result_name_list = list(set(result_name_list))# 累计求和数值result_data_list = list(np.sum([result_data_list,data[1]], axis = 0))# 重新构建贡献数据result_all_data_list.append(data)# 计算势力数值加成获取3同势力数据
df_s_3_nation = df_s[df_s["data"]=="3同势力"]
df_s_3_dict = df_s_3_nation.to_dict('records')[0]# 将羁绊全部武将列入
df_c_result = df_c[df_c['name'].isin(result_name_list)]
df_c_result.reset_index(inplace=True,drop=True)
# 统计国家频次list 计算3个同样国家的人物触发羁绊
counter = Counter(df_c_result["nation"].to_list())
nation_list = []
for k,v in counter.items():if v>2:nation_list.append(k)# 激活的国家羁绊数量
len_nation_list = len(nation_list)# 国家羁绊增加数值
nation_data_list = [df_s_3_dict["atk"]*len_nation_list,df_s_3_dict["def"]*len_nation_list,df_s_3_dict["HP"]*len_nation_list,df_s_3_dict["war"]*len_nation_list,df_s_3_dict["str"]*len_nation_list,df_s_3_dict["move"]*len_nation_list
]result_name_list.remove(name_1)
result_data_list = list(np.sum([result_data_list,nation_data_list], axis = 0))print("------------------------------------")
print("{} {} 羁绊所需 {} 人物:".format(name_1,attr_type,len(result_name_list)),",".join(result_name_list))
print("国家羁绊激活 {} 个".format(len_nation_list))
print("计算结果:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(result_data_list[0],result_data_list[1],result_data_list[2],result_data_list[3],result_data_list[4],result_data_list[5]))
print("------------------------------------")
print("羁绊贡献")
for data in result_all_data_list:print("组合:{},贡献:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(data[0],data[1][0],data[1][1],data[1][2],data[1][3],data[1][4],data[1][5],))
print("------------------------------------")
print("还可增加的属性根据武将职业自己搭配")
print("包含2同名武将:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(30,30,30,30,30,30))
if len(result_name_list)<10:print("包含3同名武将:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(50,50,50,50,50,50))
print("包含1国羁绊:攻击:{},防御:{},生命:{},无双:{},气力:{},移动:{}".format(30,30,30,30,30,30))
print("包含3攻武将:攻击:{},无双:{}".format(100,50))
print("包含3防武将:攻击:{},防御:{}".format(50,100))
print("包含3迅武将:攻击:{},气力:{}".format(50,100))
print("包含3射武将:攻击:{},无双:{},气力:{}".format(50,50,50))
print("包含3特武将:攻击:{},无双:{},气力:{}".format(50,50,50))

本地脚本计算结果

吕布人物羁绊

吕布 atk 羁绊所需 5 人物: 貂蝉,吕玲绮,陈宫,关羽,张辽
计算结果:攻击:450,防御:100,生命:50,无双:200,气力:0,移动:0
------------------------------------
吕布 atk 羁绊所需 10 人物: 貂蝉,徐晃,吕玲绮,曹操,关羽,陈宫,夏侯惇,董卓,张辽,关银屏
国家羁绊激活 2 个
计算结果:攻击:1010,防御:210,生命:160,无双:260,气力:260,移动:0
------------------------------------
羁绊贡献
组合:('吕布', '吕玲绮'),贡献:攻击:100,防御:0,生命:0,无双:50,气力:0,移动:0
组合:('张辽', '吕玲绮'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('关银屏', '关羽'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
组合:('关羽', '吕布'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
组合:('吕布', '陈宫'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
组合:('曹操', '陈宫'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('关羽', '徐晃'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('夏侯惇', '张辽', '关羽'),贡献:攻击:100,防御:0,生命:50,无双:0,气力:50,移动:0
组合:('张辽', '吕布', '陈宫'),贡献:攻击:100,防御:0,生命:50,无双:50,气力:0,移动:0
组合:('貂蝉', '董卓'),贡献:攻击:50,防御:0,生命:0,无双:100,气力:0,移动:0
------------------------------------
还可增加的属性根据武将职业自己搭配
包含2同名武将:攻击:30,防御:30,生命:30,无双:30,气力:30,移动:30
包含1国羁绊:攻击:30,防御:30,生命:30,无双:30,气力:30,移动:30
包含3攻武将:攻击:100,无双:50
包含3防武将:攻击:50,防御:100
包含3迅武将:攻击:50,气力:100
包含3射武将:攻击:50,无双:50,气力:50
包含3特武将:攻击:50,无双:50,气力:50

关羽人物羁绊

关羽 atk 羁绊所需 8 人物: 张辽,吕布,徐晃,张飞,夏侯惇,刘备,鲍三娘,关银屏
计算结果:攻击:450,防御:150,生命:250,无双:0,气力:150,移动:0
------------------------------------
关羽 atk 羁绊所需 10 人物: 张辽,吕布,吕玲绮,曹操,魏延,李典,夏侯惇,陈宫,刘备,徐晃
国家羁绊激活 3 个
计算结果:攻击:890,防御:240,生命:140,无双:140,气力:240,移动:0
------------------------------------
羁绊贡献
组合:('吕布', '陈宫'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
组合:('刘备', '魏延'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('张辽', '吕玲绮'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('关羽', '吕布'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
组合:('吕布', '吕玲绮'),贡献:攻击:100,防御:0,生命:0,无双:50,气力:0,移动:0
组合:('夏侯惇', '曹操'),贡献:攻击:100,防御:0,生命:50,无双:0,气力:0,移动:0
组合:('关羽', '徐晃'),贡献:攻击:100,防御:0,生命:0,无双:0,气力:50,移动:0
组合:('李典', '夏侯惇'),贡献:攻击:100,防御:50,生命:0,无双:0,气力:0,移动:0
------------------------------------
还可增加的属性根据武将职业自己搭配
包含2同名武将:攻击:30,防御:30,生命:30,无双:30,气力:30,移动:30
包含1国羁绊:攻击:30,防御:30,生命:30,无双:30,气力:30,移动:30
包含3攻武将:攻击:100,无双:50
包含3防武将:攻击:50,防御:100
包含3迅武将:攻击:50,气力:100
包含3射武将:攻击:50,无双:50,气力:50
包含3特武将:攻击:50,无双:50,气力:50

Python开发一个《真三国无双20th纪念》人物羁绊计算器相关推荐

  1. ati自定义分辨率_真三国无双7游戏自定义分辨率的修改方法

    这是一个真三国无双7游戏自定义分辨率的修改方法介绍,一个非常详细的教程,玩家研究并且分享的,告诉玩家如何在游戏中修改自己需要的分辨率来迎合自己的本身的电脑,使游戏的画面效果达到最好,很实用的一个教程, ...

  2. 真三国无双8二十四项修改器风灵月影版

    点击下载来源:真三国无双8二十四项修改器风灵月影版 真三国无双8修改器风灵月影顾名思义,就是由风灵月影大神专门为<真三国无双8(Dynasty Warriors 8)>量身打造的一款游戏辅 ...

  3. CSU1020: 真三国无双

    1020: 真三国无双 Submit Page    Summary    Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 1042 ...

  4. 《真三国无双5》全人研究完整版

    <真三国无双5>全人研究完整版 2010-01-29 13:21 蜀国 赵云 系列传统主角 本作走的依然是平均路线 先说说子龙的优点吧 无双很赞 无双终结技很实用 无双连舞时攻击速度不错 ...

  5. 《真·三国无双ADVANCE》攻略

    <真·三国无双ADVANCE>攻略 基本操作 )?avz终!?   ?鱲?愈  地图画面 5_婛?6牂  方向键:移动游标 =wS(!鷉e蓿  A:选择移动目标 }c%?Q?  B:取消 ...

  6. csu 1020 真三国无双

    真三国无双 Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Submit Status ...

  7. 无法启动此程序因为计算机中丢失d3dx9_36.dll,xp系统运行真三国无双游戏提示d3dx9_36.dll丢失的解决方法...

    真三国无双是一款备受许多xp系统用户喜欢的游戏,然而在玩的过程中,有不少xp系统用户反映说遇到提示d3dx9_36.dll丢失的情况,导致无法继续玩真三国无双游戏,这是怎么回事呢,现在随系统城小编一起 ...

  8. 出来了,真三国无双3PC版的破解。

    2003年注册了ID,从来就是潜水,心中实在有愧.看到这次有人提供原始游戏,有人CRACK,而且我也是昨天才全部下好(小日本游戏太大了,一堆垃圾文件在里面)! 本来也是想潜水到底了,但是后来实在有点手 ...

  9. 用python实现todolist_So easy !用 Python 开发一个todolist

    原标题:So easy !用 Python 开发一个todolist 有一句话是这样说的:"凡事预则立,不预则废",说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样 ...

最新文章

  1. [js高手之路] 设计模式系列课程 - DOM迭代器(2)
  2. 去姥姥家需要做的事情
  3. 写给大家的编程书(2)
  4. 2017软件工程实践总结
  5. office工作日志文件_风暴事件处理器–每个工作者的GC日志文件
  6. 2020年度JEECG开发者大赛,开发插件赚外块还能赢大奖!!
  7. ef core中如何实现多对多的表映射关系
  8. jdk1.8新特性之lambda表达式及在Android Studio中的使用举例
  9. 证书:数字签名和验签加密和解密
  10. 关闭使用ShellExecute打开的进程
  11. signal(SIGPIPE,SIG_IGN)与signal(SIGCHLD,SIG_IGN)
  12. JVM调优-Jva中基本垃圾回收算法
  13. QT高级编程学习笔记(1)
  14. linux远程桌面密钥,使用 SSH 密钥连接到 Linux VM - Azure Virtual Machines | Microsoft Docs...
  15. Jmeter之BeanShell详解
  16. 3D优化之ShadowGun系列三:shader系列汇总
  17. python中object是什么_python object是什么类型
  18. 微信小程序开发进阶篇(mpvue)
  19. Java 动态生成推广海报,带用户头像、昵称、二维码
  20. 手动部署java jar包

热门文章

  1. 当前数据库普遍使用wait-for graph等待图来进行死锁检测
  2. 我在深圳这10年,历经的房价和我买房的故事
  3. 基于麻雀算法改进的无线传感器网络Dv-hop定位算法 - 附代码
  4. 一个数的亲和数iiic++_世界上最大的数和最小的数是多少?
  5. 剑指offer 23. 链表中环的入口
  6. 百度2015校园招聘面试题回忆录(成功拿到offer)
  7. 读 曹林的《人脸识别与人体动作识别技术及应用》笔记
  8. 《2020年蓝桥杯C++b组》
  9. 报表模块-report
  10. 你需要知道的Linux安全