2012-12-25 76 views
0

我在循环中遇到问题。这是一个鼹鼠重击的游戏。首先,有一个for循环负责为我的痣产生不同的孔位置。 (1)生成一个数字(2)停止生成(3)根据刚生成的数字,为其运行一个函数。一旦完成该功能,然后(4)开始第二轮产生另一个号码......并继续进行9轮。我在这里有我的代码。停止并继续执行For循环

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

最新的问题是什么? – Nahum

+0

那么,是否有可能停止循环并继续它? – user1927992

+0

那是什么语言? – Nahum

回答

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; 
} 

试试吧。

+0

非常感谢,但我不太明白吗?我应该在哪里放置?感谢您的耐心等待! – user1927992

0

对不起,这不是一个真正的答案,而只是一个建议,用于删除那个长开关语句。我说这是因为评论并不真正格式化代码以及一个答案......

看起来你希望它是:

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 

可以计算出来而不是有长的switch语句而不是:

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]); 

的hardco ded 3是行长,因为它看起来每行都有3个值(x从0到2)。索引/ randomHole值为10会产生x = 0,y = 3(开始另一个“行”)