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

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

js+canvas實現紙牌游戲

瀏覽:147日期:2024-05-17 14:01:10

本文實例為大家分享了js+canvas實現紙牌游戲的具體代碼,供大家參考,具體內容如下

廢話不多說,先上地址

運行截圖

js+canvas實現紙牌游戲

js+canvas實現紙牌游戲

最后如果完成了會有結束動畫,我技術比較渣,難以玩到結束,就不上完成動畫截圖了。

游戲介紹

好吧,可能有些好學生在做上機實驗時沒有玩紙牌游戲,所以容我介紹一下這個游戲,這個游戲是win7自帶的一個紙牌類游戲,游戲規則是:將牌按一定的規則碼放,最終將所有的牌牌面朝上勝利。有兩個地方可以用來碼牌,上:以A開頭,即將碼放的牌的花色相同,且牌面值比原來的牌面大1,則可以碼放成功;下:以K開頭,即將碼放的牌的顏色不同,且牌面值比原來的牌面小1,則可以成功碼放。

支持的操作

點擊、拖拽相比微軟紙牌,增加了點擊牌自動找到合適的位置的碼放方式,所以整個游戲大部分操作只需要點擊就可以了。

設計思路

1. 游戲運行驅動

游戲以玩家操作(鼠標點擊與移動)為驅動。 點擊與移動鼠標時,通過記錄鼠標的位置與狀態,可以得到以下四個事件(按下、移動、彈起、單擊)。 首先,需要注冊鼠標點擊、移動和彈起事件

function BindEvent() { $(window).bind('mousedown touchstart', function (e) { e.preventDefault(); var x; var y; if (e.type == 'touchstart') { x = e.originalEvent.changedTouches[0].clientX; y = e.originalEvent.changedTouches[0].clientY; } else { x = e.clientX; y = e.clientY; } if (isPlayingAnimation) { return; } ActionDown(x, y - 50); }); $(window).bind('mousemove touchmove', function (e) { e.preventDefault(); var x; var y; if (e.type == 'touchmove') { x = e.originalEvent.changedTouches[0].clientX; y = e.originalEvent.changedTouches[0].clientY; } else { x = e.clientX; y = e.clientY; } if (isPlayingAnimation) { return; } ActionMove(x, y - 50); }); $(window).bind('mouseup touchend', function (e) { e.preventDefault(); var x; var y; if (e.type == 'touchend') { x = e.originalEvent.changedTouches[0].clientX; y = e.originalEvent.changedTouches[0].clientY; } else { x = e.clientX; y = e.clientY; } if (isPlayingAnimation) { return; } ActionUp(x, y - 50); }); }

然后在彈起事件里面檢測鼠標在彈起之前移動了多少距離,如果移動的距離很小,可以忽略不計,則認為這是一次點擊操作。

注意:這里事件注冊不是在每張牌上,因為52張牌實際上都畫在canvas上,然而52張牌的坐標都是知道的,所以通過計算就可以知道用選擇了哪些牌,正在將牌移到哪里。等玩家松手后就可以實現碼放操作。

2. 界面設計

頂欄用于顯示積分、時間

<div id='titleContainer'> <div>Score:<span id='score'>0</span></div> <div>Timer:<span id='timer'>00:00:00</span></div></div>

接下來就是桌面

<div id='deskTop'> <canvas id='canvasBack'></canvas> <canvas id='canvasFont'></canvas></div>

可以看到,桌面有兩個canvas,一前一后,這實際上是將游戲畫面分為了兩層,玩家看到的畫面是兩個畫面疊加在一起的。

之所以用兩個層,主要是為了避免實時繪制整個界面,鼠標選中一些牌后將要實施移動操作,這時實際上只有被鼠標選中的那些牌的位置在變化,而桌上剩余的牌實際上沒有任何變化,這時如果還實時繪制后面的沒有變化的牌有些浪費。所以把鼠標選中的那些牌拿出來,放到canvasFont層里面,這樣,兩個層都不用實時繪制,被鼠標選中的牌在移動的時候只需要移動他們被繪制在的canvasFont就可以了。

3. 流程

js+canvas實現紙牌游戲

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 氟塑料磁力泵-不锈钢离心泵-耐腐蚀化工泵厂家「皖金泵阀」 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 分子蒸馏设备(短程分子蒸馏装置)_上海达丰仪器 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 好物生环保网、环保论坛 - 环保人的学习交流平台 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 郑州律师咨询-郑州律师事务所_河南锦盾律师事务所 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 护栏打桩机-打桩机厂家-恒新重工 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 金属检测机_金属分离器_检针验针机_食品药品金属检探测仪器-广东善安科技 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 陕西安闸机-伸缩门-车牌识别-广告道闸——捷申达门业科技 | 湖南教师资格网-湖南教师资格证考试网 | 焦作网 WWW.JZRB.COM | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 刘秘书_你身边专业的工作范文写作小秘书| 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 |