달팽이레이싱 마지막 등수 (예: 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);
잘대는거 같은데요 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>
결과
!-->