根据指定规则生成游戏选项编码实战

进入遇到这样的需求

“有不定数量的游戏选项和不定的游戏人数选项给用户选择,我们按照  游戏人数<<24 | 游戏规则A<<16 | 游戏规则B<<8 | 游戏规则C      游戏规则D<<24 | 游戏规则E<<16 | 游戏规则F<<8 | 游戏规则G ........  来生成所有规则可能选中和未选中的游戏码”

该需求中,不定数量的游戏选项和游戏人数需要动态输入  我们需要使用读取配置文件来获取多少游戏人数和游戏规则 这是待实现的功能1

根据获取数量的游戏选项 我们要生成所有可能的选中和未选中的排列组合  这是待实现的功能2

根据生成排列组合按照规则生成游戏码 还要说明游戏码中那些游戏选项被选中,也意味着需要进行排列组合和游戏规则的映射 这是待实现的功能3

读取配置文件来获取多少游戏人数和游戏规则 可以使用状态机分析配置文件 这之前已经有文章进行了介绍

据获取数量的游戏选项 我们要生成所有可能的选中和未选中的排列组合 可以使用递归回溯来进行计算

整个流程如下

假设游戏规则有三个  游戏规则 A B C 

步骤1 假设游戏规则A 被选中  生成编码1

步骤2 假设游戏规则B 被选中 生成编码11

步骤3 假设游戏规则C 被选中 生成第一个完整编码111

我们回退到步骤2 假设游戏规则B 被选中后  步骤3 假设游戏规则C未被选中 生成第二个完整编码 110  以此类推 。。。。。。

流程示意图

整个过程描述比较繁琐 但是对于使用递归回溯的函数 则十分简洁

原文地址:https://www.cnblogs.com/itdef/p/9601940.html

时间: 2024-08-02 15:24:53

根据指定规则生成游戏选项编码实战的相关文章

利用ASCII码生成指定规则的字符串

/** * 上送终端编号的后两位生成规则 总共可以生成 (36*36-1)1295个编号 * 01...09 0A...0Z * 10...19 1A...1Z * ............... * A0...A9 AA...AZ * ............... * Z0...Z9 ZA...ZZ */ public String generateNumber(String number){ String ret=number.substring(0,number.length()-2);

洛谷P1132 数字生成游戏

P1132 数字生成游戏 题目描述 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 将s的任意两位对换生成新的数字,例如143可以生成314,413,134: 将s的任意一位删除生成新的数字,例如143可以生成14,13,43 在s的相邻两位之间s[i],s[i + 1]之间插入一个数字x,x需要满足s[i] < x < s[i + 1].例如143可以生成1243,1343,但是不能生成1143,1543等. 现在小明想知道,在这个生成法则下,从s

P1132 数字生成游戏

P1132 数字生成游戏 题目描述 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 将s的任意两位对换生成新的数字,例如143可以生成314,413,134: 将s的任意一位删除生成新的数字,例如143可以生成14,13,43 在s的相邻两位之间s[i],s[i + 1]之间插入一个数字x,x需要满足s[i] < x < s[i + 1].例如143可以生成1243,1343,但是不能生成1143,1543等. 现在小明想知道,在这个生成法则下,从s

算法基础:正整数指定规则排序问题(Golang实现)

给定字符串内有非常多正整数,要求对这些正整数进行排序.然后返回排序后指定位置的正整数 排序要求:依照每一个正整数的后三位数字组成的整数进行从小到大排序 1)假设不足三位,则依照实际位数组成的整数进行比較 2)假设相等,则依照输入字符串中的原始顺序排序 说明(下面内容考生无须检查,调用者保证): 1) 字符串内正整数之间以单个空格分隔,字符串首尾没有空格 2) 正整数格式为十进制,大小:1~1000000,正整数的数字非零開始 演示样例: 如字符串内容 1223 22 3232 2016 依照规定

(华为)按照指定规则对输入的字符串进行处理

问题详细描述:将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串中的位置. 对排训后的字符串进行操作,如果字符为'0'--'9'或者'A'--'F'或者'a'--'f',则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符.如字符为'4',为0100b,则翻转后为0010b,也就是2.转换后的字符为'2': 如字符为'7',为0111b,则翻转后为1110b,也就是e.转换后的字符为大写

算法基础:数组指定规则排序问题(Golang实现)

给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序, 如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列.如果第i列到最后一列都相同,则按原序排列. 样例输入: 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序,输出: 1,2,3 2,3,1 1,3,1 2,3,4 代码实现: package huawei import ( "fmt" "sort" ) func Tes

vc在指定目录生成快捷方式

一.首先要获得不同目录的路径 char chDesktopPath[MAX_PATH] = {0}; SHGetSpecialFolderPathA(NULL,chDesktopPath,CSIDL_DESKTOP,0);//获取当前用户桌面路径 通过改变上面函数的第三个参数来获取 第三个参数可以为: CSIDL_BITBUCKET, CSIDL_CONTROLS, CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES, CSIDL_FONTS,

Swift游戏开发案例实战——互动出版网

这篇是计算机类的优质推荐>>>><Swift游戏开发案例实战> 国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术 编辑推荐 *国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术: *详细讲解了5个游戏的开发过程,如记忆配对.太空侵略者.Simon记忆.迷你高尔夫.银河大战.这些项目将帮助读者更好地理解iOS项目开发的方式和流程: *结合案例,重点对图形.音频和交互等与游戏紧密相关的知识做了

mysql 按指定规则排序

有些时候取数据时的排序规则需要为自己的指定规则,如 1>3>2>0这种,所以需要在取数据时指定排序规则,具体方法如下: SELECT `user` FROM user WHERE `user_status` in (0,1,2,3) ORDER BY FIELD(`user_status`,1,0,2,3); 这样就可以将取出来的数据按照 1>0>2>3 的顺序排序了. 在使用php框架 laravel 的时候,laravel 自带的超讯构造器并没有写好的排序指定规则的