电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

javascript實現貪吃蛇小練習

瀏覽:18日期:2023-06-19 14:20:54

本文實例為大家分享了js實現貪吃蛇的具體代碼,供大家參考,具體內容如下

游戲思路:

創建方塊、控制按鈕(showBlock) 方塊移動(點擊開始,不斷創建并移除前面的方塊,用到隊列先進先出) 控制移動(doUpdoDowndoLeftdoRight,加入用鍵盤控制) 產生食物方塊(generateFood) 吃到食物變長(當方塊位置相同時,吃食物) 判斷撞墻、撞到自己游戲結束 設置積分

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <title>Document</title></head><body> <style> body { margin: 0; padding: 0; } .content { width: 800px; height: 400px; background-color: gray; display: absolute; } </style> <div class='content'> </div> <button onclick='start()'>開始游戲</button> <button onclick='doUp()'>上</button> <button onclick='doDown()'>下</button> <button onclick='doLeft()'>左</button> <button onclick='doRight()'>右</button> <div id='score'>0</div> <script> //定義參數 var snackBlock = {}; snackBlock.top = 20; snackBlock.left = 20; var firstDiv = showBlock(snackBlock.left, snackBlock.top, 'red'); var snackDivArray = [];//裝方塊的數組 snackDivArray.push(firstDiv); var left = 1, right = 2, up = 3, down = 4; var direction = right; var food = generateFood();//生成食物 var hasEat = false; var score = 0; function generateFood() { var left = getRandomNum(39); var top = getRandomNum(19); var foodBlock = showBlock(left, top, 'pink'); foodBlock.left = left; foodBlock.top = top; return foodBlock; } function getRandomNum(max) { return Math.round(Math.random() * max) * 20; } function start() { var interval = setInterval(function () { var newBlock = {}; switch (direction) { case up: newBlock.top = snackBlock.top - 20; newBlock.left = snackBlock.left; break; case down: newBlock.top = snackBlock.top + 20; newBlock.left = snackBlock.left; break; case left: newBlock.top = snackBlock.top; newBlock.left = snackBlock.left - 20; break; case right: newBlock.top = snackBlock.top; newBlock.left = snackBlock.left + 20; break; } var currentLeft = newBlock.left; var currentTop = newBlock.top; var eat = false; //吃食物 if (currentLeft == food.left && currentTop == food.top) { removeBlock(food); food = generateFood(); eat = true; hasEat = true; score += 10;//吃一個加10分 document.getElementById('score').innerHTML = score;//寫入div } snackBlock = newBlock; //是否撞墻 if (currentLeft < 0 || currentLeft >= 800 || currentTop < 0 || currentTop >= 400) { alert('game over!'); clearInterval(interval); return; } if (eat == false) { //移除尾巴 removeBlock(snackDivArray.shift(div)); } //是否撞到自己 snackDivArray.forEach(function (item, index, array) { if (item.top == currentTop && item.left == currentLeft) { alert('game over!'); clearInterval(interval); return; } }); //創建新的身體 var div = showBlock(newBlock.left, newBlock.top, 'red'); div.left = newBlock.left; div.top = newBlock.top; snackDivArray.push(div); }, 300); } //方向控制 function doUp() { if (direction == down && hasEat) { return; } direction = up; } function doDown() { if (direction == up && hasEat) { return; } direction = down; } function doRight() { if (direction == left && hasEat) { return; } direction = right; } function doLeft() { if (direction == right && hasEat) { return; } direction = left; } function showBlock(left, top, color) {//產生方塊 var content = document.getElementById('content'); var snackDiv = document.createElement('div'); snackDiv.style.width = '20px'; snackDiv.style.height = '20px'; snackDiv.style.left = left + 'px'; snackDiv.style.top = top + 'px'; snackDiv.style.background = color; snackDiv.style.position = 'absolute'; content.appendChild(snackDiv); return snackDiv; } function removeBlock(div) {//移除方塊 div.parentNode.removeChild(div); } //鍵盤控制方向 document.onkeydown = function (e) { if (e && e.keyCode == 38) { doUp(); } else if (e && e.keyCode == 40) { doDown(); } else if (e && e.keyCode == 37) { doLeft(); } else if (e && e.keyCode == 39) { doRight(); } } </script></body></html>

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | 字典-新华字典-在线字典查字-字典趣 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 培训无忧网-教育培训咨询招生第三方平台 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 江苏皓越真空设备有限公司| 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 箱式破碎机_移动方箱式破碎机/价格/厂家_【华盛铭重工】 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 棕刚玉_白刚玉_铝酸钙-锐石新材料 |