2012-12-25 293 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(開始另一個「行」)