달팽이레이싱 마지막 등수 (예: 7마리 선택 시 7등) 표시 안 되는 이유? 채택완료
레이싱 등수 체크 함수가 아래 부분입니다.
</p>
<p>function racing(){
play=1;
for(i=1;i<=set_number;i++){</p>
<p> if(document.all['m['+i+']'].value>=set_meter && document.all['r['+i+']'].value == 0){document.all['r['+i+']'].value=cnt; cnt++;}</p>
<p> if(document.all['m['+i+']'].value<set_meter){</p>
<p> rand=Math.floor(Math.random()*100%set_speed);</p>
<p> document.all['m['+i+']'].value=(document.all['m['+i+']'].value*1+rand);
document.all['bar['+i+']'].width=document.all['m['+i+']'].value;
}
}</p>
<p> 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
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);
답변에 대한 댓글 3개
다시 한번 감사 말씀드립니다.
( ^ ________ ^ ) ====b
질문 길이 보자마자 숨이 켁 ... ^^;;;
댓글을 작성하려면 로그인이 필요합니다.
잘대는거 같은데요 input i가 0부터 시작되는거 아니에요?
</p>
<p> <input type="text" name='m[1]' />
<input type="text" name='r[1]' />
<input type="text" name='m[2]' />
<input type="text" name='r[2]' />
<input type="text" name='m[3]' />
<input type="text" name='r[3]' />
<input type="text" name='m[4]' />
<input type="text" name='r[4]' />
<input type="text" name='m[5]' />
<input type="text" name='r[5]' />
<input type="text" name='m[6]' />
<input type="text" name='r[6]' />
<input type="text" name='m[7]' />
<input type="text" name='r[7]' />
<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);
}</p>
<p> function raceend(){
alert(1);</p>
<p> }</p>
<p> racing();
</script>
결과

답변에 대한 댓글 1개
제가 봐도 함수엔 이상이 없어보이는데,
설치해서 테스트해보시면 아시겠지만 마지막 등수가 안 찍혀용.
https://codepen.io/sinbi/pen/aXgbLB
위 좌표 접속해서 새로고침해보시면,
크롬에서 7이 안찍히다가 얼럿 확인 버튼을 누르면 그제야 7이 들어가요.
실제게임에선 얼럿에서 확인 누르면 새 게임으로 넘어가 7을 못 봐여.
PS.
i값은 1부터 시작.
for(i=1;i<=set_number;i++){
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
정말, 님 아니였으면, 오늘도 이것 갖고 씨름할 뻔 했는데....
해답을 보니, 오늘도 공칠 뻔 했네요. 제 머리론...ㅋ
수렁에서 구해주셔서 감사해요.
( ^ _____________ ^ ) ====b