激突要塞的代码长度为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. Gson的解析Json数据的两种方式

    转载:https://blog.csdn.net/huplion/article/details/78984977 在线JSON字符串转Java实体类(JavaBean.Entity): https: ...

  2. NLP(二十四)使用LSTM构建生成式聊天机器人

    准备 数据集:AIML数据集 下载数据集并用Notepad++打开,复制到txt文件中方便打开 代码实现 数据很少,训练轮次不多,结果不好,仅当示例 import numpy as np import ...

  3. EAS webservice安全模式

    1.启用安全控制: isRomoteLocate=false 2.请求添加头部: <soapenv:Header> <SessionId xmlns="http://log ...

  4. tit文件的加密解密

    加密 # hello 源文件 # ifmmp 加密 # hello 解密 file = open("Email.txt","r") # 源文件 只针对字符不需要 ...

  5. Codeforces Technocup 2017 - Elimination Round 2 E Subordinates(贪心)

    题目链接 http://codeforces.com/contest/729/problem/E 题意:给你n个人,主管id为s,然后给你n个id,每个id上对应一个数字表示比这个人大的有几个. 最后 ...

  6. CF 987C Three displays DP或暴力 第十一题

    Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. hdu5491 The Next 模拟

    Let LL denote the number of 1s in integer DD’s binary representation. Given two integers S1S1 and S2 ...

  8. .net core Webapi +EF

    开发工具 Vs2017 +MSsqlsever 打开VS2017,新建web项目 点击确认,生成项目,在项目中增加文件夹Model,在Model中增加类TodoItem public class To ...

  9. ubuntu16.04设置bind9.10.3的chroot运行

    重点:1)系统是ubuntu的16.04 bind9.10.3 2)确保你的系统是没问题的,我之前的16.04有问题,在虚拟机上怎么都操作都不行, 在/var/log/syslog可以看到:could ...

  10. 谈谈你对HTML语义化的理解。

    1.什么是HTML语义化? 基本上都是围绕着几个主要的标签,像标题(h1-h6),列表(li),强调(strong em)等. 根据内容的语义化(内容结构化),选择合适的标签(代码语义化),便于开发者 ...