2016-12-04 10 views
0

나는 Tumult Hype 내에서 Javascript를 사용하여 브레이크 아웃 게임에 대한 코드를 추가하는 데 약간의 도움이 필요합니다. 나는 한 번 당신이 특정 점수를 치면 볼 속도가 증가 할 수 있도록 그것을 찾고 있습니다.자바 스크립트 브레이크 아웃 게임. 점수 간격에서 볼 속도 변경하기

여기에는 속도 향상 장치가없는 코드가 있습니다.

var input1 = event.which || event.keyCode; 

if ((input1 == "37") && (window.setLoopLeft == false)) { // LEFT ARROW PRESSED 
    window.setLoopLeft = true; 
    window.intervalLeft = setInterval(moveLeft, 5); 
} else if ((input1 == "39") && (window.setLoopRight == false)) { // RIGHT ARROW PRESSED 
    window.setLoopRight = true; 
    window.intervalRight = setInterval(moveRight, 5); 
} else if ((input1 == "32") && (window.ballLaunched == false)) { // SPACE BAR PRESSED 
    window.ballLaunched = true; 
    // RUN THE MOVEBALL FUNCTION EVERY 10 MILLISECONDS 
    window.intervalMoveBall = setInterval(moveBall, window.ballSpeed); 
} 

function moveBall() { 
    var ballLeft = parseInt(hypeDocument.getElementById("ball").style.left); 
    var ballTop = parseInt(hypeDocument.getElementById("ball").style.top); 

이것은 내가 추가하려고하는 코드입니다. 이제는 전역 변수를 만들어 window.intervalMoveBall에 적용하는 작업을 계획하고있었습니다. 그런 다음 1000 점의 점수 값을 감지하고 볼 속도를 두 배로하여 10 대신 5 밀리 초 단위로 이동시키는 새로운 함수를 작성합니다.

이제 어떻게 작성해야할지 모르겠다면 if 문을 작성하십시오. 스코어 값을 검출한다. 나는 누군가가 나에게 그것을 보여줄 수있는 방법을 보여 줄 수 있을지 궁금해서 심지어 if와 함께 전역 함수와 새로운 함수를 사용하는 것이 이것을 위해 작동하는지 아닌지 말해 줄 수있다.

+0

현재 공을 어떻게 움직이고 있으며 점수를 어떻게 지키고 있습니까? –

+0

페이지가 점수에 대해 초기화 될 때 발생하는 별도의 기능이 있습니다. 해당 코드는 입니다. hypeDocument.getElementById ("scoreValue2"). innerHTML = window.score; 공은 각 블록이나 패들 바를 치는 위치를 기준으로 설정된 각도로 움직입니다. – Zephyranthes

답변

0

현재 setInterval을 사용하고 있으므로 시간 간격을 변경하려면 원래 간격을 지우고 새 시간 간격으로 새 간격을 시작해야합니다. 더 간단한 방법은

var input1 = event.which || event.keyCode; 

if ((input1 == "37") && (window.setLoopLeft == false)) { // LEFT ARROW PRESSED 
    window.setLoopLeft = true; 
    window.intervalLeft = setInterval(moveLeft, 5); 
} else if ((input1 == "39") && (window.setLoopRight == false)) { // RIGHT ARROW PRESSED 
    window.setLoopRight = true; 
    window.intervalRight = setInterval(moveRight, 5); 
} else if ((input1 == "32") && (window.ballLaunched == false)) { // SPACE BAR PRESSED 
    window.ballLaunched = true; 
    moveBall(); 
} 

function moveBall() { 
    setTimeout(moveBall, window.ballSpeed); 
    // the rest of your moveBall function 
} 

이것은 우리가 때마다 다른 시간 범위를 설정할 수 있다는 것을 의미합니다 ...에서는 setTimeout (그리고 moveLeft와었던 MovieRight에 대해 동일)이 같은 자신을 호출하는 moveBall 기능을 담당하는 것입니다 moveBall, 당신은 또한 게임이 종료되지 않았 음을 확인로서이, 정지 어떤 방법을 추가 할 것이다, 그래서

function moveBall() { 
    setTimeout(moveBall, window.score > 1000 : 5 ? 10); 
    // the rest of your moveBall function 
} 

은 분명히이 무한 루프, 예를 들어, 일부 조건부 논리와 함께, 실행 예 :

function moveBall() { 
    if (window.gameFinished) { 
     return; 
    } 

    setTimeout(moveBall, window.score > 1000 : 5 ? 10); 
    // the rest of your moveBall function 
} 

마찬가지로 창 개체에 저장된 많은 전역 변수를 사용하기가 꽤 어려울 수 있으므로 JavaScript 네임 스페이스를 살펴 보는 것이 좋습니다.