2014-12-07 6 views
2

나는이 뱀 게임을 적응 시키려고 애 쓰고있다 : http://jsfiddle.net/unsign3d/uq6YL/ 뱀이 그리드의 어느 한쪽에서 이동할 수 있고 다른쪽에 나타날 것이라는 의미에서 "스크롤 그리드"가 있어야한다. 이런 종류의 뱀 게임의 예가 여기에 있습니다 : http://codeincomplete.com/projects/snakes/. 나는 그 해결책이 단순한 것이라고 확신하지만 불행히도 그것은 개념적으로 그리고 구문 론적으로 나의 이해에서 벗어난다.경계가 없다 뱀 게임

function check_collision(x, y, array) { 
    //This function will check if the provided x/y coordinates exist 
    //in an array of cells or not 
    for (var i = 0; i < array.length; i++) { 
     if (array[i].x == x && array[i].y == y) return true; 
    } 
    return false; 
} 

어떤 도움을 주시면 감사하겠습니다 :

충돌 감지 코드입니다.

+0

순환 버퍼 여기 유용 할 수도 있지만 구현하는 방법을 잘 모르겠습니다. – user2444319

답변

0

이 코드 부분은 뱀이 경계를 쳤는지 아닌지 확인합니다. 그는 뱀 x, y가 도달하지 못하는 벽돌 배열을 유지할 것입니다 ("게임 오버"). 각 intervel에서 뱀을 실행하는 스레드는 위치를 업데이트합니다. 새 게재 순위는 x &으로 전달됩니다. 그것이 국경 세포 (배열)의 어느 곳이라도 funtion이 당신을 사실로 돌려 줄 것이라면 그것이 boudary에 부딪쳤다는 것을 의미합니다. 다른 현명한 거짓

0

잠시 생각해 봅시다. 게임의 원래 버전에서 뱀이 보드에서 벗어나면 게임은 끝났습니다. 어떻게 구현합니까? 직사각형 격자로 작업하기 때문에 보드 가장자리의 좌표를 알 수 있습니다. 뱀의 머리가이 범위를 벗어나면 게임이 끝납니다. 위의 예에서

Simple snake board

, 뱀이 여행 할 수없는 (-50, -50), 즉, 기판상의 올바른 위치에 있지 않기 때문에. 따라서 뱀이 움직이면 다음 x 및 y 위치가 유효한지 확인해야합니다. 'x'가 0보다 작거나 100보다 크거나 'y'가 0보다 작거나 200보다 크면 뱀은 거기로 이동할 수 없습니다. 게임의 정규 버전에서는 게임이 종료됩니다.

일단 작동되면 몇 가지 변경 사항 만 적용하여 둘러 감기 스타일 테두리를 구현할 수 있습니다. 먼저 경계의 좌표를 결정하고 보드에 그려야합니다. 이제 새로운 '오프 리밋'좌표를 갖게됩니다. 그러나 뱀이 경계선을 넘을 때 게임을 종료하는 대신 뱀의 'x'또는 'y'좌표 만 변경하면됩니다.

Wrap-around snake board

예를 들어,이 뱀이 오른쪽으로 여행하는 가정 해 봅시다. 그가 국경을 칠 때, 그의 'x'포지션은 95가 될 것입니다. 그렇게되면, 우리는 그를 5로 변경하여 그를 스크린의 왼쪽에 나타나게 할 것입니다. 마찬가지로, 뱀이 위쪽으로 움직여서 국경을 넘기면 그의 'y'위치는 5가됩니다. 화면 하단에 그를 표시하려면, 그 위치를 195로 변경하면됩니다.