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

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

利用js canvas實現五子棋游戲

瀏覽:95日期:2024-04-17 14:15:25

本文實例為大家分享了canvas實現五子棋游戲的具體代碼,供大家參考,具體內容如下

html部分

<!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='margin: 0;'> <canvas id='five'></canvas> <h1 style='font-size: 40px;font-weight: bolder;margin-left: 200px;margin-top: 0;margin-bottom: 0;'>五子棋</h1> <h2 id='currole'>輪到:黑</h2> <div style='font-size: 40px;font-weight: bolder;margin-left: 200px;'>勝者:</div></body><script> let cav = document.getElementById(’five’) let ctx = cav.getContext(’2d’) let k = 50 //倍數 let r = k/4 cav.width = cav.height = 16*k ctx.strokeStyle='#000000'; for(let i = 0;i<15;i++){ ctx.beginPath(); ctx.moveTo((i+1)*k,k); ctx.lineTo((i+1)*k,15*k); ctx.stroke(); } for(let i = 0;i<15;i++){ ctx.beginPath(); ctx.moveTo(k,(i+1)*k); ctx.lineTo(15*k,(i+1)*k); ctx.stroke(); } function initer(event){ let x = event.offsetX - k let y = event.offsetY - k let xclose = close(x,0,14) let yclose = close(y,0,14) let nodearr = [] let minxd = Math.abs(x-xclose[0]*k)<Math.abs(x-xclose[1]*k)? Math.abs(x-xclose[0]*k)<r?xclose[0]*k:undefined : Math.abs(x-xclose[1]*k)<r?xclose[1]*k:undefined let maxyd = Math.abs(y-yclose[0]*k)<Math.abs(y-yclose[1]*k)? Math.abs(y-yclose[0]*k)<r?yclose[0]*k:undefined : Math.abs(y-yclose[1]*k)<r?yclose[1]*k:undefined if((minxd!==undefined)&&(maxyd!==undefined)){ nodearr = [minxd,maxyd] } if(nodearr.length!==0){ setNode(nodearr) } } cav.addEventListener('click',initer) function close(coo,lort,rorb){ coo<0?coo=0:coo=coo coo>14*k?coo=14*k:coo=coo let dect = rorb - lort if(dect===1){ return [lort,rorb] }else{ if(coo<(lort+Math.ceil(dect/2))*k){let nlort=lortlet nrorb=lort+Math.ceil(dect/2)return close(coo,nlort,nrorb) }else{let nlort=lort+Math.ceil(dect/2)let nrorb=rorbreturn close(coo,nlort,nrorb) } } } let colorflag = 0 function setNode(arr){ if(gomoku[arr[0]/k][arr[1]/k]!==undefined){ return } if(colorflag===0){ ctx.fillStyle='black' ctx.beginPath(); ctx.arc(arr[0]+k,arr[1]+k,r,0,2*Math.PI); ctx.stroke(); ctx.fill(); checkFinish([arr[0]/k,arr[1]/k]) gomoku[arr[0]/k][arr[1]/k] = colorflag colorflag = 1 document.getElementById(’currole’).innerHTML='輪到:白' }else{ ctx.fillStyle='white' ctx.beginPath(); ctx.arc(arr[0]+k,arr[1]+k,r,0,2*Math.PI); ctx.stroke(); ctx.fill(); checkFinish([arr[0]/k,arr[1]/k]) gomoku[arr[0]/k][arr[1]/k] = colorflag colorflag = 0 document.getElementById(’currole’).innerHTML='輪到:黑' } }</script><script src='http://www.hdgsjgj.cn/bcjs/five.js'></script></html>

外部js文件部分

let gomoku = new Array(15)for(let i = 0;i<gomoku.length;i++){ gomoku[i]=new Array(15)}//black 0 white 1function checkFinish(curnode){ for(let i =0;i<4;i++){ let totalLength = 1 let aflag = true let bflag = true for(let j=0;j<4;j++){ let dictNum = j+1 switch(i){case 0: if(aflag){ (gomoku[curnode[0]+dictNum][curnode[1]]===colorflag) &&((curnode[0]+dictNum)<=14)? totalLength++:aflag=false } if(bflag){ (gomoku[curnode[0]-dictNum][curnode[1]]===colorflag) &&((curnode[0]-dictNum)>=0)? totalLength++:bflag=false } break;case 1: if(aflag){ (gomoku[curnode[0]][curnode[1]+dictNum]===colorflag) &&((curnode[1]+dictNum)<=14)? totalLength++:aflag=false } if(bflag){ (gomoku[curnode[0]][curnode[1]-dictNum]===colorflag) &&((curnode[1]-dictNum)>=0)? totalLength++:bflag=false } break;case 2: if(aflag){ (gomoku[curnode[0]+dictNum][curnode[1]+dictNum]===colorflag) &&((curnode[1]+dictNum)<=14) &&((curnode[0]+dictNum)<=14)? totalLength++:aflag=false } if(bflag){ (gomoku[curnode[0]-dictNum][curnode[1]-dictNum]===colorflag) &&((curnode[1]-dictNum)>=0) &&((curnode[0]-dictNum)>=0)? totalLength++:bflag=false } break;case 3: if(aflag){ (gomoku[curnode[0]+dictNum][curnode[1]-dictNum]===colorflag) &&((curnode[1]-dictNum)>=0) &&((curnode[0]+dictNum)<=14)? totalLength++:aflag=false } if(bflag){ (gomoku[curnode[0]-dictNum][curnode[1]+dictNum]===colorflag) &&((curnode[1]+dictNum)<=14) &&((curnode[0]-dictNum)>=0)? totalLength++:bflag=false } break; } if(totalLength>=5){if(colorflag===0){ document.getElementById(’res’).innerHTML=’勝者:黑方’ cav.removeEventListener('click',initer)}else{ document.getElementById(’res’).innerHTML=’勝者:白方’ cav.removeEventListener('click',initer)}break; } if((aflag===false)&&(bflag===false)){break; } } if(totalLength>=5){ break; } }}//all work and no play makes jack a dull boy

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 浙江清风侠环保设备有限公司| 走心机厂家,数控走心机-台州博城智能科技有限公司 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 脑钠肽-白介素4|白介素8试剂盒-研域(上海)化学试剂有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 建筑资质代办-建筑资质转让找上海国信启航| 四川职高信息网-初高中、大专、职业技术学校招生信息网 | 威客电竞(vk·game)·电子竞技赛事官网 | 锥形螺带干燥机(新型耙式干燥机)百科-常州丰能干燥工程 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 米顿罗计量泵(科普)——韬铭机械 | 集菌仪_智能集菌仪_全封闭集菌仪_无菌检查集菌仪厂家-那艾 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏| 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI |