数字ずらすアレ
空いているマスに数字をずらして順に並べ替えるあのゲーム。
目次に戻る

● 設置例


かつては一家にひとつくらいあった、アレです。正式名称何ていったんでしたっけ。
まずはシャッフルボタンで数字を混ぜ混ぜします。で、空っぽのボタンに面した数字をクリックすると、数字が空いている方へ移動します。
一番最初の状態になるまでがんばってください。下のテキストボックスの数字は現在の手数です。


●ソース
1・JavaScript

<script type="text/javascript">
<!--
function mazeru(){
	tate=3;
	yoko=3;
	max=tate*yoko;
	i=0;
	
	for(i=0;i<200;i++){
		for(n=0;n<max;n++){
			if(document.ninepzl.btn(n).value=="   "){
				rnd=Math.floor(Math.random() * 4);
				switch(rnd){
					case 0:	push=n-yoko;
						break;
					case 1:	push=n+yoko;
						break;
					case 2:	push=n+1;
						break;
					case 3:	push=n-1;
						break;
				}
				if(push<max && push>=0)	idou(push, 1);
			}
		}
	}
	document.ninepzl.txt.value=0;
}

function idou(num, isMazeru){
	yoko=3;
	tate=3;
	max=tate*yoko;
	count=document.ninepzl.txt.value-0;

	tp=num-yoko;
		if(tp<0) tp=max;
	bt=num+yoko;
		if(bt>max) bt=max;
	lf=num-1;
		if((num+1)%yoko==1) lf=max;
	rg=num+1;
		if((num+1)%yoko==0) rg=max;

	if(tp<max){
		if(document.ninepzl.btn(tp).value=="   "){
			document.ninepzl.btn(tp).value
			=document.ninepzl.btn(num).value;
			document.ninepzl.btn(num).value="   ";
		}
	}
	if(bt<max){
		if(document.ninepzl.btn(bt).value=="   "){
			document.ninepzl.btn(bt).value
			=document.ninepzl.btn(num).value;
			document.ninepzl.btn(num).value="   ";
		}
	}
	if(lf<max){
		if(document.ninepzl.btn(lf).value=="   "){
			document.ninepzl.btn(lf).value
			=document.ninepzl.btn(num).value;
			document.ninepzl.btn(num).value="   ";
		}
	}
	if(rg<max){
		if(document.ninepzl.btn(rg).value=="   "){
			document.ninepzl.btn(rg).value
			=document.ninepzl.btn(num).value;
			document.ninepzl.btn(num).value="   ";
		}
	}
	count++;
	document.ninepzl.txt.value=count;
	if(isMazeru!=0) hantei(count);
}

function hantei(count){
	if(document.ninepzl.btn(0).value==" 1 "
	&& document.ninepzl.btn(1).value==" 2 "
	&& document.ninepzl.btn(2).value==" 3 "
	&& document.ninepzl.btn(3).value==" 4 "
	&& document.ninepzl.btn(4).value==" 5 "
	&& document.ninepzl.btn(5).value==" 6 "
	&& document.ninepzl.btn(6).value==" 7 "
	&& document.ninepzl.btn(7).value==" 8 "){
		alert("おめでとう!\n 終了 "+count+"手");	
	}
}
//-->
</script>


2・フォーム

<form name="ninepzl">
<table><tr><td>
<input type="button" value=" 1 " onClick="idou(0, 0)" name="btn"></td><td>
<input type="button" value=" 2 " onClick="idou(1, 0)" name="btn"></td><td>
<input type="button" value=" 3 " onClick="idou(2, 0)" name="btn"></td></tr><tr><td>
<input type="button" value=" 4 " onClick="idou(3, 0)" name="btn"></td><td>
<input type="button" value=" 5 " onClick="idou(4, 0)" name="btn"></td><td>
<input type="button" value=" 6 " onClick="idou(5, 0)" name="btn"></td></tr><tr><td>
<input type="button" value=" 7 " onClick="idou(6, 0)" name="btn"></td><td>
<input type="button" value=" 8 " onClick="idou(7, 0)" name="btn"></td><td>
<input type="button" value="   " onClick="idou(8, 0)" name="btn">
</td></tr></table>
<br><input type="text" name="txt" readonly>
<input type="button" value="シャッフル" onClick="mazeru()">
</form>

●設置方法
上記の1・JavaScriptをHTMLソース内<head>〜</head>に、
2・フォームを<body>〜</body>に貼り付けてください。


目次に戻る