<WOW> 根据装备等级自动生成有关的附魔组总表和组值范围表.
需求:
上表1:
筛选出需要附魔的 装备ID 和 装备等级
上表2:
将对应的装备ID加入到该表内,并设置对应附魔组值.
上表3:
根据组值设定对应的具体附魔ID.
步骤:
1.首先根据上表1,需要筛选(去重)出一共有多少个装备等级. (对应表1为筛选结果.)
2.结合上表1的物品ID需要生成上表2对应的组ID.组ID为上表1 ItemLevel前边加数字99
3.根据对应组ID生成具体的附魔ID范围, 附魔ID起始值 = 14002.
组ID对应附魔范围公式: ceil为向上取整
组ID具体组值范围 = 14002 ~ ceil( 组ID /2)
组ID=5 为例, 5/2为2.5, ceil(2.5)为3.
那么为5的组ID范围就是 14002, 14003, 14004这3个范围. 下表2前3行就是结果.
此时组ID对应的范围附魔值全部生成完毕.
4.根据上表1的ItemLevel对比下表1的id. 如果相等.则写入到下表3. 下表3 entry=装备ID,g1=装备等级+99后的值.
下表1 下表2 下表3
代码:
#include <iostream>
#include <vector>
#include <winsock.h> //注意顺序,要放在mysql.h前
#include <mysql.h>//控制台项目中要在mysql.h之前include <winsock.h>
#include <map>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include<math.h>
using namespace std;
const int nMin = 14002; //开始数值/* 程序概要
* if(ItemSetVec.ItemLevel == NumSetVec.id)
* {
* StoreVec.ItemEntry = ItemSetVec.itemEntry;
* StoreVec.Group = NumSetVec.ids;
* }
* 最后在把StoreVec字段写入数据库表对应字段内即可.
*///存储 <装备ID>:<装备等级>
struct ItemSet
{int itemEntry; //装备IDint ItemLevel; //装等ID
};
typedef vector<ItemSet> ItemSetVec;//存储 手动筛选出来装备等级
//因为装等数值范围跳跃大, 不连续.所以 在原始组值前增加 : 99, 比如装备等级5即变成995, 装备等级10, 即变成9910
//装备等级 == 装备附魔组ID
struct NumSet
{int id; //原始装备等级int ids; //开头加 99的装备等级
};
typedef vector<NumSet> NumSetVec;//存储 装备ENTRY 和 组ID
struct StroeSet
{int ItemEntry, Group;
};
typedef vector<StroeSet> StoreVec;void test1()
{ItemSetVec IVec;NumSetVec NVec;StoreVec SVec;MYSQL* pConn;pConn = mysql_init(NULL);//第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306)if (!mysql_real_connect(pConn, "127.0.0.1", "root", "root", "_t", 3306, NULL, 0)){printf("无法连接数据库:%s", mysql_error(pConn));return;}mysql_query(pConn, "set names gbk");if (mysql_query(pConn, "select id, ids from _id ")){printf("查询失败:%s", mysql_error(pConn));return;}MYSQL_RES* result = mysql_store_result(pConn);MYSQL_ROW row;/*根据规则写入数据库组值:附魔ID*//*装备举例 :力量斧头 装备等级为5级, 力量斧头可以随机到 附魔组ID : 995 内的随机一条FM.光之护盾 装备等级为10级, 光之护盾可以随机到 附魔组ID : 9910 内的随机一条FM.附魔组ID的结构举例 :<附魔组ID : 具体FM编号> 其中两个字段都为主键.可以形成以下结构:装备ID, 附魔ID995, 2995, 39910, 29910, 3*/printf("---------------组值:附魔ID 数据表开始写入---------------\n");while (row = mysql_fetch_row(result)){double dRow = atoi(row[0]); //char 转 数字double dNum = dRow / 2; //取double 值int nNum = ceil(dNum); //向上取整for (size_t i = 0; i < nNum; i++){string sql = "INSERT INTO _tab(id, value) VALUES('" + to_string(dRow) + "', '" + to_string(nMin + i) + "')";mysql_query(pConn, sql.c_str());}}printf("组值:附魔ID 数据表写入完毕!.....\n");printf("组值:附魔ID 数据表写入完毕!.....\n");printf("组值:附魔ID 数据表写入完毕!.....\n");/*---------------------------------------------------------------------------------------*/if (mysql_query(pConn, "select id, ids from _id ")){printf("查询失败:%s", mysql_error(pConn));return;}MYSQL_RES* result3 = mysql_store_result(pConn);MYSQL_ROW row3;while (row3 = mysql_fetch_row(result3)){NumSet nst;nst.id = atoi(row3[0]);nst.ids = atoi(row3[1]);NVec.push_back(nst);}printf("NumSet存储完毕.....存储[%u]条\n", (int)NVec.size());printf("NumSet存储完毕.....存储[%u]条\n", (int)NVec.size());printf("NumSet存储完毕.....存储[%u]条\n", (int)NVec.size());/*---------------------------------------------------------------------------------------*/if (mysql_query(pConn, "select entry,ItemLevel from item_template ")){printf("查询失败:%s", mysql_error(pConn));return;}MYSQL_RES* result2 = mysql_store_result(pConn);MYSQL_ROW row2;while (row2 = mysql_fetch_row(result2)){ItemSet ist;ist.itemEntry = atoi(row2[0]);ist.ItemLevel = atoi(row2[1]);IVec.push_back(ist);}printf("ItemSet存储完毕.....存储[%u]条\n", (int)IVec.size());printf("ItemSet存储完毕.....存储[%u]条\n", (int)IVec.size());printf("ItemSet存储完毕.....存储[%u]条\n", (int)IVec.size());/*---------------------------------------------------------------------------------------*/int nCount = 1;for (auto i = NVec.begin(); i != NVec.end(); i++) //遍历NumSetV{cout << "第:" << nCount << "次遍历,装备剩余条数: " << IVec.size() << endl;for (auto k = IVec.begin(); k != IVec.end(); k++) //根据NumSetV.装等 遍历ItemSetV{if (i->id == k->ItemLevel){StroeSet sst;sst.ItemEntry = k->itemEntry;sst.Group = i->ids;SVec.push_back(sst);IVec.erase(k);k = IVec.begin(); //erase函数的返回值是这么介绍的:一个迭代器,指定在任何删除的元素之后剩余的第一个元素,如果不存在这样的元素,则指定指向向量结尾的指针,所以指向了起始位置string sql = "INSERT INTO _ss(entry, g1) VALUES('" + to_string(sst.ItemEntry) + "', '" + to_string(sst.Group) + "')";mysql_query(pConn, sql.c_str());}}nCount++;}mysql_free_result(result);mysql_close(pConn);
}int main()
{test1();system("pause");return 0;
}
运行结果:![](/assets/blank.gif)
Mysql+VS 项目设置:
1.
2.
3.
4.
5.
<WOW> 根据装备等级自动生成有关的附魔组总表和组值范围表.相关推荐
- Python 代码打造小 AI ,罗列博文笔记总索引列表,自动生成“我的博文笔记总索引”博文 HTML5 源码文本
Python 代码打造小 AI ,获取笔记信息,自动阅读量降序编排索引列表,生成 HTML5 源码文本. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ ...
- Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器.它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ...
- 利用MyBatis Generator进行数据层代码自动生成
1. 新建maven工程 导入如下pom: <?xml version="1.0" encoding="UTF-8"?> <project x ...
- html 自动日期,excel自动生成连续日期
如何自动生成有规律连续的时间段,效果如下图 公式: =TEXT((19+(ROW()-1)/12)/24,"hh:mm") &"-" & TEX ...
- 2020-11-25T09:10:13.000Z mysql 自动生成的时间格式化 vue
mysql 自动生成时间设置字段类型为timestamp 设置默认值为CURRENT_TIMESTAMP 1.npm install dayjs --save 2.main.js 中 全局引入 imp ...
- IDEA 自动生成实体类
IDEA自动生成实体类 写数据库有很多人都会遇到,表的实体类的对应方式,有时候自己写往往会因为一些小错误导致domain的实体写错.但是IDEA是有一个快捷创建实体类的方式: 第一步 第二步 第四步 ...
- 根据Excel表的配置,自动生成数据库表的CRUD以及相关的Winform列表和编辑界面程序文件,接上篇(自动生成实体类)
本文仍然属于一个自动生成代码工具. 上一篇我们根据数据库表的信息,自动生成实体类.cs文件.这次我们根据Excel配置,直接生成CRUD以及窗体列表和编辑界面相关的程序源文件. 通过自动生成代码,这样 ...
- [PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】
2019独角兽企业重金招聘Python工程师标准>>> 场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果. ...
- Savior:渗透测试报告自动生成工具
系统框架 前端:Ant Design Pro 后端:Django REST Framework 数据库:Mysql 主要功能 用户管理:主要是方便统计漏洞的发现者,后续可能大概也许会添加漏洞统计模块, ...
最新文章
- 销售 750000 册爆款「蟒蛇书」的新版抢先上市 | 9月书讯
- 简单上手Linux的输入输出重定向
- 《操作系统真象还原》——0.7 内存访问为什么要分段
- 用“找回iPhone”的方法追踪新冠接触者,MIT谷歌苹果开发蓝牙新冠传播追踪系统...
- Android-support-v4 v7 v8 v13 v17 的区别和特性说明
- (转)Python 用hashlib求中文字符串的MD5值
- hdu6383(2018 “百度之星”程序设计大赛 - 初赛(B))
- access labsql 出错_一段由ACCESS转为SQL SERVER后出现的CINT错误
- 腾讯云黑石TStack一体机柜斩获2019数博会领先科技成果双重“优秀项目奖”
- 将JAVA编译为EXE的几种方法
- [html] 怎样避免让用户看到长时间的白屏?
- 【文章收藏】阿里云破了四个世界纪录
- 什么是Windows内核编程
- URAL 1934 	Black Spot --- 最短的简单修改
- 25个Java机器学习工具和库
- Android Studio插件GsonFormat快速实现JavaBean
- vue实现下载excel模板、导入excel文件、导出excel文件
- 抖音上好看的小姐姐,Python给你都下载了
- Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解
- 市面上U盘便宜种类多 如何鉴别便宜U盘好坏呢