按十进制位与运算

需求:所有包含5级装备的奖励,需要通关10234567后才能领取。

前提:

游戏的ID规则如下:

长度:8位十进制数,如12345678

前2位表示ID类型,比如10表示关卡ID,11表示装备ID,12表示物品ID;

其中对于一个装备ID:11234567

2表示品质;

34表示部位;

567表示等级;

解决方案:

方法1:对程序员来说最简单的是,让游戏策划把所有5级装备都配置在表格里,他们的解锁关卡都是10234567;

缺点:仅这一条限制,策划最多需要填写999999条记录,这样对于程序来说查找性能,内存占用都是一个问题;

方法2:按十进制位模式匹配:与规则无关的位填成0,相关的位,填成相应的值

策划只需要填写一条记录:ID=11000005,关卡ID=10234567

对于不懂程序的从业人员来说,按十进制位填写模式匹配模版是一个很容易理解的方法。

查找排序的比较函数代码如下:

//递归调用,先高位,后低位
	//按十进制位比较,若为0,则忽略当前位,
    static inline int DecimalBitCompare(uint32_t dwA, uint32_t dwB)
    {
    	//比较个位数
    	//dwA和dwB都为个位数    	
    	if(dwA/10 == 0
			&&dwB/10 == 0)
   		{
   			if(dwA != 0 && dwB != 0)
 			{
 	  			return dwA - dwB;
			}
			return 0;
   		}
		//比较高位
		int iHighResult = DecimalBitCompare(dwA/10, dwB/10);
		if(iHighResult == 0)
		{
			//高位相同,则比较低位
			return DecimalBitCompare(dwA%10, dwB%10);
		}
		return iHighResult;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ACM算法日常

唯快不破的01序列——位运算初识

众所周知,计算机的运算使用的就是二进制,它会把十进制的数转化为二进制,然后进行二进制运算,最后再转回十进制展现给我们。而位运算指的是:由于数字在计算机里...

1273
来自专栏Java大联盟

23种设计模式详解(三)

971
来自专栏java思维导图

自下向上的编写容易阅读的代码(上)

我在 关于极简编程的思考 中曾提到要编写可阅读的代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来的维护人员。能让阅读代码更轻松,有利于增强项...

3498
来自专栏BestSDK

9个,程序员又爱又恨的编程习惯

编程习惯No. 1:使用goto 关于禁止使用goto可以追溯到许多结构化编程工具还未面世的时代。如果程序员想要创建一个循环或跳到另一段程序中,那么他们需要输入...

3187
来自专栏Crossin的编程教室

【每周一坑】程序猿的浪漫

来看本周的题目。 ? 前几日刷朋友圈时看到这样一个故事: 读艺术相关科系的她,透过联谊认识了一位程序员,两人凑巧都是离乡背井在外地读书,更巧合的是他们都在同一个...

2908
来自专栏测试开发架构之路

C语言程序设计50例(二)(经典收藏)

【程序11】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总...

46710
来自专栏算法修养

CSU 1808 地铁 (Dijkstra)

Description  Bobo 居住在大城市 ICPCCamp。 ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号。 m 段双向的地铁线路连接...

3308
来自专栏极客猴

用 Python 学习数据结构, 有它就不用愁

数据结构,我们对它已经是耳熟能详。对于计算机相关专业的大学生来说,它是一门专业必修课。从事软件开发的人员则把它作为谋生必备技能。这充分体现数据结构的重要性。因此...

732
来自专栏Java学习网

程序员偷偷深爱的 9 个不良编程习惯

程序员偷偷深爱的 9 个不良编程习惯 我们曾经都做过这样的事情:当妈妈不注意的时候,偷偷地吃糖果零食,然后导致有了蛀牙。同样的,我们都违背过一些编程的基本规则,...

25810
来自专栏工科狗和生物喵

【我的漫漫跨考路】数据结构之线性表

正文之前 ? 昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天...

3806

扫码关注云+社区

领取腾讯云代金券