激突要塞的代码长度为6的倍数,其中每6个字符代表着一个单位,这六个字符中,第一位代表着单位的种类,后五位则包含着单位角度.X值.Y值的信息.

那么这个第一位究竟代表什么呢?一图以示之.

那么在代码中就用字典来进行表示了,如果你使用python

name={'v':'骨玉','3':'剑玉','8':'枪玉','a':'剃玉','M':'骑玉','L':'采玉',
'1':'弓玉','7':'弩玉','2':'铳玉','x':'弹玉','b':'跳玉','z':'忍玉',
'c':'裂玉','d':'散玉','B':'花玉','D':'押玉','e':'狙玉','O':'射玉',
'5':'爆玉','9':'炮玉','f':'浮玉','g':'导玉','w':'击玉','N':'核玉',
'k':'飞玉','l':'战玉','K':'旋玉','H':'坠玉','n':'变玉','J':'暗玉',
'6':'魔玉','P':'星玉','S':'查玉','R':'贯玉','m':'机玉','Q':'捆玉',
'4':'盾玉','j':'壁玉','o':'界玉','C':'返玉','E':'迎玉','G':'的玉',
'I':'箱玉','A':'障玉','F':'赘玉','y':'圣玉','h':'缮玉','i':'愈玉',
'p':'木要塞壁','q':'石要塞壁','r':'纸要塞壁','s':'钢要塞壁','t':'红加速','u':'蓝加速',
'T':'近突击','U':'远突击','W':'蓝旋转','V':'紫旋转','X':'狙击壁','Y':'电梯' } price={'v':10,'3':30,'8':30,'a':30,'M':150,'L':20,
'1':30,'7':30,'2':70,'x':60,'b':70,'z':70,
'c':70,'d':50,'B':70,'D':60,'e':70,'O':100,
'5':50,'9':70,'f':70,'g':80,'w':70,'N':200,
'k':150,'l':150,'K':150,'H':150,'n':100,'J':150,
'6':200,'P':200,'S':200,'R':150,'m':200,'Q':200,
'4':60,'j':150,'o':90,'C':60,'E':60,'G':50,
'I':70,'A':60,'F':150,'y':200,'h':100,'i':100,
'p':15,'q':40,'r':5,'s':100,'t':100,'u':250,
'T':40,'U':50,'W':80,'V':80,'X':200,'Y':60 }

如果你使用C++

map<string,string>m;
map<string,string>inm; void init()
{
m["v"]="骨玉";
m["3"]="剑玉";
m["8"]="枪玉";
m["a"]="剃玉";
m["M"]="骑玉";
m["L"]="采玉";
m["1"]="弓玉";
m["7"]="弩玉";
m["2"]="铳玉";
m["x"]="弹玉";
m["b"]="跳玉";
m["z"]="忍玉";
m["c"]="裂玉";
m["d"]="散玉";
m["B"]="花玉";
m["D"]="押玉";
m["e"]="狙玉";
m["O"]="射玉";
m["5"]="爆玉";
m["9"]="炮玉";
m["f"]="浮玉";
m["g"]="导玉";
m["w"]="击玉";
m["N"]="核玉";
m["k"]="飞玉";
m["l"]="战玉";
m["K"]="旋玉";
m["H"]="坠玉";
m["n"]="变玉";
m["J"]="暗玉";
m["6"]="魔玉";
m["P"]="星玉";
m["S"]="查玉";
m["R"]="贯玉";
m["m"]="机玉";
m["Q"]="捆玉";
m["4"]="盾玉";
m["j"]="壁玉";
m["o"]="界玉";
m["C"]="返玉";
m["E"]="迎玉";
m["G"]="的玉";
m["I"]="箱玉";
m["A"]="障玉";
m["F"]="赘玉";
m["y"]="圣玉";
m["h"]="缮玉";
m["i"]="愈玉";
m["p"]="木要塞壁";
m["q"]="石要塞壁";
m["r"]="纸要塞壁";
m["s"]="钢要塞壁";
m["t"]="红加速";
m["u"]="蓝加速";
m["T"]="近突击";
m["U"]="远突击";
m["W"]="蓝旋转";
m["V"]="紫旋转";
m["X"]="狙击壁";
m["Y"]="电梯";
map<string,string>::iterator it=m.begin();
while(it!=m.end())
{
string key=it->first;
string ans=it->second;
inm[ans]=key;
it++;
}
}

好,那么第一位就处理完了,接下来是后五位,我们知道X Y 角度分别是一个三位数.那么把角度+X值+Y值拼接起来就可以了,比如角度270,X值10,Y值280,那么拼接起来就是270010280,在激突要塞的代码中,有52个字母(大小写)和0-9十个阿拉伯数字,那么用62进制表示一下就好了.

demo,和田正一这个密码学鬼才,居然用了一种伪61进制的方法进行表示,爷真的佛了.

在这个进制体系中:

  • 0-9就表示0到9
  • a到z分别表示10到35
  • A到Z分别表示36到61

比如000P6R,就是\(0*61^4+0*61^3+P*61^2+6*61+R-Disp\),得出来的得数,取最右边三位就是Y值,次右边三位就是X值,剩下的就是角度.

注意这个\(DISP\)值

\[DISP=\begin{cases}
52058 & 单位为要塞时 \\
16020 & 单位为兵玉或者要塞壁时 \\
\end{cases}
\]

我们来看一段激突改阵器(C++)实现的代码

while(s.length()!=0)
{
string type=s.substr(0,1);
string info=s.substr(1,5);
string name;
int angle;
int x;
int y;
if(isYaosai==1)
{
isYaosai=0;
if(type=="0")name="普通要塞";
if(type=="1")name="黑魔王";
angle=0;
int sum=0;
each(i,0,4)
{
int num=0;
char ch=info[i];
//de(ch);
if(ch>='0'&&ch<='9')num=ch-'0';
if(ch>='a'&&ch<='z')num=ch-'a'+10;
if(ch>='A'&&ch<='Z')num=ch-'A'+36;
each(j,1,4-i)num*=61;
sum+=num; }
sum-=52058;
x=sum/1000;
y=sum%1000;
fprintf(fp,"单位名称,角度,X,Y\n");
fprintf(fp,"%s,%d,%d,%d\n",name.c_str(),angle,x,y);
}
//是兵玉的场合
else{
name=m[type];
int sum=0;
each(i,0,4)
{
int num=0;
char ch=info[i];
//de(ch);
if(ch>='0'&&ch<='9')num=ch-'0';
if(ch>='a'&&ch<='z')num=ch-'a'+10;
if(ch>='A'&&ch<='Z')num=ch-'A'+36;
each(j,1,4-i)num*=61;
sum+=num;
}
sum-=16020;
angle=sum/1000000;
x=(sum%1000000)/1000;
y=sum%1000;
fprintf(fp,"%s,%d,%d,%d\n",name.c_str(),angle,x,y);
}
s=s.substr(6);
}

用途

了解了这些东西,你就可以去整一下有意思的事情比如改阵器(可以改出悬空和倾斜要塞壁的装逼效果),随机阵型生成器甚至AI做阵,不过太难了.

激突要塞代码解阵算法+用C++/Python处理代码的更多相关文章

  1. 建模分析之机器学习算法(附python&R代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

  2. 数据挖掘领域经典分类算法 —— C4.5算法(附python实现代码)

    目录 理论介绍 什么是分类 分类的步骤 什么是决策树 决策树归纳 信息增益 相关理论基础 计算公式 ID3 C4.5 python实现 参考资料 理论介绍 什么是分类 分类属于机器学习中监督学习的一种 ...

  3. 机器学习经典分类算法 —— k-近邻算法(附python实现代码及数据集)

    目录 工作原理 python实现 算法实战 约会对象好感度预测 故事背景 准备数据:从文本文件中解析数据 分析数据:使用Matplotlib创建散点图 准备数据:归一化数值 测试算法:作为完整程序验证 ...

  4. 机器学习经典分类算法 —— k-均值算法(附python实现代码及数据集)

    目录 工作原理 python实现 算法实战 对mnist数据集进行聚类 小结 附录 工作原理 聚类是一种无监督的学习,它将相似的对象归到同一个簇中.类似于全自动分类(自动的意思是连类别都是自动构建的) ...

  5. 算法图解:Python笔记代码

    二分查找 选择排序 递归 快速排序 广度优先搜索 狄克斯特拉算法 贪婪算法 二分查找 def binary_search(lst,item): low = 0 high = len(lst)-1 wh ...

  6. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  7. Java虚拟机详解04----GC算法和种类【重要】

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. 4. EM算法-高斯混合模型GMM详细代码实现

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 EM ...

  9. SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码)

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/det ...

随机推荐

  1. git 如何实现进行多人协作开发(远程仓库)

    第一.Git作为分布式的版本控制系统,你是你本地仓库的主人,但是想要实现多人的协作开发,你就要将你本地的开发推送到远程共享仓库中供大家下载,本篇主要以github作为远程服务器来介绍有关远程仓库这块内 ...

  2. python修改内存,(修改植物大战僵尸)

    import win32process # 进程模块 import win32con # 系统定义 import win32api # 调用系统模块 import ctypes # c语言类型 imp ...

  3. 模板汇总——splay

    #define lch(x) tr[x].son[0] #define rch(x) tr[x].son[1] ; , root; struct Node{ ], pre, sz; void init ...

  4. CF993A Two Squares 几何 第二道 暴力或判断条件(*)

    Two Squares time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  5. 百度之星 资格赛 1003 度度熊与邪恶大魔王 dp(背包)

    度度熊与邪恶大魔王  Accepts: 1141  Submissions: 6840  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 3 ...

  6. 工程点点app爬虫和sign算法破解

    这世界真的什么人都有,哎,继续分析. 通过对工程点点的逆向和抓包分析,发现工程点点需要x-sign和token验证. this.b.a(aVar.b("Accept", " ...

  7. 007 Python程序语法元素分析

    目录 一.概述 二.程序的格式框架 2.1 代码高亮 2.2 缩进 2.3 注释 2.4 缩进.注释 三.命名与保留字 3.1 变量 3.2 命名 3.3 保留字 3.4 变量.命名.保留字 四.数据 ...

  8. C#中的根据实体增删改操作

    在日常操作中,我们经常会对一些数据进行批量更新, 我在使用EF的时候,没有找到比较好的批量更新的解决方案, 便参考了张占岭前辈的博客,整合了这么一个简略版的使用实体类生成数据库增删改SQL的操作类 在 ...

  9. python实现经典算法

    1,快速排序 题目形式:手写一下快速排序算法. 题目难度:中等. 出现概率:约50%.手写快排绝对是手撕代码面试题中的百兽之王,掌握了它就是送分题,没有掌握它就是送命题. 参考代码: def quic ...

  10. Java 中 Set、List 和 Map 的遍历

    java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. package tup.lucene. ...