需求:

上表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;
}

运行结果:

Mysql+VS 项目设置:

1.


2.


3.


4.


5.

<WOW> 根据装备等级自动生成有关的附魔组总表和组值范围表.相关推荐

  1. Python 代码打造小 AI ,罗列博文笔记总索引列表,自动生成“我的博文笔记总索引”博文 HTML5 源码文本

    Python 代码打造小 AI ,获取笔记信息,自动阅读量降序编排索引列表,生成 HTML5 源码文本. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ ...

  2. Spring Boot项目利用MyBatis Generator进行数据层代码自动生成

    概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器.它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ...

  3. 利用MyBatis Generator进行数据层代码自动生成

    1. 新建maven工程 导入如下pom: <?xml version="1.0" encoding="UTF-8"?> <project x ...

  4. html 自动日期,excel自动生成连续日期

    如何自动生成有规律连续的时间段,效果如下图 公式: =TEXT((19+(ROW()-1)/12)/24,"hh:mm") &"-" & TEX ...

  5. 2020-11-25T09:10:13.000Z mysql 自动生成的时间格式化 vue

    mysql 自动生成时间设置字段类型为timestamp 设置默认值为CURRENT_TIMESTAMP 1.npm install dayjs --save 2.main.js 中 全局引入 imp ...

  6. IDEA 自动生成实体类

    IDEA自动生成实体类 写数据库有很多人都会遇到,表的实体类的对应方式,有时候自己写往往会因为一些小错误导致domain的实体写错.但是IDEA是有一个快捷创建实体类的方式: 第一步 第二步 第四步 ...

  7. 根据Excel表的配置,自动生成数据库表的CRUD以及相关的Winform列表和编辑界面程序文件,接上篇(自动生成实体类)

    本文仍然属于一个自动生成代码工具. 上一篇我们根据数据库表的信息,自动生成实体类.cs文件.这次我们根据Excel配置,直接生成CRUD以及窗体列表和编辑界面相关的程序源文件. 通过自动生成代码,这样 ...

  8. [PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】

    2019独角兽企业重金招聘Python工程师标准>>> 场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果. ...

  9. Savior:渗透测试报告自动生成工具

    系统框架 前端:Ant Design Pro 后端:Django REST Framework 数据库:Mysql 主要功能 用户管理:主要是方便统计漏洞的发现者,后续可能大概也许会添加漏洞统计模块, ...

最新文章

  1. 销售 750000 册爆款「蟒蛇书」的新版抢先上市 | 9月书讯
  2. 简单上手Linux的输入输出重定向
  3. 《操作系统真象还原》——0.7 内存访问为什么要分段
  4. 用“找回iPhone”的方法追踪新冠接触者,MIT谷歌苹果开发蓝牙新冠传播追踪系统...
  5. Android-support-v4 v7 v8 v13 v17 的区别和特性说明
  6. (转)Python 用hashlib求中文字符串的MD5值
  7. hdu6383(2018 “百度之星”程序设计大赛 - 初赛(B))
  8. access labsql 出错_一段由ACCESS转为SQL SERVER后出现的CINT错误
  9. 腾讯云黑石TStack一体机柜斩获2019数博会领先科技成果双重“优秀项目奖”
  10. 将JAVA编译为EXE的几种方法
  11. [html] 怎样避免让用户看到长时间的白屏?
  12. 【文章收藏】阿里云破了四个世界纪录
  13. 什么是Windows内核编程
  14. URAL 1934 Black Spot --- 最短的简单修改
  15. 25个Java机器学习工具和库
  16. Android Studio插件GsonFormat快速实现JavaBean
  17. vue实现下载excel模板、导入excel文件、导出excel文件
  18. 抖音上好看的小姐姐,Python给你都下载了
  19. Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解
  20. 市面上U盘便宜种类多 如何鉴别便宜U盘好坏呢

热门文章

  1. Redis的配置及与memcached区别
  2. 用JAVA实现简单的WORD转PDF 亲测有效
  3. boost asio 文件服务器,基于boost::asio封装搭建的简单服务器
  4. python热图_Python 绘制热图
  5. Termux 使用常用命令
  6. Django中的DateTimeField和DateField
  7. 2022年登高架设试题及解析及登高架设模拟试题
  8. kinectfusion解析_2019/02/09 对于KinectFusion 的理解
  9. 开发问题解决之IDEA无故显示红色
  10. 放弃北上广的N个理由