
■■■■■■■■■・・・・・・ 左に詰めたとき |
■■■■■■■■■・・・・・・ 左に詰めたとき ・・・・・・■■■■■■■■■ 右に詰めたとき |
■■■■■■■■■・・・・・・ 左に詰めたとき ・・・・・・■■■■■■■■■ 右に詰めたとき ・・・・・・★★★・・・・・・ マークが確定 |
<html>
<head>
<meta charset=utf-8>
<link rel="stylesheet" href="javascript.css" type="text/css">
<title>お絵描き</title>
</head>
<body>
<canvas id="mycanvas" width="240" height="240"></canvas>
<style>
canvas
{ border: 1px solid silver; }
</style>
<script>
var canvas = document.getElementById('mycanvas');
c = canvas.getContext('2d');
// 線の色と太さ
mode= 15;
c.strokeStyle = 'gray';
c.lineWidth = 2;
c.beginPath();
for(var i=0; i<mode+1; i++)
{ c.moveTo(0, i*13);
c.lineTo(mode*13, i*13);
c.moveTo(i*13, 0);
c.lineTo(i*13, mode*13);
}
c.stroke();
</script>
</body>
</html>
|
<html>
<head>
<meta charset=utf-8>
<title>お絵描き</title>
<script>
function Counter(img, sw, sh)
{ this.Img= img; //Image File(0~9の画像)
this.Sw = sw; //Sprite の幅
this.Sh = sh; //Sprite の高さ
//「上, 右, 下, 左」の順
this.View_Num = function(num, x, y)
{ if (num>9)
{ var n= Math.floor(num/10);
var pos = n*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos-2) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
var n= num%10;
var pos = n*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos+2) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
return;
}
var pos = num*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
}
}
</script>
</head>
<body bgcolor=#e0d8d0>
<canvas id="mycanvas" width="360" height="360"></canvas>
<style>
canvas
{ border: 1px solid silver; }
</style>
<script>
var canvas = document.getElementById('mycanvas');
c = canvas.getContext('2d');
mode= 15;
cor= 'black';
// 線の色と太さ
c.strokeStyle = 'gray';
c.lineWidth = 2;
c.beginPath();
for(var i=0; i<mode+1; i++)
{ c.moveTo(0+70, i*16+70);
c.lineTo(mode*16+70, i*16+70);
c.moveTo(i*16+70, 70);
c.lineTo(i*16+70, mode*16+70);
}
c.stroke();
var xt = [[2],[4,2],[7,2],[2,6],[3,6],[2,1,5],[6,5],[1,4,3],[4,3,4],[3,5,2],[7,3,1],[2,2,3,3],[7,3],[1,2,4],[7]];
var yt = [[6],[8,1],[4,3,3],[3,3,5],[2,9,1],[2,2,2,3],[4,9],[4,2,1,1],[5,6],[5,1,1],[6,3],[7,1],[2,7],[2,2],[1]];
var cls = new Counter("numm.gif", 16, 16);
for(var i=0; i<xt.length; i++)
for(var j=0; j<xt[i].length; j++)
cls.View_Num(xt[i][j], j*10+10, i*16+80);
for(var i=0; i<yt.length; i++)
for(var j=0; j<yt[i].length; j++)
cls.View_Num(yt[i][j], i*16+80, j*12+10);
</script>
</body>
</html>
|
画像でカウンターを表示するプログラムは カウンタークラス を参照して下さい。
<script>
document.onmousedown =
function(e)
{ if (!e) e= window.event;
//window.alert("X:" + e.clientX + " Y:" + e.clientY);
var xp = Math.floor((e.clientX - 10)/16)*16+7;
var yp = Math.floor((e.clientY - 10)/16)*16+7;
//window.alert("XP:" + xp + " YP:" + yp + " cor:" + cor);
c.fillStyle = 'black';
c.fillRect(xp, yp, 14, 14);
}
|
document.onmousedown =
function(e)
{ if (!e) e= window.event;
if (e.clientY>380 && e.clientY<420)
{ if (e.clientX<50) cor= 'black';
else if (e.clientX<100) cor= 'red';
else if (e.clientX<150) cor= 'green';
else if (e.clientX<200) cor= 'blue';
else if (e.clientX<250) cor= 'yellow';
else if (e.clientX<290) cor= 'white';
else cor= 'null';
return;
}
var xp = Math.floor((e.clientX - 10)/16)*16+7;
var yp = Math.floor((e.clientY - 10)/16)*16+7;
c.fillStyle = cor;
if (cor=='black' || cor=='white')
{ c.fillRect(xp, yp, 14, 14);
return;
}
if (cor=='null')
{ c.clearRect(xp, yp, 14, 14);
return;
}
c.beginPath();
if (cor=='red') c.arc(xp+4, yp+4, 3, 0, 2 * Math.PI, false);
else if (cor=='green') c.arc(xp+10, yp+4, 3, 0, 2 * Math.PI, false);
else if (cor=='blue') c.arc(xp+4, yp+10, 3, 0, 2 * Math.PI, false);
else c.arc(xp+10, yp+10, 3, 0, 2 * Math.PI, false);
c.fill();
}
・・・
</script>
<p>
<div>黑 赤 緑 青 黄 白 消去</div><br>
</p>
|
function Cross(num, data)
{ var ary= new Array();
var i;
window.alert("data:" + data);
for(i=0; i<data.length; i++)
{ for(j=0; j<data[i]; j++) ary.push(i);
if (ary.length<num) ary.push(-1);
}
var bk= new Array();
for(i=data.length-1; i>=0; i--)
{ for(j=0; j<data[i]; j++) bk.push(i);
if (bk.length<num) bk.push(-1);
}
for(i=ary.length; i<num; i++)
{ ary.push(-1);
bk.push(-1);
}
for(i=0; i<num; i++)
{ if (ary[i]!=-1 && ary[i]==bk[num-i-1]) ary[i]= 1;
else ary[i]= 2;
}
return ary;
}
</script>
</head>
|
<script>
var xt = [[2],[4,2],[7,2],[2,6],[3,6],[2,1,5],[6,5],[1,4,3],[4,3,4],[3,5,2],[7,3,1],[2,2,3,3],[7,3],[1,2,4],[7]];
var yt = [[6],[8,1],[4,3,3],[3,3,5],[2,9,1],[2,2,2,3],[4,9],[4,2,1,1],[5,6],[5,1,1],[6,3],[7,1],[2,7],[2,2],[1]];
xn= yt.length; // 横方向のマス
yn= xt.length; // 縦方向のマス
document.onmousedown =
function(e)
{ if (!e) e= window.event;
var xp = Math.floor((e.clientX-75)/16);
var yp = Math.floor((e.clientY-75)/16);
//window.alert("XP:" + xp + " YP:" + yp + " cor:" + cor);
if (yp>yn+1)
{ if (e.clientX<50) cor= 'black';
else if (e.clientX<120) cor= 'white';
else if (e.clientX<170) cor= 'red';
else if (e.clientX<220) cor= 'green';
else if (e.clientX<270) cor= 'blue';
else if (e.clientX<320) cor= 'yellow';
else cor= 'null';
return;
}
var xw = xp*16+71;
var yw = yp*16+71;
// 行のクロスを調べる
if (xp>=xn && yp<yn)
{ var ans= Cross(xn, xt[yp]);
c.fillStyle = 'black';
for(var i=0; i<xn; i++)
{ if (ans[i]==1) c.fillRect(i*16+71, yw, 14, 14);
else c.clearRect(i*16+71, yw, 14, 14);
}
c.fill();
return;
}
// 列のクロスを調べる
if (yp>=yn && xp<xn)
{ var ans= Cross(yn, yt[xp]);
c.fillStyle = 'black';
for(var i=0; i<yn; i++)
{ if (ans[i]==1) c.fillRect(xw, i*16+71, 14, 14);
else c.clearRect(xw, i*16+71, 14, 14);
}
c.fill();
return;
}
if (xp>=xn || yp>=yn) return;
c.fillStyle = cor;
if (cor=='black' || cor=='white')
{ c.fillRect(xw, yw, 14, 14);
return;
}
if (cor=='null')
{ c.clearRect(xw, yw, 14, 14);
return;
}
c.beginPath();
if (cor=='red') c.arc(xw+4, yw+4, 3, 0, 2 * Math.PI, false);
else if (cor=='green') c.arc(xw+10, yw+4, 3, 0, 2 * Math.PI, false);
else if (cor=='blue') c.arc(xw+4, yw+10, 3, 0, 2 * Math.PI, false);
else c.arc(xw+10, yw+10, 3, 0, 2 * Math.PI, false);
c.fill();
}
var canvas = document.getElementById('mycanvas');
c = canvas.getContext('2d');
cor= 'black';
// 線の色と太さ
c.strokeStyle = 'gray';
c.lineWidth = 2;
c.beginPath();
// 横線
for(var i=0; i<yn+1; i++)
{ c.moveTo(70, i*16+70);
c.lineTo(xn*16+70, i*16+70);
}
// 縦線
for(var i=0; i<xn+1; i++)
{ c.moveTo(i*16+70, 70);
c.lineTo(i*16+70, yn*16+70);
}
for(var i=0; i<yn+1; i=i+5)
{ c.moveTo(0, i*16+70);
c.lineTo(70, i*16+70);
}
for(var i=0; i<xn+1; i=i+5)
{ c.moveTo(i*16+70, 0);
c.lineTo(i*16+70, 70);
}
c.stroke();
var cls = new Counter("numm.gif", 16, 16);
for(var i=0; i<xt.length; i++)
for(var j=0; j<xt[i].length; j++)
cls.View_Num(xt[i][j], j*10+10, i*16+80);
for(var i=0; i<yt.length; i++)
for(var j=0; j<yt[i].length; j++)
cls.View_Num(yt[i][j], i*16+80, j*12+10);
</script>
<p>
<div>黑 白 赤 緑 青 黄 消去</div><br>
</p>
|
![]()
function Counter(img, sw, sh)
{ this.Img= img; //Image File(0~9の画像)
this.Sw = sw; //Sprite の幅
this.Sh = sh; //Sprite の高さ
//「上, 右, 下, 左」の順
this.View_Num = function(num, x, y)
{ if (num>9)
{ var n= Math.floor(num/10);
var pos = n*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos-2) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
var n= num%10;
var pos = n*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos+2) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
return;
}
var pos = num*this.Sw;
var s1= 'style="clip:rect(0px,' + (pos+this.Sw) + 'px,' + this.Sh + 'px,' + pos + 'px);';
var s2 = 'position:absolute;left:' + (x-pos) + 'px;top:' + y + 'px;';
var s = '<img src="' + this.Img + '"' + s1 + s2 + '">';
document.write(s);
}
}
// マークゼロの行(列)を調べます(2:白)
function Cross(num, data)
{ var ary= new Array();
var i;
window.alert("data:" + data);
if (data[0]==0)
{ for(i=0; i<num; i++) ary[i]= 2;
return ary;
}
for(i=0; i<data.length; i++)
{ for(j=0; j<data[i]; j++) ary.push(i);
if (ary.length<num) ary.push(-1);
}
var bk= new Array();
for(i=data.length-1; i>=0; i--)
{ for(j=0; j<data[i]; j++) bk.push(i);
if (bk.length<num) bk.push(-1);
}
for(i=ary.length; i<num; i++)
{ ary.push(-1);
bk.push(-1);
}
//window.alert("array:" + ary);
//window.alert("back:" + bk);
for(i=0; i<num; i++)
{ if (ary[i]!=-1 && ary[i]==bk[num-i-1]) ary[i]= 1;
else ary[i]= 0;
}
return ary;
}
// マスにマークを一個描画する
function Mark(cor, xp, yp)
{ if (xp>=xn || yp>=yn || xp<0 || yp<0) return;
Mark2(cor, xp, yp);
}
function Mark2(cor, xp, yp)
{ var xw = xp*16+base+71;
var yw = yp*16+base+71;
c.fillStyle = cor;
if (cor=='black' || cor=='white')
{ c.fillRect(xw, yw, 14, 14);
return;
}
if (cor=='null')
{ c.clearRect(xw, yw, 14, 14);
return;
}
c.beginPath();
if (cor=='red') c.arc(xw+4, yw+4, 3, 0, 2 * Math.PI, false);
else if (cor=='green') c.arc(xw+10, yw+4, 3, 0, 2 * Math.PI, false);
else if (cor=='blue') c.arc(xw+4, yw+10, 3, 0, 2 * Math.PI, false);
else c.arc(xw+10, yw+10, 3, 0, 2 * Math.PI, false);
c.fill();
}
// 罫線を描画する
function View_Line()
{ // 線の色と太さ
c.strokeStyle = 'gray';
c.lineWidth = 2;
c.beginPath();
// 横線
for(var i=0; i<yn+1; i++)
{ c.moveTo(base+70, i*16+base+70);
c.lineTo(xn*16+base+70, i*16+base+70);
}
// 縦線
for(var i=0; i<xn+1; i++)
{ c.moveTo(i*16+base+70, base+70);
c.lineTo(i*16+base+70, yn*16+base+70);
}
c.moveTo(base+1, base+1);
c.lineTo(xn*16+base+70, base+1);
c.moveTo(base+1, base+1);
c.lineTo(base+1, yn*16+base+70);
for(var i=0; i<yn+1; i=i+5)
{ c.moveTo(base, i*16+base+70);
c.lineTo(base+70, i*16+base+70);
}
for(var i=0; i<xn+1; i=i+5)
{ c.moveTo(i*16+base+70, base);
c.lineTo(i*16+base+70, base+70);
}
c.stroke();
// 数字の表示
var cls = new Counter("numm.gif", 16, 16);
for(var i=0; i<xt.length; i++)
for(var j=0; j<xt[i].length; j++)
cls.View_Num(xt[i][j], j*10+base+10, i*16+base+80);
for(var i=0; i<yt.length; i++)
for(var j=0; j<yt[i].length; j++)
cls.View_Num(yt[i][j], i*16+base+80, j*12+base+10);
}
|
<html>
<head>
<meta charset=utf-8>
<title>いちご</title>
<script src="dotalpha.js">
</script>
</head>
<body bgcolor=#e0d8d0>
<canvas id="mycanvas" width="340" height="340"></canvas>
<style>
canvas
{ border: 1px solid silver; }
</style>
<script>
xt = [[2],[4,2],[7,2],[2,6],[3,6],[2,1,5],[6,5],[1,4,3],[4,3,4],[3,5,2],[7,3,1],[2,2,3,3],[7,3],[1,2,4],[7]];
yt = [[6],[8,1],[4,3,3],[3,3,5],[2,9,1],[2,2,2,3],[4,9],[4,2,1,1],[5,6],[5,1,1],[6,3],[7,1],[2,7],[2,2],[1]];
xn= yt.length; // 横方向のマス
yn= xt.length; // 縦方向のマス
cor= 'black';
base= 16; // マスの基点
document.onmousedown =
function(e)
{ if (!e) e= window.event;
//window.alert("X:" + e.clientX + " Y:" + e.clientY);
var xp = Math.floor((e.clientX-base-75)/16);
var yp = Math.floor((e.clientY-base-75)/16);
//window.alert("XP:" + xp + " YP:" + yp + " cor:" + cor);
// マスのクリック
if (xp>=0 && xp<xn && yp>=0 && yp<yn)
{ Mark(cor, xp, yp);
return;
}
// 行のクロスを調べる
if (xp<-4 && yp<yn)
{ var ans= Cross(xn, xt[yp]);
for(var i=0; i<xn; i++)
{ if (ans[i]==1) Mark('black', i, yp);
else if (ans[i]==2) Mark('white', i, yp);
else Mark('null', i, yp);
}
return;
}
// 列のクロスを調べる
if (yp<-4 && xp<xn)
{ var ans= Cross(yn, yt[xp]);
for(var i=0; i<yn; i++)
{ if (ans[i]==1) Mark('black', xp, i);
else if (ans[i]==2) Mark('white', xp, i);
else Mark('null', xp, i);
}
return;
}
// 色の選択
if (yp>yn+1)
{ if (e.clientX<50) cor= 'black';
else if (e.clientX<120) cor= 'white';
else if (e.clientX<170) cor= 'red';
else if (e.clientX<220) cor= 'green';
else if (e.clientX<270) cor= 'blue';
else if (e.clientX<320) cor= 'yellow';
else cor= 'null';
return;
}
}
var canvas = document.getElementById('mycanvas');
c = canvas.getContext('2d');
View_Line();
</script>
<p>
<div>黑 白 赤 緑 青 黄 消去</div><br>
</p>
</body>
</html>
|
![]()
| 0 | 1 | 2~9 | 10 | 11~15 | 16~24 |
| 0 | 1 | 2~9 | A | B~F | G~P |
numt= ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P']; |
| お絵描きパズルの Down Load |
![]()
<html>
<head>
<meta charset=utf-8>
<title>お絵描き</title>
</head>
<body bgcolor=#e0d8d0>
<h1>お絵描きパズル</h1>
データファイルを選択して下さい。<br><br>
<form name="test">
<input type="file" id="selfile" /><br/>
</form>
<script>
function postForm(value)
{ var form = document.createElement('form');
var request = document.createElement('input');
form.method = 'POST';
form.action = 'http://localhost:8000/dot_game.php';
request.name = 'data';
request.value = value;
form.appendChild(request);
document.body.appendChild(form);
form.submit();
}
var obj1 = document.getElementById("selfile");
//ダイアログでファイルが選択された時
obj1.addEventListener("change",function(evt)
{ var file = evt.target.files;
var reader = new FileReader();
reader.readAsText(file[0]);
//読込終了後の処理
reader.onload = function(ev)
{ var str= reader.result;
str= str.replace(/\n/g, ';');
postForm(str);
}
},false);
</script>
</body>
</html>
|
![]()
//K, 月, 五重の塔, ヨット, クルール
xdata=
[[[0],[2,2],[2,2],[2,2],[2,2],[2,2],[4],[3],[4],[2,2],[2,2],[2,2],[2,2],[2,2],[0]],
[[3,1,5],[1,3,3],[1,1,4,2],[9,1],[1,6,1],[3,5,1],[1,6,1],[9],[1,4],[3,5,1],[1,8,1],[10,1],[2,4,2],[1,1,3,3],[2,1,5]],
[[1],[1],[3],[9],[7],[1,1],[7],[9],[1,1,1],[2,7],[2,9],[3,1,1],[2,7,1],[1,9,2],[2,1,1,3],[3,9,3],[3,11,4],[3,7,4],[4,7,5],[4,7,5]],
[[1,1],[2,2],[2,2],[3,3],[3,1,1],[4,1,2],[4,1,2],[2,1,1,2],[6,1,1],[3,4],[4],[5],[13],[11],[9]],
[[1,1,1,1],[1,1,1,1],[1,3],[4,5],[13],[13],[2,3,1,2],[2,1,1,2,1],[2,3,4],[15],[16],[4,2,5],[3,2,2,3],[13,2],[2,11,4],[3,5,5,4],[4,1,1,1,1,1,5],[4,1,1,1,1,1,5],[4,9,5],[5,7,6]],
・・・
];
//K, 月, 五重の塔, ヨット, クルール
ydata=
[[[0],[0],[0],[13],[13],[3],[2,2],[2,2],[2,2],[2,2],[2,2],[1,1],[0],[0],[0]],
[[2,3,2],[1,2,1,1,1,1,2],[2,1,1,1,1,2,1],[1,2,1,1,1,3],[2,3,2],[15],[13],[13],[6,4],[3,3],[1,1,1],[1,2,1,1],[2,1,2],[3,3],[5,5]],
[[12],[4,6],[1,5],[2],[1],[1,1,1,1,2],[2,2,2,2,5],[17],[3,2,2,2,5],[5,2,2,2,5],[3,2,2,2,5],[17],[2,2,2,2,5],[1,1,1,1,2],[1],[2],[4],[6],[7],[8]],
[[1],[2,1],[3,2],[4,3],[4,3],[4,1,3],[6,1,3],[9,3],[3],[9,3],[3,4],[3,1,4],[2,1,3],[2,1,2],[3,1]],
[[5],[6],[3,6],[4,5,4],[13,1],[3,4,6],[6,2,4,2],[3,1,2,8],[2,3,3,3,2],[8,2,4],[2,3,4,3,2],[3,1,2,8],[8,2,4,2],[4,4,6],[14,1],[4,6,4],[5,6],[3,7],[7],[6]],
・・・
];
<script src="dotdata.js">
|
<form action="dot_auto.html" method="get">
<input type=radio name="str" value="0/英字K" /> 英字K
<input type=radio name="str" value="1/月" /> 月
・・・
<input type=radio name="str" value="57/地獄少女" /> 地獄少女<br>
<input type="submit" value="実行" />
</form>
|
//読込終了後の処理
reader.onload = function(ev)
{ var str= reader.result;
var wk= "dot_auto.html?str=" + str;
location.href = wk;
}
|
<html>
<head>
<meta charset=utf-8>
<title>Dot Menu</title>
</head>
<body bgcolor=#e0d8d0>
<h2>お絵描きパズルを選択して下さい</h2>
<form action="dot_auto.html" method="get">
<input type=radio name="str" value="0/英字K" /> 英字K
<input type=radio name="str" value="1/月" /> 月
<input type=radio name="str" value="2/五重の塔" /> 五重の塔
<input type=radio name="str" value="3/ヨット" /> ヨット
<input type=radio name="str" value="4/クルール" /> クルール<br>
・・・
<input type="submit" value="実行" />
</form>
<hr>
保存パズルの実行ファイルを選択して下さい。<br>
<form name="test">
<input type="file" id="selfile" /><br/>
</form>
<script>
var obj1 = document.getElementById("selfile");
//ダイアログでファイルが選択された時
obj1.addEventListener("change",function(evt)
{ var file = evt.target.files;
var reader = new FileReader();
reader.readAsText(file[0]);
//読込終了後の処理
reader.onload = function(ev)
{ var str= reader.result;
var wk= "dot_auto.html?str=" + str;
location.href = wk;
}
},false);
</script>
</body>
</html>
|
14/いちご |
0/英字K/white,0,0/white,1,0/black,3,5/14/- |
// 行・列(s_line, s_data) を解析して確定マークを設定する
function Think()
{ Debug();
var len= s_line.length;
var wk= [];
l_line= Lset(s_line, s_data);
r_line= Rset(s_line, s_data);
wk= Match(s_line, l_line, r_line);
//DebugDot(wk);
return wk;
}
|
// s_data を左詰めでマップする
function Lset(s_line, s_data)
{ var i, j, p;
var len= s_line.length;
var mkt= [];
for(i=0; i<len; i++) mkt.push(-1);
for(p=0, i=0; i<s_data.length; i++)
{ for(j=0; j<s_data[i] && p<len; j++, p++) mkt[p]= i;
p++;
}
mkt= Adjust(mkt, s_line);
return mkt;
}
|
// 反転して data を右詰めでマップする
function Rset(s_line, s_data)
{ var len= s_line.length;
var dlen= s_data.length;
var wln= s_line.slice(0);
var wdt= s_data.slice(0);
wln= wln.reverse();
wdt= wdt.reverse();
var wkt= Lset(wln, wdt);
mkt= wkt.reverse();
for(var i=0; i<len; i++)
{ if (mkt[i]!=-1) mkt[i]= dlen-mkt[i]-1; }
return mkt;
}
|
// mkt(idx:00,111,2, ...) を s_line(0,1,2) のマークに合わせて調整する
function Adjust(mkt, s_line)
{ var i, j, rt, pt, ml, lt;
var len= s_line.length;
var wt= mkt.slice(0); //リターン値
for(i=0; i<len; i++)
{ if (s_line[i]==2 && wt[i]!=-1)
{ for(rt=i; rt<len && s_line[rt]==2; rt++);
for(pt=i; pt>=0 && wt[pt]!=-1; pt--);
pt++;
wt= StrMove(wt, rt, pt, len-rt);
}
}
for(i=len-1; i>0; i--)
{ if (s_line[i]==1 && wt[i]==-1)
{ for(rt=i; rt>=0 && wt[rt]==-1; rt--);
rt++;
for(pt=rt-1; pt>=0 && wt[pt]!=-1; pt--);
pt++;
ml= rt-pt;
lt= i-ml+1;
wt= StrMove(wt, lt, pt, ml);
}
}
return wt;
}
|
// LLINE と RLINE を照合してマークする
function Match(s_line, l_line, r_line)
{ var len= s_line.length;
var wt= s_line.slice(0);
var ln= -1;
var rn= -1;
for(var i=0; i<len; i++)
{ if (l_line[i]!=-1) ln= l_line[i];
if (r_line[i]!=-1) rn= r_line[i];
if (l_line[i]==r_line[i])
{ if (l_line[i]!=-1) wt[i]= 1;
else if (ln==rn) wt[i]= 2;
}
}
return wt;
}
|
![]()