Questions tagged «algorithm»

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

6
修改颜色以使其与背景不太相似的算法
我正在创建一个演示示例,其中有20个球互相弹跳,背景填充有纯色。每个球的颜色是randint(0, 255)针对每个R,G,B元组分量随机选择的。 问题是某些球最终的颜色与背景非常相似,因此很难看到它们。我想避免这种情况,如果选择的颜色太相似(在给定的阈值范围内),则滚动另一种颜色,或者将其移离背景颜色。 如何计算相似度指标用作阈值?或者,如何变换颜色使其变淡(例如,偏蓝)? 明显的免责声明:我对色彩理论一无所知,所以我不知道上述概念是否存在! 我正在用python进行编码,但是我正在寻找概念和策略,因此伪代码很好(或者只是理论上)。 编辑: 要澄清几点: 每个球都有自己的随机颜色。我希望它们尽可能地保持随机性,并尽可能地探索色彩空间(无论是RGB还是HSV,都pygame接受两种格式来定义色彩) 我只是想避免每种颜色与背景“太接近”。问题不仅仅在于色调:我完全可以在深蓝色背景下使用浅蓝色球(或者在“白色”蓝色下使用“全蓝色”,等等) 现在,我不在乎一个球的颜色是否与另一个球相似(甚至相同)。避免这种情况是有好处的,但这是一个小问题。 背景色是恒定的单一RGB颜色。目前,我使用的是“基本”蓝色(0, 0, 255),但我对此还不太满意。因此,请考虑背景为任意颜色(具有任意色调,亮度,饱和度等)。 编辑2: TL,DR版本:只是提供一种创建X种随机颜色的方法,这样就不会在任意(但单一和恒定)颜色的背景下“淡入淡出”
23 algorithm  color 

7
优化重力计算
我有一堆大小和速度各异的物体,它们相互吸引。每次更新时,我都必须遍历每个对象并合计由于每个其他对象的重力而产生的力。它的伸缩性不是很好,是我在游戏中发现的两个主要瓶颈之一,我不确定该如何提高性能。 这感觉就像我应该可以提高性能。在任何给定时间,系统中大约99%的对象对对象的影响都可以忽略不计。我当然不能按质量对物体进行排序,而只能考虑前10个最大的物体或某些物体,因为力随距离的变化比随质量的变化大(方程沿的线force = mass1 * mass2 / distance^2)。我认为,最好的办法是考虑最大的物体和最接近的物体,而忽略世界另一端可能无法影响任何事物的数百个微小的岩石碎片,但要找出哪些物体是最近我有遍历所有的对象,他们的立场正在发生变化不断,所以这不是我只能做一次。 目前我正在做这样的事情: private void UpdateBodies(List<GravitatingObject> bodies, GameTime gameTime) { for (int i = 0; i < bodies.Count; i++) { bodies[i].Update(i); } } //... public virtual void Update(int systemIndex) { for (int i = systemIndex + 1; i < system.MassiveBodies.Count; i++) { GravitatingObject body …


6
咒语施法-如何优化每秒伤害
假设我们有一个知道一些咒语的巫师。每个法术都有3个属性:伤害,冷却时间和施法时间。相当标准的RPG东西。 冷却时间:能够再次施放该法术所花费的时间(t)。咒语开始施放时便会持续进行“冷却”。 施法时间:使用咒语所需的时间(t)。向导施放某些东西时,无法施放其他咒语,并且不能将其取消。 问题是:在不同的法术组合下,您将如何最大化伤害? 很容易计算出每个施法时间的最高伤害。但是,如果有更多更好的选择,那么等待然后让“卡住”施放低伤害咒语的情况又如何呢? 例如, 火球:3000伤害,3秒施法时间,6秒冷却。 寒冰箭:20伤害,4秒施法时间,4秒冷却。 疾风:3伤害,3秒施法时间,3秒冷却。 在这种情况下,如果您选择使用较低的DPCT咒语(疾风)而不是冰霜箭,则每秒的伤害会更高。因此,我们必须考虑选择咒语的后果。 在下面的示例中是“过度投放”和“等待”的情况。


1
如何将鼠标坐标转换为等距索引?
我用图块64x32绘制等距图: const Offset = 160; int X, Y; for (int a=0; a < 6; a++) for (int b=0; b < 6; b++) { X = a * 32 - b * 32 + Offset; Y = a * 16 + b * 16; DrawTile(X, Y, tile); } 图片,说明此代码: 亲爱的专业人员,请提供有关细胞等轴测索引中的鼠标坐标转换公式的帮助。例如:(105; 100)-> …

3
如何为跳棋/草稿实现AI?
我看到了这个跳棋游戏,我想知道AI是如何实现的。 我应该如何为检查员(草稿,妈妈,妈妈)实现AI ?有没有已知的算法? 非常感谢所有人。我很奇怪看到这个Tic Tac Toe游戏教程博客文章。 所以,我想要dama游戏算法的开源代码和博客文章..是否有任何有用的链接或任何doc文件..?请告诉我..
21 algorithm  ai 

3
高效寻路许多成群的敌人绕过障碍物
我正在努力改善游戏敌人的寻路能力。现在,他们基本上只是通过计算自己与玩家之间的角度并朝该方向移动,不断地朝着玩家的确切位置移动。我也有一个植绒算法,可以防止敌人相互堆叠,因此它们会成组,而不是相互夹住。 但是,既然我已经添加了基于图块的地图,那么我就需要敌人也能够绕过障碍物和墙壁。我最初尝试为“不可行走”的瓷砖添加间隔值,以使植绒算法将墙壁和障碍物视为要远离的对象。我还没有弄清楚这是否可行,因为我的初步测试显示敌人击中了一个看不见的“墙”,那里没有不可行走的瓷砖,但由于某种原因,他们击中了它并开始飞扬。 我想知道如果使用A *计算到达播放器的路径,然后使用植绒算法来防止结块,可能会导致性能负担过重。最初,我的游戏将是基于海浪的射击游戏,但我决定改以热线迈阿密为基础进行游戏,因此我可能会减少敌人的数量,偶尔会成群结队,他们更强大。 这是可行的解决方案吗?我将Java与Slick2D一起用作游戏引擎。还是有解决这些问题的更好的解决方案/算法?


6
在边缘包裹的世界中寻找行进方向
此问题是从Stack Overflow 迁移而来的,因为可以在Game Development Stack Exchange上回答。 迁移 8年前。 我需要找到从2D世界中的一个点到边缘被包裹的另一点(例如小行星等)的最短距离方向。我知道如何找到最短的距离,但正在努力寻找它的方向。 最短距离由下式给出: int rows = MapY; int cols = MapX; int d1 = abs(S.Y - T.Y); int d2 = abs(S.X - T.X); int dr = min(d1, rows-d1); int dc = min(d2, cols-d2); double dist = sqrt((double)(dr*dr + dc*dc)); 世界的例子 : : T …
20 c++  algorithm 

3
历史记录生成算法如何工作?
我听说过游戏《矮人要塞》,但只有现在我在YouTube上关注的一个人对此进行了评论……当我注意到矮人要塞实际上如何为世界创造历史时,我感到非常惊讶! 现在,这些算法如何工作?他们通常做什么除了模拟的时间长度,将作为输入?它们的具体程度如何? 更重要的是 可以用Java语言制作,还是Java语言太慢?(我猜这取决于模拟的深度,但以矮人要塞为例。)

5
计算圆(图像)内的随机点(像素)
我有一个图像,该图像在特定位置包含一个圆,并具有特定的直径。我需要做的是能够计算圆内的随机点,然后操纵与这些点相关的像素。我已经有以下代码: private Point CalculatePoint() { var angle = _random.NextDouble() * ( Math.PI * 2 ); var x = _originX + ( _radius * Math.Cos( angle ) ); var y = _originY + ( _radius * Math.Sin( angle ) ); return new Point( ( int )x, ( int )y ); } …
19 c#  algorithm 

3
如何为类似Minecraft的引擎生成漂浮的陆地块?
我正在XNA中创建类似于Minecraft的引擎。我想要做的是创建类似于此视频中所示的浮岛: http://www.youtube.com/watch?v=gqHVOEPQK5g&feature=related 我将如何使用世界生成器复制它?我必须使用一些Perlin噪声算法吗?我不知道这将如何帮助我取得这样的土地质量。 这是我正在使用的perlin噪声发生器的代码: private double[,] noiseValues; private float amplitude = 1; // Max amplitude of the function private int frequency = 1; // Frequency of the function /// <summary> /// Constructor /// </summary> /// public PerlinNoise(int freq, float _amp) { Random rand = new Random(System.Environment.TickCount); noiseValues = new double[freq, …

3
实时动态寻路?
我目前正在做一些寻路研究,仿真如下:我有一个3D场景,表示了起点和终点,我能够创建导航网格物体,航路点和多边形来辅助寻路。 我已经尝试过A *算法及其一些变体,它们可以完美地工作。但是,现在我对“动态”寻路更感兴趣。例如,在查找从A点到B点的路径时,如果突然出现新障碍,我希望我的算法能够立即重新规划路径,而不必再次从头开始搜索。 我已经对D *算法做了一些阅读,并且想知道这是否适合我的需求,或者这看起来像是一个过大的杀手。 所以我的问题基本上是:哪种算法最适合实时动态寻路?或者我可以使用哪些技术组合呢?

3
将程序生成的世界与其他世界相匹配
您读过罗杰·泽拉兹尼(Roger Zelazny)的《琥珀编年史》吗? 想象自己在第三人称MMO游戏中玩。您在世界上产生并开始游荡。一段时间后,当您认为已经学会了地图时,便意识到自己处在一个从未见过的地方。您返回到您确定知道的最后一个地方,并且它仍然存在。但是世界其他地方已经发生了变化,您甚至都没有注意到它是如何发生的。 我读过有关程序世界的信息。我已经阅读了有关Perlin噪声和八度音阶,单纯形噪声,菱形平方算法,有关构造板块和水蚀模拟的信息。我相信我对程序化世代的一般方法有一些模糊的理解。 有了这些知识,我不知道如何才能做上面写的事情。我想到的每个想法都会遇到一些理论问题。这是我可以想到的一些想法: 1)“可逆”世代,以种子号作为输入,并完整描述了一个块号 我怀疑是否有可能,但是我想像一个函数,该函数将接收种子并产生数字矩阵,并在此矩阵上构建块。对于每个唯一编号,都有一个唯一的块。第二个函数,获取该唯一的组块编号并生成包含该编号的种子。我试图在下图中制定一个方案: 2)使块完全随机,并在它们之间进行过渡。 正如阿修索建议的那样。这种方法的好处是它是可能的,并且不需要魔术功能:) 我认为这种方法的弊端在于,不可能拥有一个多元化的世界。如果让您说一个仅由一个数字表示的群岛和一个大洲,并且它是相邻的块,那么块的大小就不会等于大块。而且我怀疑是否可以在各个块之间进行漂亮的过渡。我想念什么吗? 因此,换句话说,您正在开发具有程序生成世界的MMO。但是,除了拥有一个世界,您还有许多。您将采用哪种方法来生成世界,以及如何在玩家未注意到过渡的情况下实现玩家从一个世界到另一个世界的过渡。 无论如何,我相信您已经有了大致的想法。你会怎么做?

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.