我在循环方面遇到了问题。这是一场捶打鼹鼠的游戏。首先,有一个for循环负责为我的痣产生不同的孔位置。我想要它以便循环将(1)生成一个数字(2)停止生成(3)根据刚刚生成的数字,为它运行一个函数。一旦完成运行该功能,然后(4)开始第二轮产生另一个数字......然后继续进行9轮。我的代码在这里。
var molePosX:Array = [166.90, 494.8, 810.7];
var molePosY:Array = [282.55, 512.45, 730.35];
var moleInUse:Boolean = false;
if (moleInUse == false){
for(var i:uint = 1; i<10; i++){
var randomHole:Number = Math.floor(Math.random()*10)+1; //Generate 10 number
trace(randomHole);
}
}
switch (randomHole){
case 1: trace("1");
moleRun(molePosX[0],molePosY[0]);
break;
case 2: trace("2");
moleRun(molePosX[1],molePosY[0]);
break;
case 3: trace("3");
moleRun(molePosX[2],molePosY[0]);
break;
case 4: trace("4");
moleRun(molePosX[0],molePosY[1]);
break;
case 5: trace("5");
moleRun(molePosX[1],molePosY[1]);
break;
case 6: trace("6");
moleRun(molePosX[2],molePosY[1]);
break;
case 7: trace("7");
moleRun(molePosX[0],molePosY[2]);
break;
case 8: trace("8");
moleRun(molePosX[1],molePosY[2]);
break;
case 9: trace("9");
moleRun(molePosX[2],molePosY[2]);
break;
case 10: trace("10");
break;
}
function moleRun(xPos:Number,yPos:Number){
moleInUse = true;
var mole2:Mole = new Mole();
mole2.x = xPos;
mole2.y = yPos;
addChild(mole2);
moleInUse = false;
}
非常感谢!!!
答案 0 :(得分:0)
你应该用最后一个破碎的迭代号开始循环。为(1)生成随机数编写单独的函数会很容易。像:
// this is a global or instance variable
var iter:uint = 1;
// funcation to generate the random number and updating the value of iteration
function taskNumber1() {
for(var i:uint = iter; i<10; i++) {
var randomHole:Number = Math.floor(Math.random()*10)+1; //Generate 10 number
iter = i;
break;
}
return randomHole;
}
试试吧。
答案 1 :(得分:0)
抱歉,这不是一个真正的答案,只是建议删除那个长的switch语句。我添加了这个作为答案,因为评论并没有真正格式化代码......
看起来你想要它:
Where index/randomHole = xPos, yPos
1 = 0, 0
2 = 1, 0
3 = 2, 0
4 = 0, 1
5 = 1, 1
6 = 2, 1
7 = 0, 2
8 = 1, 2
9 = 2, 2
您可以计算出来,而不是使用长切换语句:
x = (index - 1) % 3;
y = Math.floor((index - 1) / 3.0);
或保留您的变量名称:
var xPosIndex:int = (randomHole - 1) % 3;
var yPosIndex:int = Math.floor((randomHole - 1) / 3);
moleRun(molePosX[xPosIndex],molePosY[yPosIndex]);
硬编码3是行长度,因为看起来每行中有3个值(x从0变为2)。 index / randomHole值为10将产生x = 0,y = 3(从另一个“row”开始)