如何查看数组中的每个值是不是小于某个数字?
Posted
技术标签:
【中文标题】如何查看数组中的每个值是不是小于某个数字?【英文标题】:How can I see if every value in an array is less than a certain number?如何查看数组中的每个值是否小于某个数字? 【发布时间】:2020-09-12 22:54:46 【问题描述】:我希望游戏中的角色在平台上弹跳时向上移动。为此,我计算了每个平台与我的角色之间的 x 和 y 距离,然后将这些值放入两个数组中:一个用于 x 距离,另一个用于它们之间的 y 距离。如果角色在平台上,我希望它向上移动。如何确定数组中的值是否小于某个数字?我知道我的代码效率很低,但我也不知道如何改进。
function loop(e:Event):void
var plats:Array = new Array();
//adding platforms to array
plats.push(plat1);
plats.push(plat2);
//calculating distance between platform and character
var distx1 = Math.sqrt((doodler.x - plat1.x)*(doodler.x - plat1.x));
var disty1 = Math.sqrt(((doodler.y + 50) - plat1.y)*((doodler.y + 50) - plat1.y));
var distx2 = Math.sqrt((doodler.x - plat2.x)*(doodler.x - plat2.x));
var disty2 = Math.sqrt(((doodler.y + 50) - plat2.y)*((doodler.y + 50) - plat2.y));
//adding distance calculations to distance arrays
var disx:Array = new Array();
disx.push(distx1);
disx.push(distx2);
var disy:Array = new Array();
disy.push(disty1);
disy.push(disty2);
for (var i:int = 0; i < disx.length; i++)
//this is where i'm confused
if(disx[i] < 65 && disy[i] < 3)
doodler.y -= 100;
【问题讨论】:
通常使用循环来批量处理 Arrays 中的数据。 @Organis 好吧我做错了什么 您混淆了 all 和 any 之间的区别。您的语句在满足给定条件的每个 i 上执行。但是你想要的是检查它们是否 all 满足条件。 我确实想检查其中是否有任何满足条件。我当前的语句现在根本没有执行,这就是为什么我想知道我的代码是否有问题。如果我输出disx[0]和disy[1],都小于3,所以字符应该向上移动,但不是@Organis 如果我只在数组中放一个值,它就可以工作。但是一旦我添加了多个距离值,角色就会立即从屏幕上移出,因为我在 if 语句之后的代码中有这个:else doodler.y += 5;
【参考方案1】:
all 和 any 之间的区别。
var aFlag:Boolean = true;
for (var i:int = 0; i < disx.length; i++)
aFlag &&= disx[i] < 65;
aFlag &&= disy[i] < 3;
// At this point, aFlag is true ONLY if
// all the conditions are true at the same time.
if (aFlag)
doodler.y -= 100;
【讨论】:
以上是关于如何查看数组中的每个值是不是小于某个数字?的主要内容,如果未能解决你的问题,请参考以下文章