Questions tagged «algorithm»

算法用于计算,数据处理和自动推理。更准确地说,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。

2
比较两个树结构
我很难用正确的术语来描述这个问题,所以我会尽可能详细地介绍,希望有人知道我要做什么=-) 我正在尝试比较两个节点树,以确定它们在结构上有多相似/不同。在下面的图表中,两个示例均具有相同数量的子代,孙代等。在示例1中,“根”有一个带有两个子代的子代,但在示例2中,“根”则没有。 我大概可以弄清楚如何递归遍历并计算每个级别有多少并进行比较,从而使我了解树木的相似程度,但是只有这样做,它们看起来才是相同的,但是实际上不是。 有人碰巧知道吗?甚至这是什么技术术语? 编辑:此外,这是在C#中,我正在使用列表来存储这些对象及其子对象。 例子1 例子2

2
将单词扰乱为最不易识别的形式
我的目标是向玩家显示一个加扰的单词,应将其重新排序为原始形式: OELHL->你好 我想要一种加扰算法,该算法采用任何给定的单词(> 3或4个字母,可能包含空格)并将其转换为最不易识别的形式。 虽然随机移动每个字母肯定有效,但我注意到并非所有的混洗都是平等的,有些混叠比其他混叠更容易辨认。如果有人知道更好的算法(可能基于语言学),可以保证至少可识别的形式,我将发布此问题。


1
给Bomberman AI智能炸弹放置
我正在尝试为Bomberman实现AI算法。目前,我有一个可行但不是很聪明的基本实现(当前的AI在放置炸弹方面过于狂热)。 这是我尝试实现的第一个AI,我有点受困。我想到的更复杂的算法(我希望做出更好决策的算法)过于复杂,无法成为好的解决方案。 您对实施Bomberman AI有哪些一般提示?是否有根本不同的方法使机器人更具防御性或进攻性? 编辑: 当前算法 我当前的算法是这样的(伪代码): 1)尝试放置一颗炸弹,然后从所有炸弹中找到一个安全的牢房,包括刚刚放置的炸弹。要找到该单元,请在四个方向上进行迭代。如果您可以找到任何安全的发散单元并及时到达(例如,如果方向是向上或向下,则在此路径的左侧或右侧找到一个单元),那么放下炸弹并移动是安全的在那个方向上。 2)如果找不到并确保发散细胞的安全,请不要放置炸弹,然后再看一次。这次,您只需要在一个方向上寻找一个安全的牢房即可(您无需与之分离)。 3)如果您仍然找不到安全的牢房,请不要做任何事情。 for $(direction) in (up, down, left, right): place bomb at current location if (can find and reach divergent safe cell in current $(direction)): bomb = true move = $(direction) return for $(direction) in (up, down, left, right): do not place …
13 algorithm  ai 

5
在纸牌游戏中,我将使用什么渲染技术为纸牌绘制阴影效果?
什么样的阴影算法可以用来创建像这样的阴影? 我正在制作的是类似的东西,但是都由OpenGL驱动的2D绘图API完成,因此没有Z坐标。 另外,对于手本身,我真的很想得到一种阴影效果,如下所示: 我只是不确定如何获得接近它的阴影外观。 卡的数量一定会发生变化,并且卡会扔到桌子上,所以我不能使用任何类型的光照图。 我应该研究哪种算法(除了模糊,我知道需要做些什么?) 谢谢 更新资料 我正在制作2D纸牌游戏。我想从卡上添加阴影阴影偏移,有点像: 我正在考虑的方式是: 保留与后缓冲大小相同的纹理。 绘制黑色矩形作为该纹理的临时卡片。 模糊该纹理。 用这种纹理画我的卡片。 对卡进行其他照明。 将此纹理绘制到后缓冲区。 我的问题是: 这是正确的方法吗? 有没有一种方法可以在不渲染纹理的情况下(保持位图 与后缓冲区一样大)? 是否可以安全地假定后 缓冲区大小不会超过最大纹理大小?(我的意思是,如果后缓冲区 为2000x3000,那么可以说我可以在 该大小的视频内存中创建纹理了吗? 谢谢

2
如何在射击游戏中实施聪明的敌人?
想象一下一个非常简单的射击游戏,众所周知: 您是玩家(绿色)。您的运动仅限于X轴。我们的一个或多个敌人位于屏幕的顶部,他的移动也仅限于X轴心。玩家向敌人发射子弹(黄色)。 我想为敌人实施一种AI,该AI应该真正擅长避免玩家的子弹。我的第一个想法是将屏幕分成多个独立的部分,并为其分配权重: 有两种重量:“子弹重量”(灰色)是子弹施加的危险。子弹离敌人越近,“子弹重量”(0..1,其中1是最高危险)越高。没有子弹的车道的权重为0。第二权重是“距离权重”(灰绿色)。对于每条车道,我都会增加0.2移动成本(此值现在是任意的,可以调整)。 然后,我简单地添加权重(白色)并转到权重最低的通道(红色)。但是这种方法有一个明显的缺陷,因为它很容易错过局部最小值,因为最佳的去处只是在两个传入的子弹之间(如白色箭头所示)。 所以这就是我要寻找的: 即使在没有没有施加子弹威胁的地方的情况下,也应该找到解决方法。 敌人可以通过选择最佳(或几乎最佳)解决方案来可靠地躲避子弹。 算法应该能够考虑子弹的移动速度(因为它们可能以不同的速度移动)。 调整算法的方法,以便可以应用不同级别的难度(对超级智能敌人是愚蠢的)。 算法应该允许不同的目标,因为敌人不仅想躲避子弹,还应该能够射击玩家。这意味着在躲避子弹时,应该优先选择敌人可以向玩家射击的位置。 那么您将如何解决呢?与这种类型的其他游戏相反,我只希望有几个但非常“熟练”的敌人,而不是愚蠢的敌人。

3
节拍检测和FFT
我正在开发一款平台游戏,其中包括带有节拍检测功能的音乐。我目前正在通过检查当前幅度何时超过历史样本来检测节拍。这不适用于振幅很稳定的摇滚等音乐流派。 因此,我进一步研究了发现使用FFT将声音分成多个频段的算法...然后我找到了Cooley-Tukey FFt算法 我唯一的问题是我对音频还很陌生,我也不知道如何使用它将信号分成多个信号。 所以我的问题是: 如何使用FFT将信号分成多个频段? 对于有兴趣的人,这也是我在c#中的算法: // C = threshold, N = size of history buffer / 1024 public void PlaceBeatMarkers(float C, int N) { List<float> instantEnergyList = new List<float>(); short[] samples = soundData.Samples; float timePerSample = 1 / (float)soundData.SampleRate; int sampleIndex = 0; int nextSamples = 1024; // …

2
预测敌人的位置,以使物体领先于目标
在我的2D游戏中,我有AI炮塔,应该通过自动向敌人射击来辅助玩家。我想让他们明智地开火并领导目标,而不仅仅是瞄准敌人的当前位置。因此,给定敌人和炮塔的弹丸的(始终是恒定的)速度和位置矢量,我如何找到一个代表炮塔必须相交的实际位置的矢量,以使弹丸与敌人相交(并命中)? 任何描述数学,算法等文章的链接将不胜感激!
13 algorithm  ai  aiming 

5
如何将Bresenham的线算法推广到浮点端点?
我正在尝试结合两件事。我正在写一个游戏,我需要确定与浮点端点在一条线上的网格正方形。 此外,我需要它包括它碰到的所有网格正方形(即不仅是布雷森纳姆的线条,而且是蓝色的线条): 有人可以向我提供有关该操作方法的任何见解吗?显而易见的解决方案是使用朴素的行算法,但是有没有更优化的东西(更快)?

3
如何添加和减少凸多边形?
我有两个彼此重叠的 2D凸多边形。我正在寻找一种算法来减去和添加它们。结果必须是单个凹面多边形或(甚至更好)一组形成凹面结果的最大凸面多边形(例如三角形)。 (左:初始重叠的多边形。中:添加后得到的凹多边形。右:形成凹结果的一组凸多边形。出于性能原因,最好使凸多边形大于三角形。两个重叠的多边形将产生与左侧相同的图片,但重叠区域不属于所得多边形。) 我怎样才能做到这一点?
12 algorithm 

2
在较早的游戏中逐渐消失。需要一些帮助来弄清楚算法是如何得出的
抱歉,这个问题有点深奥,但我还是想不起来! 我正在研究街机游戏DoDonPachi(以及许多其他较旧的游戏)中使用的淡入淡出算法: 我写了一个python脚本来挑选一些像素,并在淡入淡出的过程中跟踪它们。这是结果的代表性示例。每组的第一行是起始颜色值,而随后的每一行是当前帧的颜色值和前一帧的颜色值之间的差。 Starting Value: (132, 66, 189) Frame 1: [9, 9, 8] Frame 2: [8, 8, 8] Frame 3: [8, 8, 8] Frame 4: [8, 8, 9] Frame 5: [9, 9, 8] Frame 6: [8, 8, 8] Frame 7: [8, 8, 8] Frame 8: [8, 8, 9] Frame 9: …
12 algorithm  arcade 

3
二维网格地图上的道路/河流生成
这是一个新手问题,但是在这里: 我的地图是2D网格,我想生成道路和河流。从起点到终点的路线一定不是瓷砖数量的最佳路线。相反,它们应该具有一定程度的随机性(回合)。 是否有针对这种情况的标准算法? 干杯! 更新: 这是在网格上使用权重并使用jgrapht库应用最短路径算法(Bellman-Ford)的结果。毕竟,我接受了多纳兹的回答。 http://pastebin.com/AGQGK5ik

4
如何确定等轴测视图Flash游戏中的绘制顺序?
这是用于Flash游戏的等轴测视图。我需要知道如何对对象进行排序,以便在绘制时无需进行z缓冲区检查。这似乎很容易,但是还有一个限制,一个场景可以有10,000+个对象,因此算法需要以小于O(n ^ 2)的速度运行。所有对象都是矩形框,场景中移动了3-4个对象。最好的方法是什么? 更新 在每个图块中只有一个对象(我的意思是对象不能彼此堆叠)。并且我们访问的对象图和对象图都有自己的位置。 更新2 看到这些数字: 首先应先绘制蓝色对象,然后绘制绿色,然后绘制红色。而在第二个中,您必须以相反的顺序绘制它们。您需要先绘制红色,然后绘制绿色,最后绘制蓝色的对象。如您所见,蓝色和红色物体的位置没有差异,它们与相机的距离都不同,依此类推。但是由于它们相对于绿色框的相对位置,您需要在两个图像之间更改其绘制顺序。这就是使这个问题变得一团糟的原因。 旁注:由于所有对象都是直角棱镜,因此在数学上可以证明至少有一个绘制顺序可以满足问题的需要。

1
2D直升机游戏,如何创建走廊墙?
我正在研究改编经典的“直升机”游戏(即http://www.addictinggames.com/helicopter.html),但我还没有弄清楚如何创建墙生成引擎。 伪代码中有任何指针吗?我对中间的对象不是很感兴趣-只是随着游戏的进行而以增加难度(更多闭合,具有更多意外曲线)的方式生成边的方法。

4
如何让AI代理沿着曲线移动?
目前,我非常基本的AI框架中的代理沿着由一系列点组成的锯齿状路径移动。 他们只需将位置从一个点移动到另一个点即可。当他们到达下一个点时,他们会前进到下一个,依此类推。如何更改此设置,以便它们沿着路径的弯曲版本平滑移动,以及如何生成曲线?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.