2013-03-25 2 views
1

나는 안드로이드에 대한 html/javascript 게임에서 일하고 있습니다. 그것은 다음을 수행하는 보드 게임입니다. 다른 색상의 타일이 있으며 사용자는 보드에 하나의 타일 (프로그래밍 방식으로 선택)을 배치 할 수 있습니다. 우리가 같은 색깔/모양의 4 개 이상의 타일을 얻으면 우리는 어떤 점수를 얻습니다. 그리고이 타일들은 사라질 것입니다. 제거 된 타일 위의 타일이 해당 타일을 대체하고 새로운 타일이 빈 장소에 추가됩니다. 그 작동 방식을 보여주는 아래 화상 (이것은 단지 일례이며, 실제 판 다른 치수를 가질 수있다) 다음 타일 I를 확인하기 위해 사용하는 어레이에 저장된 자신의 ID가 <img> 요소자바 스크립트 보드 게임 : 최적화를 찾고

enter image description here

있다 일치 및 교체.

모두 잘 작동하지만 일단 새로운 타일이 보드에 추가되면 새로운 보드를 사용할 수 있는지 전체 보드를 검사해야합니다. 전체 게시판을 검토하는 것이 실제로 느릴 수 있으므로 여기에 조언이 필요합니다. 이 작업을 효율적으로 수행 할 수있는 방법이 있습니까? 여기에 내가 뭘 생각 무엇 : 앞의 예 감안할 때 enter image description here

, 나는 즉, 적색 지역으로 이동 또는 추가 된 요소만을 요소만을 검사에 대해 생각했다. 이동/추가 된 타일 만 확인하면됩니다. 타일이 수직으로 이동하면 효과적 일 수 있습니다. 그러나 타일을 수평으로 제거하는 경우 문제가 될 수 있습니다. 타일이 바닥에 있으면 전체 보드를 조사해야하고 동일한 문제에 직면하게됩니다.

조언이나 제안을 주시면 감사하겠습니다.

참고 : 코드를 추가하지 않은 이유는 지정된 타일의 행과 열을 확인하고 일치하는 항목을 찾기 만하기 때문입니다. 그러나 필요한 경우 제공 할 수 있습니다.

EDIT : 누구나 반대하기 전에 나는 여기에 답을받지 못했기 때문에 게임 개발 섹션에이 질문을 추가했다는 사실을 알리고 싶습니다. :)

편집 : 추가 내 코드

function initializeBoard(){ 
    //items is an array which contains tiles/images names 
    for(var i=0; i < totalItems; i++) 
     board[i+1] = Math.floor(Math.random() * (items.length - 1)) + 1; 
    for(var i=0; i < totalItems; i++) 
    { 
     if(!(i % numberShapesXAxis)) 
      document.write("<BR>"); 

     document.write("<img src=\"images/"+ items[board[i+1]]+ ".gif\" style = \"border:0; height:"+ itemSize+ "px; width:"+ itemSize+ "px;\" name=\"t", i+1,"\" onclick = \"replaceAndCheck(", i+1, ")\"><\/a>"); 
    } 
} 
//so basically board contains image ids. 
+0

이미지에 대한 참조뿐만 아니라 선과 열을 저장 하시길 바랍니다. 네, 코드 (적어도 데이터 구조를 초기화하는 부분과 현재의 이동 논리)를 제공해야합니다. – Bergi

+0

@Bergi 먼저 내 보드 초기화 코드 – Anila

답변

0

어떻게 돌을 이동할 때 새로운 일치하는 경우 확인에 대한. 따라서 석재 x가 아래로 내려갈 때 X의 새로운 위치가 일치하는지 확인하십시오. 그렇게하면 재귀 적 방법을 만들 수 있습니다.

+0

을 추가하여 답변 해 주셨습니다. 내가 당신의 방법을 사용하고 나는 타일을 수평으로 제거한다면, 타일을 일치하는지 검사하고,이 타일 (타일이 일치하는 경우)의 변경 사항에 따라 다른 타일을 확인할 것입니다. 그리고 새로운 타일에 대한 일치가 없으면 한 레벨 되돌아 가서 두 번째 타일을 확인하고 전체 프로세스를 다시 시작합니다. 그게 내가해야하는 일이라면, 그렇게 느리지 않니? – Anila

+0

돌을 추가 할 때마다 수평과 수직 만 확인하면됩니다. 그래서 그것은 많은 처리가 아닙니다. 1 블록 아래로 이동한다고 해봅시다. 새로운 행을 만들 수 있는지 확인하기 위해 블록 아래의 돌을 확인하기 만하면됩니다. 왜냐하면 돌 위에있는 돌들은 여전히 ​​동일합니다 (그 윗줄이 아니라면). 때때로 전체 분야를 확인하는 데 더 오래 걸릴 것입니다. –

+0

전적으로 당신과 동의하지만, 제가 말하고자하는 것은 제가 한 돌에 대해 수직 및 수평으로 확인하는 것입니다. 일치하는 것이 있으면 라인 또는 열이 제거되고, 위에있는 타일은 아래로 이동하고 새로운 타일은 장소.그리고 새로운 시합이 가능할 수도 있습니다. 새로운 성냥이 있는지 확인하려면 모든 새로운 타일을 확인해야한다는 데 동의합니까? – Anila