持续的数据和搜索
Continuous data and searching
我想为我的游戏制作一种新的动画处理方式。目前我用两个变量CCD_ 1&CCD_ 2分别用于交换机情况和嵌套交换机情况。我想摆脱这种使用开关盒的方法。
switch (_physics_State)
{
case OBJECT_PHYSICS_STATE_GROUNDED:
switch(_direction_State)
{
case OBJECT_DIRECTION_UP: _animation_State = ANIMATION_STATE_YS_IDLE_UP; break;
case OBJECT_DIRECTION_UP_RIGHT: _animation_State = ANIMATION_STATE_YS_IDLE_UP_RIGHT; break;
case OBJECT_DIRECTION_UP_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_UP_LEFT; break;
case OBJECT_DIRECTION_RIGHT: _animation_State = ANIMATION_STATE_YS_IDLE_RIGHT; break;
case OBJECT_DIRECTION_RIGHT_DOWN: _animation_State = ANIMATION_STATE_YS_IDLE_RIGHT_DOWN; break;
case OBJECT_DIRECTION_DOWN: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN; break;
case OBJECT_DIRECTION_DOWN_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN_LEFT; break;
case OBJECT_DIRECTION_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_LEFT; break;
default: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN; break;
}
break;
}
我提出了一个解决方案,通过按特定顺序读取变量并将其存储在哈希图中来生成字符串。除了最后一个变量_speed
之外,这似乎起作用。_speed
是连续的,而不是离散的,并且可能具有一系列值,这些值仍将使对象达到相同的动画状态。我不能简单地将速度存储为一个简单的值。你们会如何处理这些连续的数据,让我用离散的数据来搜索它?
std::string animation_state_string_results = ""
+ std::to_string(_physics_State)
+ "-" + std::to_string(_direction_State);
+ "-" + std::to_string(G_button_Press_Value);
+ "-" + std::to_string(_speed);
将"连续"量转换为粗略的"标签"很容易。通常的想法是将范围划分为区间;然后使用二进制搜索的变体来标识包含查询值的间隔。存储已知不大于输入的最大值和已知较大的最小值的索引。请注意,您可以考虑n值来定界n+1个区间(其中两个区间是半无限的);如果这适用于您的数据,则必须将一个或两个边界索引初始化为索引超过最外面的值。
您可以将其作为连续变量的预处理步骤,也可以存储(对于其他变量的每个适当组合)一个数据结构,该数据结构包含与用于每个区间的值并行的区间边界。
同时,不要通过组装字符串来制作复合键——你最终会做一些愚蠢的事情,比如稍后对其进行修复。相反,请使用tuple
(或自定义类)。然后,您必须提供一个散列函数,但这并不困难(而且存在使其变得琐碎的库)。
相关文章:
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 如何打印在二叉搜索树中找到的数据?
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 将数据从C++程序发布到弹性搜索
- C++ Eclipse:二叉搜索树节点>数据=变量似乎不起作用
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员
- 如何将图像数据从搜索窗口中移动到本地存储器OpenCL
- 如何以json格式保存弹性搜索的数据
- 在树结构中搜索数据
- 二进制搜索树插入垃圾数据
- STL:在大量数据中进行分类和搜索
- 用于高效搜索的数据结构
- 二叉搜索树插入数据问题
- 多种搜索组合的数据结构设计
- 从文件中提取的数据中的C 搜索字符串失败
- 通过多个标签搜索数据集
- 使用不同的关键字搜索数据
- 在列表中搜索数据的最后一个实例
- 从二进制文件中读取和搜索数据