2013-04-23 2 views
5

Im Building HTML5 canvas가 적용된 John Conways 게임. 모든 셀과 셀의 상태 (죽은/살아 있음)가 포함 된 배열을 포함하는 gameOfLife 개체가 있습니다.자바 스크립트에 두 개의 정수를 추가 할 수 없습니까?

function cell(x,y){ 
    this.x = x; 
    this.y = y; 
    this.isAlive = false; 
} 

I 세포 상태를 둘러싸고있는 세포를 확인하는 방법을 모색하고있다 : 다음은 셀을 기반으로 코드입니다. 이해할 수 있듯이 한 가지 방법은 배열을 반복하여 현재 확인 된 셀 주변에 일치하는 좌표가있는 셀을 찾는 것입니다.

저는 다른 방향으로 가고 싶습니다. 셀의 인덱스에서 Y (및 X) 축의 셀 수 (+1 및 -1의 작은 변화 포함)를 더하고 빼면 모든 맨 위의 인덱스를 찾을 수 있습니다 왼쪽, 왼쪽, 왼쪽 아래, 오른쪽 위, 오른쪽, 오른쪽 하단 셀.

나는 내가 원하는 인덱스 얻을하지 않는 한,하지만이 아이디어를 테스트 할 수 없었다 : 내 업데이트 루프, 그래서

을 :

//I know that there is a cell at the index of exampleIndex + cellsY 
exampleIndex = 200; 

game.getLivingNeighbours(exampleIndex); 


function getLivingNeighbours(i){ 

    console.log(i) //Logs an integer 
    console.log(grid.cellsY) //Logs an integer 
    console.log(game.cells[i + grid.cellsY]); //Undefined?! 

} 
+0

그것은 무엇입니까? 'cellsX' 또는'cellsY'? – Joseph

+0

'i'와'cellsY'를 추가하려고합니다. 'cellsX'가 정수인지 확인하려고 합니다만,'cellsY' –

+0

cellsY를 확인하지 마십시오. 매우 유감입니다. – styke

답변

5

이 수 수 두 가지 이유 : 자바 스크립트 변수에

  1. 왜 그것의 좋은전에 int을 구문 분석의 느슨한 유형입니다산술 연산.

    는 시도 : 당신은 배열에 액세스하려고

    console.log(game.cells[parseInt(i,10) + parseInt(grid.cellsY,10)]); 
    
  2. , 당신은 당신의 배열의 여부를 parseInt(i,10) + parseInt(grid.cellsY,10) 인덱스가 있는지 여부를 확인해야합니다.

+1

아마 오타 또는 말씨 문제가 있지만 당신이 "자바 스크립트 변수가 기본적으로 int가 아닙니다"와 무슨 뜻인지 이해할 수 없습니다. 자바 스크립트 변수 유형은 할당 된 값의 유형입니다. –

+2

JavaScript 변수가 전혀 입력되지 않았습니다.그리고 '+'는 숫자를 추가하고 문자열을 연결하는 데 사용되기 때문에 추가하기 전에 가능한 문자열을 숫자로 명시 적으로 변환하는 것이 좋습니다. – Blazemonger

+0

thanks friends ... 업데이트 된 게시물 :) –

관련 문제