20多行js代码写一个最简单的3x3拼图游戏
按惯例,截图是必须的:
玩法:方向键
胜负:排列出12345678_就算胜利了!
兼容各浏览器,使用了“逆序和”判定,来保证一定有解。
接下来是js代码,不需要HTML配合了,直接放入body就行了。直接体验就轻轻点击这里。
<script>
function gd(){
var arr=[1,2,3,4,5,6,7,8].sort(function(){return Math.random()>.5});
for(var i=0,k=0,n=arr.length;i<n;i++)
for(var j=i+1;j<n;j++)
arr[i]>arr[j] && (k=1-k);
k && (i=arr[n-2]) && (arr[n-2]=arr[n-1]) && (arr[n-1]=i);
return arr.concat(0);
}
function v(){
return (d+'').replace(0,' ').replace(/(.{5}),/g,'$1\r\n');
}
document.writeln('<textarea id="t1" readonly autocomplete="off" style="overflow:hidden;width:70px;height:70px;"></textarea>');
var p=8, d=gd(), t1=document.getElementById("t1");
setTimeout('t1.value=v()',10);
document.onkeyup = function (e){
var k = (e||window.event).keyCode-36, q;
if(k==1 && (p%3<2) || k==3 && (p%3>0) || k==2 && p<6 || k==4 && p>2){
q=p+(k>2?1:-1)*(k%2*2-3);
d[p]=d[q], d[p=q]=0;
if((t1.value=v()).match(/^1,2,3[^\d]*4,5,6[^0]* $/))
alert('YOU WIN !');
}
}
</script>
<a href="javascript:void(p=8,d=gd(),t1.value=v())">重玩</a> 补充:重新写了一个任意行列的版本,做了一些增强,看这里《30多行js代码写一个M*N拼图游戏》,能任选M*N布局,即时切换,即时replay.
相关新闻>>
- 发表评论
-
- 最新评论 更多>>