말경주..밑에글 보고 올려요.. 몇년전에 만든건데.. 비슷하네요 ㅎ
한 6-7년 전쯤엔가 사다리 그리기가 귀찮아서 만들었었던 기억이 나네요.
다만 반쯤 넘어가면 속도가 빠른 놈부터 느려집니다. 반전을 좀 주고 싶었었었던것 같네요.
아래는 소스 입니다. 오래전에 만든것이라 익스전용입니다.
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<STYLE>
body, table, tr, td {font-size:9pt; font-family:돋움; color:#2D2B2C; line-height:17px;}
.input {background-color:white; border:1 solid #928B7F; height:18px; color:#2D2B2C; font-family:돋움; font-size:9pt;}
</STYLE>
<SCRIPT LANGUAGE="JAVASCRIPT">
var IS_SET = false;
var TIME_ID;
var SPEED;
var HOURSE_CNT;
var WINNER = 1;
var HORCE_CH = new Array("▶","▣","▦","◐","⊙");
var HORCE_CH_CNT = 0;
function init() {
if(IS_SET) {
alert("* [RESET] 버튼을 먼져 눌러 주십시오.");
return;
}
SPEED = Number(document.getElementById("D_SPEED").value);
HOURSE_CNT = Number(document.getElementById("H_CNT").value);
if(HOURSE_CNT == "") {
alert("* 경주를 할 말 수를 입력하여 주십시오.");
return;
}
initSetting();
}
function initSetting() {
for(var x=0; x<HOURSE_CNT; x++) {
Start_Play(x);
}
}
var initSpeed = new Array;
function Start_Play(cnt) {
IS_SET = true;
if(cnt % 2 == 0) bgcolor = "bgcolor = #EBEBE3";
else bgcolor = "";
var nodeTr = document.createElement("<TR valign='middle' height='25' id='h"+cnt+"'>");
var nodeTd1 = document.createElement("<TD align='center' width='900' "+bgcolor+">");
var nodeTd2 = document.createElement("<TD align='left' width='30' "+bgcolor+">");
if(HORCE_CH_CNT > 4) {
HORCE_CH_CNT = 0;
}
initSpeed[cnt] = eval((20*cnt)+(22+(cnt*7)));
nodeTd1.innerHTML = (cnt+1)+" Race <DIV id='horseId"+cnt+"' style='display:block;position:absolute;left:10;top:"+eval((20*cnt)+(22+(cnt*7)))+";'>"
+ "<table height=25 width=35>"
+ " <tr>"
+ " <td id='winnerName"+cnt+"' value="+cnt+" winCnt='"+HORCE_CH_CNT+"'>"
+ HORCE_CH[HORCE_CH_CNT]
+ " </td>"
+ " </tr>"
+ "</table>"
+ "</DIV>";
nodeTd2.innerHTML = "<INPUT TYPE='TEXT' VALUE='0' NAME='winners"+cnt+"' SIZE='3' CLASS='input' readOnly>등";
nodeTr.insertAdjacentElement("beforeEnd",nodeTd1);
nodeTr.insertAdjacentElement("beforeEnd",nodeTd2);
document.getElementById("AREA").insertAdjacentElement("beforeEnd", nodeTr);
HORCE_CH_CNT++;
}
var START_CNT = 0;
var winArray = new Array;
function startGame() {
START_CNT++;
if(!IS_SET) {
clearTimeout(TIME_ID);
alert("* [SETTING]을 완료후 게임을 시작하여 주십시오.");
return;
}
var cur_Speed = 0;
var sum_Speed = 0;
var isArrive;
for(var x=0; x<HOURSE_CNT; x++) {
sum_Speed = setSpeed(5);
cur_Speed = (document.getElementById("horseId"+x).style.left).replace(/[a-z]+$/, "");
winArray[x] = new Array(2);
winArray[x][0] = x;
winArray[x][1] = cur_Speed;
winArray = winArray.sort(reverseSort);
if(450 < cur_Speed) {
sum_Speed = setSpeed(SPEED);
for(var i=0; i<winArray.length; i++) {
if(cur_Speed == winArray[i][1]) {
if(i < (winArray.length/2))
cur_Speed = cur_Speed - 1;
else cur_Speed = cur_Speed;
}
}
}
cur_Speed = cur_Speed;
cur_Speed = eval(parseInt(cur_Speed) + parseInt(SPEED) + parseInt(sum_Speed));
for(var i=0; i<winArray.length; i++) {
if(document.getElementById("winnerName"+x).value == winArray[i][0]) {
document.getElementById("winnerName"+x).innerText = (Number(i)+Number(1)) + " "+ HORCE_CH[document.getElementById("winnerName"+x).winCnt];
}
}
isArrive = document.getElementById("winners"+x).value;
cur_Speed = cur_Speed - setSpeed(5);
if(840 <= cur_Speed && isArrive == "0") {
goHorse(x , cur_Speed);
document.getElementById("winners"+x).value = WINNER;
WINNER++;
}else if(isArrive == "0") {
goHorse(x , cur_Speed);
}
}
if(HOURSE_CNT == (WINNER - 1)) {
for(var i=0; i<winArray.length; i++)
document.getElementById("winnerName"+i).innerText = HORCE_CH[document.getElementById("winnerName"+i).winCnt];
clearTimeout(TIME_ID);
return;
}else {
TIME_ID = setTimeout("startGame()" , 100);
}
}
function setSpeed(param) {
var addRunSpeed = Math.ceil(Math.random(param)*param);
return addRunSpeed;
}
function reverseSort(a, b) {
if(Number(a[1]) < Number(b[1]))
return 1;
if(Number(a[1]) > Number(b[1]))
return -1;
return 0;
}
function goHorse(horse , speed) {
var tmp = Number(document.getElementById("horseId"+horse).style.top.replace(/[a-z]+$/, ""));
document.getElementById("horseId"+horse).style.left = speed;
if(Number(tmp)+4 > initSpeed[horse])
document.getElementById("horseId"+horse).style.top = tmp - setSpeed(4);
else
document.getElementById("horseId"+horse).style.top = tmp + setSpeed(4);
}
function reset() {
IS_SET = false;
var remChld;
var rows = oTable.rows;
var itemList = document.getElementById("AREA");
for(var x=0; x<HOURSE_CNT; x++)
itemList.removeChild(document.getElementById("h"+x));
SPEED = 0;
HOURSE_CNT = 0;
WINNER = 0;
}
function onlyNumber(el) {
el.value = el.value.replace(cD/g, '');
}
window.onerror = JSError;
function JSError(message, url, line) {
var str = "MSG:" + message + "\nURL:" + url + "\nLINE:" + line;
alert(str);
return true;
}
</SCRIPT>
</HEAD>
<BODY>
<TABLE BORDER="0" WIDTH="900" ID="oTable">
<TR ID="AREA">
</TR>
</TABLE>
<TABLE BORDER="1" WIDTH="900">
<TR>
<TD WIDTH="100">초기 속도</TD>
<TD>
5 <INPUT TYPE="RADIO" VALUE="5" NAME="D_SPEED" CLASS="input">
7 <INPUT TYPE="RADIO" VALUE="7" NAME="D_SPEED" CLASS="input">
10 <INPUT TYPE="RADIO" VALUE="10" NAME="D_SPEED" CLASS="input" CHECKED>
</TD>
</TR>
<TR>
<TD>말수</TD>
<TD><INPUT TYPE="TEXT" VALUE="5" NAME="H_CNT" SIZE=3 CLASS="input" ONBLUR="onlyNumber(this);"> 마리</TD>
</TR>
<TR>
<TD COLSPAN=2>
<INPUT TYPE="BUTTON" VALUE="SETTING" CLASS="input" ONCLICK="init()">
<INPUT TYPE="BUTTON" VALUE="START" CLASS="input" ONCLICK="startGame()">
<INPUT TYPE="BUTTON" VALUE="RESET" CLASS="input" ONCLICK="reset()">
</TD>
</TR>
</TABLE>
<TABLE>
<TR>
<TD ID="BOARD"></TD>
</TR>
</TABLE>
</BODY>
</HTML>