50多行的2048游戏,javascript代码!!

zy4889 2017-10-02 10:23:16
里面除了多重循环要动点脑筋外,其它都很简单。 试玩下看你能过关不?

<!doctype html>  <html>  <body bgcolor="#ffeedd">
<canvas id="can" width="610" height="610" style="background: #888"></canvas>
<div id="ffff" aligh="center" style="width:640px;font:22px/22px 黑体;background:#ffeedd;color:#069"></div>
<script>
var ff=-2,map=[];
var ctx = document.getElementById("can").getContext("2d")
var keycom={"37":"ck(1,1,6)","39":"ck(2,-1,6)","38":"ck(4,6,1,2)","40":"ck(8,-6,1,4)"};
ctx.font="80px arial",ctx.textAlign="center";

function mapstart(){
for(i=j=0;i<36;i++){
map[i]=0;
if(i<6||i%6==0||i%6==5||i>30) map[i]=3;}
map[7]=map[8]=1;
redraw();}

function redraw(){
for(i=0;i<36;i++)
draw(i,map[i]);}

function draw(t,c) {
var cc,ksx=t%6*150-140,ksy=~~(t/6)*150-140;
cc="#"+(0xaaa-c/2).toString(16);
ctx.fillStyle = cc;
ctx.fillRect(ksx,ksy,140,140);
ctx.fillStyle = "#444";
if(c)ctx.fillText(c,ksx+65,ksy+100,80);}

function ck(cs,st,nx,bc){
var i,j,k,n,r,m=0,arr=[],ad=0,bc=bc||0;
for(i=0;i<4;i++){
for(j=0;j<3;j++){
k=0,n=cs+j*st+i*nx+7+bc;
while(1){k-=st; if(map[n+k]!=0)break;}k+=st; if(map[n]-map[n+k])ad=1;else;r=map[n+k],map[n+k]=map[n],map[n]=r;}
for(j=0;j<3;j++){
n=cs+j*st+i*nx+7+bc;
if(map[n]==map[n-st]&&map[n]+map[n-st]){map[n-st]*=2;map[n]=0;ad=1;ff+=map[n-st];
if(map[n-st]>=2048){alert("恭喜过关! 得分:"+ff);}}}
for(j=0;j<3;j++){
k=0,n=cs+j*st+i*nx+7+bc;
while(1){k-=st; if(map[n+k]!=0)break;}k+=st; if(map[n]-map[n+k])ad=1;else;r=map[n+k],map[n+k]=map[n],map[n]=r;}}
if(ad){var mapk=[];
for(i=7;i<29;i++)if(map[i]==0)mapk.push(i);
map[mapk[~~(Math.random()*mapk.length)]]=~~(Math.random()*3)>1?4:2;}
redraw();
document.getElementById("ffff").innerHTML=("score:"+ff); //显示分数
for(i=7;i<29;i++)if(i%6>0&&i%6<5){
arr=[map[i-1],map[i+1],map[i-6],map[i+6]]
for(j in arr)
if(map[i]==arr[j]||mapk.length>1) return;}
alert("游戏结束! 得分:"+ff);}

mapstart();
ck(1,1,6);
document.onkeydown=function(e){eval(keycom[(e||event).keyCode]);}
</script> </body> </html>
...全文
272 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2017-10-05
  • 打赏
  • 举报
回复
zy4889 2017-10-02
  • 打赏
  • 举报
回复
运行效果图, 我过关啦!!

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧