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

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

JavaScript實現簡單貪吃蛇效果

瀏覽:5日期:2023-06-24 17:55:19

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

上代碼之前,先給大家看一下效果:

JavaScript實現簡單貪吃蛇效果

是不是想說:我能這樣玩一天…

話不多說,代碼如下:

<script> class Map{ constructor(){ // 提前設定將來的地圖的樣式數據 this.w = 450; this.h = 250; this.c = '#DDD'; // 執行創建地圖方法 this.createEle(); } createEle(){ this.mapEle = document.createElement('div'); this.mapEle.style.cssText = `width:${this.w}px;height:${this.h}px;background:${this.c};margin:100px auto;position:relative;border:solid 10px #AAA;`; document.body.appendChild(this.mapEle); } } class Food{ constructor(){ // 提前設定將來的食物的樣式數據 this.w = 10; this.h = 10; this.c = 'red'; this.x = 0; this.y = 0; // 執行創建食物方法 this.createEle(); } createEle(){ this.foodEle = document.createElement('div'); this.foodEle.style.cssText = `width:${this.w}px;height:${this.h}px;background:${this.c};position:absolute;left:${this.x * this.w}px;top:${this.y * this.h}px;border-radius:10px`; m.mapEle.appendChild(this.foodEle); } randomPos(){ // 隨機位置,隨機產生的是格子的位置,不是真正的像素 this.x = random(0,(m.w-this.w) / this.w); this.y = random(0,(m.h-this.h) / this.h); // 設置位置時,要換算成像素,然后再生效 this.foodEle.style.left = this.x * this.w + 'px'; this.foodEle.style.top = this.y * this.h + 'px'; } } class Snake{ constructor(){ // 提前設定將來的蛇節的樣式數據 this.w = 10; this.h = 10; // 因為蛇由多個設計組成,每個蛇節都有自己的獨立信息,所以數據結構設計成如下格式 this.body = [{ ele:null, x:4, y:3, c:randomColor() },{ ele:null, x:3, y:3, c:randomColor() },{ ele:null, x:2, y:3, c:randomColor() }]; // 提前設置默認方向 this.d = 'right'; // 開始創建蛇節元素,設置樣式 this.createEle(); } createEle(){ // 使用循環多次創建,因為有多個蛇節 for(var i=0;i<this.body.length;i++){ // 創建之前,需要判斷元素是否已經存在,如果已經存在,不需要創建 if(!this.body[i].ele){ this.body[i].ele = document.createElement('div'); m.mapEle.appendChild(this.body[i].ele); } this.body[i].ele.style.cssText = `width:${this.w}px;height:${this.h}px;background:${this.body[i].c};position:absolute;left:${this.body[i].x * this.w}px;top:${this.body[i].y * this.h}px;border-radius: 10px`; } // 延遲之后,開始移動 setTimeout(()=>{ this.move(); },200); } move(){ // 從最后一個元素向前找前一個元素的坐標,直到第一個 for(var i=this.body.length-1; i>0; i--){ this.body[i].x = this.body[i-1].x; this.body[i].y = this.body[i-1].y; } // 第一個元素根據默認方向,決定想哪走 switch(this.d){ case 'left': this.body[0].x -= 1; break; case 'right': this.body[0].x += 1; break; case 'top': this.body[0].y -= 1; break; case 'bottom': this.body[0].y += 1; break; } // 移動過程中,判斷是否撞到邊界,任意一個邊界都不行 if(this.body[0].x < 0 || this.body[0].y < 0 || this.body[0].x > ((m.w-this.w) / this.w) || this.body[0].y > ((m.h-this.h) / this.h)){ alert('撞墻了'); return; } // 移動過程中,判斷是否與食物的坐標重復,如果重復 if(this.body[0].x === f.x && this.body[0].y === f.y){ // 給蛇增加一個蛇節 this.body.push({ ele:null, x:this.body[this.body.length-1].x, y:this.body[this.body.length-1].y, c:randomColor() }) // 刷新食物的坐標 f.randomPos(); } // 移動過程中,判斷蛇頭的坐標是否與某個任意一個蛇節的坐標重復 for(var i=1;i<this.body.length;i++){ if(this.body[0].x == this.body[i].x && this.body[0].y == this.body[i].y){ // 如果重復,撞到自己,結束程序 alert('撞到自己了'); return; } } this.createEle(); } direct(type){ switch(type){ case 37: if(this.d === 'right') break; this.d = 'left'; break; case 38: if(this.d === 'bottom') break; this.d = 'top'; break; case 39: if(this.d === 'left') break; this.d = 'right'; break; case 40: if(this.d === 'top') break; this.d = 'bottom'; break; } } } function random(a,b){ return Math.round(Math.random()*(a-b)+b) } function randomColor(){ return `rgb(${random(0,255)},${random(0,255)},${random(0,255)})` } var m = new Map(); var f = new Food(); f.randomPos(); var s = new Snake(); // 當按下鍵盤時,將按下的鍵盤的code值,傳給蛇的專屬處理方法 document.onkeydown = function(eve){ var e = eve || window.event; var code = e.keyCode || e.which; s.direct(code); }</script>

小編還為大家準備了精彩的專題:javascript經典小游戲匯總

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 24位ADC|8位MCU-芯易德科技有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗| 嘉兴泰东园林景观工程有限公司_花箱护栏 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 船老大板材_浙江船老大全屋定制_船老大官网 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 湖南成人高考报名-湖南成考网 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 科威信洗净科技,碳氢清洗机,超声波清洗机,真空碳氢清洗机 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 广东机电安装工程_中央空调工程_东莞装饰装修-广东粤标建设有限公司 |