2012-12-25 4 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

죄송합니다. 이것은 답변이 아니며 긴 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 

당신보다는 긴 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 3 행의 길이입니다. 각 행에 3 개의 값이있는 것처럼 보입니다 (x는 0에서 2로갑니다). 인덱스/randomHole 값 10은 x = 0, y = 3 (다른 "행"시작)을 산출합니다.