달팽이레이싱 마지막 등수 (예: 7마리 선택 시 7등) 표시 안 되는 이유?

달팽이레이싱 마지막 등수 (예: 7마리 선택 시 7등) 표시 안 되는 이유?

QA

달팽이레이싱 마지막 등수 (예: 7마리 선택 시 7등) 표시 안 되는 이유?

본문

레이싱 등수 체크 함수가 아래 부분입니다.


function racing(){
    play=1;
    for(i=1;i<=set_number;i++){
        if(document.all['m['+i+']'].value>=set_meter && document.all['r['+i+']'].value == 0){document.all['r['+i+']'].value=cnt; cnt++;}
        if(document.all['m['+i+']'].value<set_meter){
            rand=Math.floor(Math.random()*100%set_speed);
            document.all['m['+i+']'].value=(document.all['m['+i+']'].value*1+rand);
            document.all['bar['+i+']'].width=document.all['m['+i+']'].value;
        }
    }
    if(cnt==set_number+1) raceend();
    else LQtime=setTimeout("racing()",10);
}

 

위 함수에서 

 

 

function racing(){
    play=1;
    for(i=1;i<=set_number;i++){

        if(document.all['m['+i+']'].value>=set_meter && document.all['r['+i+']'].value == 0){document.all['r['+i+']'].value=cnt; cnt++;}

        if(document.all['m['+i+']'].value<set_meter){

            rand=Math.floor(Math.random()*100%set_speed);

            document.all['m['+i+']'].value=(document.all['m['+i+']'].value*1+rand);
            document.all['bar['+i+']'].width=document.all['m['+i+']'].value;
        }
    }

    if(cnt==set_number+1) raceend();
    else LQtime=setTimeout("racing()",10);
}

 

 

위 코드 부가 설명을 드리자면,

r['+i+'] : 랭킹 (= 등수)

m['+i+'] : 속도 (= 달린 거리)

set_meter : 설정거리

set_number : 레이싱하는 달팽이 마리 수

LQtime : 달팽이 보폭 시간

 

예를 들어,

설정 파일에서 set_number = 7마리 설정 시,

달팽이가 설정한 거리를 넘고 현재 등수표시가 기본 0으로 된 게 있을 경우 

반복문을 통해서 차례차례 cnt (등수)를 넣어주고 cnt 변수를 1씩 증가시켜서

맨 마지막에서 등수가 설정마리수에 1마리를 더한 숫자와 같으면

종류함수를 호출해 각 달팽이에게 포인트를 쏴주는 식입니다.

 

※ cnt 변수는 1부터 시작.

 

 

왜 마지막 7을 등수에 안 넣고 바로 raceend() 함수를 호출해 버리는 걸까요? 

제가 봤을 땐 논리적으로 큰 이상이 없어보이는데.....

 

어제 하루 종일 이것만 연구하다 시간이 다 가버렸네요. ㅎ 

7이 들어가고 안 들어가고 게임하는데는 전혀 지장 없는데, 궁금해서 살 수가..ㅎ

이 질문에 댓글 쓰기 :

답변 2

이건 단순히 크롬 랜딩속도가 느려서 그런거 같습니다.

약간의 딜레이를 주니 정상적입니다.

setTimeout("raceend()",100);

휴란드 님, 감사합니다. ^^
정말, 님 아니였으면, 오늘도 이것 갖고 씨름할 뻔 했는데....
해답을 보니, 오늘도 공칠 뻔 했네요. 제 머리론...ㅋ
수렁에서 구해주셔서 감사해요.
( ^ _____________ ^ ) ====b

잘대는거 같은데요 input i가 0부터 시작되는거 아니에요?


     <input type="text" name='m[1]' />
     <input type="text" name='r[1]' />
    <br/>
     <input type="text" name='m[2]' />
     <input type="text" name='r[2]' />
    <br/>
     <input type="text" name='m[3]' />
     <input type="text" name='r[3]' />
    <br/>
     <input type="text" name='m[4]' />
     <input type="text" name='r[4]' />
    <br/>
     <input type="text" name='m[5]' />
     <input type="text" name='r[5]' />
    <br/>
     <input type="text" name='m[6]' />
     <input type="text" name='r[6]' />
    <br/>
     <input type="text" name='m[7]' />
     <input type="text" name='r[7]' />
    <br/>
  <script>
    var set_meter = 100;
    var set_number = 7;
    var set_speed = 10;
    var cnt = 0;
    function racing(){
            play=1;
            for(i=1;i<=set_number;i++){
                    if(document.all['m['+i+']'].value>=set_meter && document.all['r['+i+']'].value == 0){document.all['r['+i+']'].value=cnt; cnt++;}
                    if(document.all['m['+i+']'].value<set_meter){
                            rand=Math.floor(Math.random()*100%set_speed);
                            document.all['m['+i+']'].value=(document.all['m['+i+']'].value*1+rand);
                    }
            }
            if(cnt==set_number+1) raceend();
            else LQtime=setTimeout("racing()",10);
    }
    function raceend(){
    
        alert(1);
    }
    racing();
    </script>

 

결과

1935370956_1550798157.7495.png

휴란드 님 관심 갖고 시간 내 답변해주셔서 감사합니다. ^^

제가 봐도 함수엔 이상이 없어보이는데,
설치해서 테스트해보시면 아시겠지만 마지막 등수가 안 찍혀용.

https://codepen.io/sinbi/pen/aXgbLB

위 좌표 접속해서 새로고침해보시면,
크롬에서 7이 안찍히다가 얼럿 확인 버튼을 누르면 그제야 7이 들어가요.
실제게임에선 얼럿에서 확인 누르면 새 게임으로 넘어가 7을 못 봐여.

PS.
i값은 1부터 시작.
for(i=1;i<=set_number;i++){

답변을 작성하시기 전에 로그인 해주세요.
전체 2,633
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT