专栏首页Golang语言社区【Golang语言社区】游戏编程--js开发实现简单贪吃蛇游戏(20行代码)

【Golang语言社区】游戏编程--js开发实现简单贪吃蛇游戏(20行代码)

曾经诺基

代码:

<!doctype html>
<html>
<body>
<canvas id="can" width="400" height="400" style="background:Black"></canvas>
<script>
    var sn=[42,41],dz=43,fx=1,n,ctx=document.getElementById("can").getContext("2d");
    function draw(t,c){
        ctx.fillStyle=c;
        ctx.fillRect(t%20*20+1,~~(t/20)*20+1,18,18);
    }
    document.onkeydown=function(e){fx=sn[1]-sn[0]==(n=[-1,-20,1,20][(e||event).keyCode-37]||fx)?fx:n};
    !function(){
        sn.unshift(n=sn[0]+fx);
        if(sn.indexOf(n,1)>0 || n<0||n>399||fx==1&&n%20==0||fx==-1&&n%20==19) return alert("GAME OVER");
        draw(n,"Lime");
        if(n==dz){
            while(sn.indexOf(dz=~~(Math.random()*400))>=0);
            draw(dz,"Yellow");
        }else
            draw(sn.pop(),"Black");
        setTimeout(arguments.callee,130);
    }();
</script>
</body>
</html>

这是开始游戏:

这是游戏结束:

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IT人必读的10个小故事

    1.从前,有两个饥饿的人得到了一位长者的恩赐:一根鱼竿和一篓鲜活硕大的鱼。其中, 一个人要了一篓鱼,另一个人要了一根鱼竿,于是他们分道扬镳了。得到鱼的人原地就用...

    李海彬
  • IT人必读的10个小故事

    1.从前,有两个饥饿的人得到了一位长者的恩赐:一根鱼竿和一篓鲜活硕大的鱼。其中, 一个人要了一篓鱼,另一个人要了一根鱼竿,于是他们分道扬镳了。得到鱼的人原地就用...

    李海彬
  • 【Golang语言社区】H5游戏开发-从零开始开发一款H5小游戏(五) 必要的包装,游戏规则和场景设计

    到这里我们已经讲了游戏的整体设计和实现。一个游戏要完整,还需要给它制定一个评分机制,它是整个游戏的关键所在。就好比一部电影,特效再好看,如果剧情狗血,那也是一部...

    李海彬
  • python pyqt5 QLineEdit文本框

    文本框常用方法:clear() 清除 setEchoMode() :QLineEdit.Normal 正常,NoEcho 不显示输入,Password密码,P...

    用户5760343
  • [PHP] ubuntu下使用uuid扩展获取uuid

    2.uuid的组成中最重要的一个是机器码,大部分是网卡MAC地址, php无法获取到机器码,因此不能直接使用代码来生成一个uuid

    陶士涵
  • go 获取本地ip地址

    solate
  • nodejs常用组件

    mssql 用途:连接SqlServer数据库 node-excel-export 用途:导出excel表格 nodegrass 用途:模拟用户进行get/po...

    Java中文社群_老王
  • 【Python模块】Python UUI

    uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global...

    py3study
  • CentOS下重新安装JDK,避免OpenJDK干扰

    有的时候根据自己的需要,可能要不同版本的JDK,使用如下命令可以查看JDK版本 java -version Centos在安装的时候,自带了一个OpenJDK...

    用户1154259
  • Android Architecture Paging Library详解 | Google I/O大会上的最新发布

    Android高级工程师,6年以上开发经验,有丰富的代码重构和架构设计经验,负责京东商城我的京东的开发工作,热衷于学习和研究新技术。

    京东技术

扫码关注云+社区

领取腾讯云代金券