2012-08-30 2 views
0
 if(loopCount % (20 - loopCount/100) == 0) { 
      if(dropBlock() == false) { 
       mode = -1; 
       loopCount = 1; 
      } 
      if(loopCount == 1900) 
       loopCount--; 
     } 
     loopCount++; 

java로 작성된 책의 테트리스 프로그램입니다. 블록의 속도 저하를 제어하는 ​​데 왜 그런 코드를 사용해야하는지 이해할 수 없습니다. 감사합니다.코드 조각과 혼동하여 블록의 속도를 제어하는 ​​테트리스 게임을 만듭니다.

loopCount의 초기 값은 1이고 게임이 끝나면 dropBlock은 false를 반환합니다. 이 조각은 메인 루프에 포함되어 있습니다. 그리고이 모드는 적절하지 않습니다. 미안하지만 여기서 전체 프로그램을 보여줄 수는 없습니다.

+2

이것은 문맥 없이는 꽤 혼란 스럽습니다. – Blender

+0

@Blender loopCount의 초기 값은 1이고 게임이 끝나면 dropBlock은 false를 반환합니다. 이 조각은 메인 루프에 포함되어 있습니다. – bunnyshell

+0

@Blender 모드는 부적절한 변수입니다. – bunnyshell

답변

0
이 일에 시작 loopcount로 설정하고, 20 loopCount/100 = 0, 그래서 loopCount의 20 % true를 반환, if(loopCount % (20 - loopCount/100) == 0) {

loopCount < (100)의 효과를 조사하기 위해 테이블을 사용할 수 있습니다 것 같습니다

, 40, 60 및 80입니다. loopCount가 100-199라고합시다. 19에서 200으로 나눌 수있는 19에서 18로 나눌 수 있는지 이제 확인하고 있습니다. 정확히 어떤 점에서이를 달성하려고하는지 잘 모르겠습니다. 그런 다음 블록을 떨어 뜨리지 못할 수도 있는지 확인합니다 (dropBlock은 블록을 삭제하려고 시도하고 성공하면 true를 반환하고 실패하면 false를 반환하고 실패하면 모드를 -1로 설정합니다.) 그런 다음 한 번 loopCount 1900에 이르면 상승하지 않습니다 (바로 아래로 1899로 감소하여 본질적으로 감소한).

+0

보았습니다! loopcount가 증가하면 (20-loopCount/100) 값은 점점 더 작아집니다. loopCount가 100만큼 증가 할 때만 변경됩니다. 따라서 제수는 loopCount의 100 개 간격마다 일정하지만 제수는 작고 loopCount가 커지면 작아집니다. 그래서 매 100 회마다 loopCount가 증가 할 때 loopCount가 요구 조건을 충족시킬 수있는 시간이 점점 더 커질 것입니다. – bunnyshell

+0

하지만 13시에 맞으면 아무 것도 나오지 않을 것이며 10시에 다시 한 번 나타날 것입니다. –

+0

문맥을 제공하지 않아서 죄송합니다. 이 게임의 주요 코드가 포함 된 메인 루프가 있습니다. 그리고 게임이 끝날 때까지 반복됩니다. 그러나 블록이 반복 될 때마다 블록이 떨어지지 않아야합니다. 따라서 여기에 loopCount가 추가되어 특정 값을 가진 일부 loopCount에 대해서만 블록이 삭제됩니다. 그리고 위에 설명 된 방법을 사용하여 지정된 값이 매 100 loopCount마다 무엇인지 제어하는 ​​코드 조각입니다. loopCount가 100 증가 할 때마다 블록 속도가 한 단계 증가합니다. – bunnyshell

0

코드는 좋은 것을 작성하지 않는 좋은 예입니다 코드. 마법의 숫자 (1900, 20, 100)로 인해 당신이하고있는 일을하는 이유를 알아 내기가 어렵다.

그러나 이것을 구현하고 값을 인쇄하면 loopCount의 값이 계속 유지된다는 것을 알 수있다. 1에서 1900까지 자라고, 한번 1900을 치면 그곳에 머물러 있습니다.

그래서 논리가하는 것이 1899 년에 감소하고 1900 년에 한 번 반복 될 때마다 1900 년으로 증가한다고 봅니다.

관련 문제