오늘 TIL 의 주제는 트러블 슈팅이다.

 

 

위 코드는 10.02일에 만들어 놓은 코드이다.

선인장의 등장 자체를 패턴화 시키기 위해 사용한 방법으로,

for 문과 setTimeout 이 사용되었다.

 

문제점 

1. setTimeout 

현재 과제에서는, 전방위적으로 deltaTime을 이용하여 시간의 흐름을 계산하고 있다. 

setTimeout 의 ms와는 방식이 다르기 때문에 개별적으로 흘러가는 두 종류의 Time 이

언제 엇나가게 될지 모른다.

 

실제로, 위의 for문 + setTimeout 의 형태를 유지한 채로, 원하는 박자의 게임 흐름을 구현하려고

했으나, 싱크가 맞지 않아 계속해서 실패했다.

 

해결방안

우선 createCactus 의 값을 초기 상태로 돌려주었다.

한 번의 createCactus 실행으로 패턴을 형성하는게 아니라, 

createCactus 자체를 여러번 실행하게 만들어 보려고 한다.

 

 

update 에서 받고있던 deltaTime 과,

간이 인덱스 (?) 를 확용해서 일종의 유사 반복문을 구현해 보았다.

 

가독성이 좋지 않지만, 간단하게 해석하면,

최초 1600  rhythm 이 될 때 까지 대기 ( 1프레임 당, deltaTime*gameSpeed 만큼 증가 )

 

1 비트에 200 rhythm  기준으로 셋팅

pattern [0] 값이  0 인 경우, 선인장  생성하지 않음 

pattern [0] 값이 0 이 아닌 경우, 선인장 생성 ( 효과음도 출력 )

patternIndex ++ 을 통해, 다음엔 pattern[1] 값 참조

 

 

pattertnIndex 를 ++ 해줘서 다음 1400 -> 1600 rhythm  이 되면 두번 째 index 패턴 실행

 

pattern.length 는 반드시 8이기 때문에, 

8까지 모두 실행했으면, 새로운 패턴을 선택한다.

 

cactus_pattern 또한 수정했다. 

pattern 0은 선인장이 등장하지 않는 값,

             1은 선인장이 나오는 값    이다.

 

의도대로 박자가 잘 맞게 되었다.

게임 플레이

 

 

 

아이템 획득 속도에 대한 검증 

클라이언트 조작을 통해 아이템을 무분별하게 등장시켜 획득 할 수 있다.

 

간단하게, 이전 아이템 획득 시간과 현재 획득한 아이템의 획득 시간을 비교하여

비 정상적으로 빠른 속도로 아이템을 습득할 경우, fail을 반환하도록 해 보자.

 

 

해당 코드는, 아이템 획득 시간과 점수의 합에 대한 검증이다.

 

해당 아이템을 획득하기 이전에 획득한 아이템의 획득 시간과 점수의 합을 비교하는 코드이다.

 

문제점

위 코드는 스테이지 점수 획득 검증의 형태를 따라한 것인데,

처음 게임 시작할 때와 첫 아이템 습득 시에는

 

 items 가 빈 배열이기 때문에, currentItemId 를 찾을 수 없게 된다.

 

해결 방법

본문에 나온것 처럼, if 문을 사용하여, currentItemId 값이 존재할 때, (items 가 빈 배열이 아닐 때)

에만 해당 검증을 진행하도록 했다.

 

 

+ Recent posts