龙虎游戏

拿一个斗地主必要的东西给大家记牌器

拿一个斗地主必要的东西给大家记牌器

前言
最近一段时间,闲暇之余玩了几把斗地主,可惜的是自己没钱买记牌器,脑子又记不住那么多牌,经常翻车,震怒!遂写记牌器,逆天改命!
界面
不用多说,肯定是模仿斗地主的记牌器最实用好看啦。


交互首先,怎么设计这个记牌器的交互才是关键,因为我们只能手动记牌,其他牌友出了什么牌赌博技巧,我们就从一副牌里减去出掉的牌。
想法1:键盘输入,回车|按钮出牌
如果是1-9,那肯定是很快的,但是JQK大小王这个输入起来太麻烦,如果换成其他键盘上连续的字母来代替JQK大小王那么又需要记忆的成本了。

想法2:点击选取,然后回车|按钮出牌
这个其实是比较符合我们的斗地主的操作逻辑的,但是有一个问题如果我出的是飞机的话,就要点很多下,非常麻烦!不太行。

想法3:点击+滑动直接出牌,去除回车或者按钮,右键撤回
这个就是最终的交互逻辑了,如果对手只出了1张,那么我们只需要点击就行,如果出连队,飞机,那我们只需要滑几下而已。因为去除了出牌按钮,所以容易点错,这里加入了一个右键给某张牌撤回一张的功能。实现思路:画出界面,13种牌(4张/种)+大小王(2张,这里并未区分大小王,因为一般我只是怕炸弹而已,大小王缺一张怕锤子,而且缺了一张以后,不管是大王还是小王都是最大的,有区别吗?)添加左键点击事件,以及左键按下滑动事件。阻止默认右键事件,添加右键点击事件。做一些细节的处理,比如说4张牌红色警告,0张牌,牌面变灰色等等。实现1:画界面这里实在太简单,不想说了。你可以手动写十几个div,也可以用js动态添加。
实现2:左键点击和滑动处理我们这里应该分成两布,第一步是选,第二步是出牌。所以我们可以用一个数组来保存我们已经选择的牌的序号。
左键点击
直接将这个牌的序号添加进数组然后出牌

滑动
两种做法,一种是通过坐标定位,判断鼠标移动前后距离包含了哪几个牌来决定哪些牌应该被选取。第二种就是给每个牌添加mouseenter,mouseleave事件,鼠标经过的时候,就会触发,就把出发的牌的序号添加进数组。然后出牌

实现3:右键增加牌数这里唯一要注意的是下面这个,首先屏蔽默认的右键事件。
document.oncontextmenu> <head> > > ></div> > >leelei</a></p> <p>用法: 鼠标【点击】直接出牌,或者【点击滑动】出牌,右键单击某张牌可以增加牌数(用于防止点错)</p> <p>适用于: 斗地主新手,并且没有钱买记牌器,并且经常开着电脑的时候顺便手机玩斗地主</p> </div> </body> <script> //常量 const arr = [3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A', 2, ' ']; const nums = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2]; const TYPE_CHOSEN = ' card--chosen'; const TYPE_WARNING = ' card--warning'; const TYPE_EMPTY = ' card--empty'; //储存已经选择 let chosenArr = []; //添加类名 function addClass(e, name) { if (e.className.indexOf(name) == -1) { e.className += name; } } //移除类名 function removeClass(e, name) { e.className = e.className.replace(name, '') } //初始化卡片 function initCards() { let box = document.getElementById('box'); let frag = document.createDocumentFragment(); for (let i = 0; i < 14; i++) { let ele = document.createElement('div'); ele.className = 'card' + TYPE_WARNING; ele.innerText = arr[i]; ele.setAttribute('count', nums[i]); ele.setAttribute('index', i); frag.append(ele) } box.append(frag); } //初始化输入 function initSlideInput() { let cards = document.getElementsByClassName('card'); //鼠标按下时注册 box.addEventListener('mousedown', installSlideInput) //鼠标抬起卸载 box.addEventListener('mouseup', uninstallSlideInput) box.addEventListener('mouseleave', uninstallSlideInput) //注册滑动输入 function installSlideInput() { Array.from(cards).forEach((e) => { e.addEventListener('mouseenter', slideSelect) e.addEventListener('mouseleave', slideSelect) }) } //卸载滑动输入 function uninstallSlideInput() { Array.from(cards).forEach((e) => { e.removeEventListener('mouseenter', slideSelect) e.removeEventListener('mouseleave', slideSelect) }) submit(); } //点击输入,一直有效 Array.from(cards).forEach((e) => { e.addEventListener('click', function (event) { slideSelect(event); submit(); }) }) //滑动输入 function slideSelect(event) { let idx = event.currentTarget.getAttribute('index'); if (event.currentTarget.className.indexOf(TYPE_CHOSEN) == -1) { addClass(event.currentTarget,TYPE_CHOSEN) chosenArr.push(idx); } } } //重置全部牌的状态,凸起->对齐 function reset() { chosenArr = []; let cards = document.getElementsByClassName('card'); Array.from(cards).forEach((v, i) => { removeClass(v,TYPE_CHOSEN) }); } //出牌 function submit() { let cards = document.getElementsByClassName('card'); chosenArr.forEach((v, i) => { cards[v].setAttribute('count', cards[v].getAttribute('count') - 1); removeClass(cards[v],TYPE_WARNING); if (cards[v].getAttribute('count') < 1) { //最小为0,设置为空状态 cards[v].setAttribute('count', 0); addClass(cards[v],TYPE_EMPTY) } }); //重置状态 reset(); } //右键加牌,防止出错牌 function addCardCount(e) { if (e.getAttribute('count') != undefined) { e.setAttribute('count', e.getAttribute('count') - 0 + 1); } if (e.getAttribute('count') >= nums[e.getAttribute('index')]) { e.setAttribute('count', nums[e.getAttribute('index')]); addClass(e,TYPE_WARNING) } else if (e.getAttribute('count') > 0) { removeClass(e,TYPE_EMPTY); } } window.onload = function () { document.oncontextmenu = function (event) { event.preventDefault(); if (event.button == 2) { addCardCount(event.target) } }; initCards(); initSlideInput(); } </script> </html>具体代码就在这了 大家可以自己去试着做做 。
[点击进群]密码111
[原文](【必赢】写一个斗地主记牌器 - 个人文章 - SegmentFault 思否)

上一篇:龙虎和游戏 ROHS认证与CE认证区别RoHS认证范围包含那些    下一篇:博彩问答 大公司和小公司的程序员差别在哪    

友情链接:

Powered by 龙虎游戏 @2013-2022 RSS地图 HTML地图

网站统计——

  • 谷歌搜索留痕推广
  • 谷歌搜索留痕排名技术
  • 谷歌快速排名
  • 留痕方法
  • 谷歌搜索快速方法
  • google搜索留痕程序
  • 谷歌快速排名
  • 澳门太阳城
  • 最大博彩公司
  • 谷歌搜索关键词排名
  • 搜索留痕程序
  • 谷歌排名出售
  • 谷歌蜘蛛池排名
  • 搜索留痕软件
  • 缅甸果敢赌场
  • 电子游艺规则
  • 谷歌留痕推广
  • google引流程序
  • 谷歌快速排名
  • google引流程序
  • 留痕推广
  • 大西洋城赌场
  • 买球地址
  • 搜索留痕
  • 搜索留痕程序出售
  • 谷歌蜘蛛池排名技术
  • 留痕程序
  • 如何提高google搜索排名
  • 数字币博彩
  • 洗钱方法
  • Google留痕收录
  • 最新谷歌搜索留痕排名
  • 搜索留痕
  • Google留痕收录
  • google搜索留痕
  • 数字币博彩网站
  • 足球投注平台
  • 博彩推广话术
  • 推广引流方法
  • 引流方法
  • 博彩推广话术
  • 网上博彩推广引流
  • 数字币赌场
  • 皇冠现金网
  • 蜘蛛池排名
  • 谷歌蜘蛛池
  • 留痕程序出售
  • google搜索留痕程序
  • 比特币网上赌场
  • 洗钱平台
  • 搜索留痕
  • 博彩推广方式
  • 网上博彩推广
  • 快速排名
  • 搜索留痕程序
  • bbin平台大全
  • 体育博彩公司排名
  • 留痕排名技术
  • 最新谷歌关键词排名
  • 推广渠道
  • 谷歌快速排名
  • 博彩推广
  • 世界杯赌球地址
  • 皇冠博彩公司
  • 谷歌排名出售
  • 博彩引流渠道
  • 搜索留痕程序
  • google搜索留痕
  • 引流渠道
  • 果敢网上赌场
  • 世界杯赌球
  • 搜索留痕方法
  • 博彩搜索留痕
  • 博彩引流
  • 博彩引流
  • 搜索留痕
  • 缅甸网上赌场
  • 欧洲杯赌球
  • 谷歌搜索排名
  • 留痕程序
  • 网上博彩推广引流
  • 留痕技术
  • 搜索留痕技术出售
  • 澳门威尼斯人网上赌场
  • 外围博彩
  • 博彩网站推广
  • 推广引流
  • 留痕程序出售
  • 谷歌推广引流技术
  • 推广引流方法
  • 美国在线赌场
  • 沙巴体育投注平台
  • 最新谷歌搜索留痕
  • 谷歌蜘蛛池排名技术
  • 网站推广方法
  • 留痕程序出售
  • 博彩推广方法
  • 菠菜论坛
  • 买球平台
  • 谷歌搜索留痕
  • 蜘蛛池排名
  • 博彩公司推广渠道
  • 谷歌搜索留痕
  • 博彩公司推广渠道
  • 真钱游戏
  • 网上赌球地址
  • 赌球平台推荐
  • 赌球网址
  • 博彩包网
  • 买球app
  • 澳门博彩公司
  • 威尼斯人赌场
  • 博彩平台推荐
  • 美国博彩网站
  • 缅甸实体赌场
  • 柬埔寨网上赌场
  • 柬埔寨在线赌场
  • 韩国博彩
  • 支持人民币的博彩公司
  • 世界五大比特币交易所
  • 欧易是哪个国家的
  • 中币跑路
  • 亚洲博彩公司
  • 合法网上赌场
  • 马尼拉赌场
  • 支持人民币的博彩公司
  • 大陆博彩平台
  • 澳门新葡京娱乐城
  • 老挝赌场
  • 世界赌场排名
  • 网上博彩公司排行
  • 菠菜论坛
  • 东南亚赌博网站
  • 虚拟币博彩
  • 澳门百家乐网址
  • 网上博彩导航
  • 区块链百家乐游戏
  • 马来西亚博彩公司
  • 越南赌场
  • 区块链百家乐
  • 香港娱乐场
  • 澳大利亚赌博网站
  • 足球赔率
  • 菲律宾网上赌场
  • 数字币博彩网站
  • 足球投注网站
  • 百家乐论坛
  • 皇冠体育博彩公司
  • 网上赌博网站
  • 网上博彩推广话术
  • 谷歌搜索快速方法
  • 网上博彩推广话术
  • 数字币赌场
  • 皇冠博彩公司
  • 世界杯博彩公司
  • 英国博彩公司
  • 网上博彩合法化
  • 新加坡赌场
  • 比特币网上赌场
  • 怎么洗钱
  • 加密货币博彩平台
  • 世界杯赌球网址
  • 网上赌球地址
  • 博彩推广方式
  • 印度尼西亚博彩公司
  • 国际包网
  • bbin平台直营
  • 亚洲体育博彩平台
  • 越南博彩公司
  • 百家乐路单
  • 澳门博彩官网
  • 博彩网推荐
  • 澳门太阳城网址
  • 百家乐网址
  • 世界杯赌球网址
  • 皇冠博彩网址
  • 洗钱方法
  • 买球网站
  • 欧洲杯赌球平台
  • 皇冠现金网
  • 外围赌球平台
  • 果敢赌场
  • 买球技巧
  • 全球最大博彩公司
  • 电子游艺
  • 真人电子游戏
  • 骰宝游戏规则
  • 亚洲体育博彩平台
  • 澳门在线赌场
  • 缅甸赌场地址
  • 赌球平台
  • 赌场如何赢钱
  • 世界杯买球网站
  • 真人牌九游戏
  • 世界杯买球官网
  • 时时彩平台
  • 六合彩预测
  • 威尼斯人网上赌场
  • 外围赌球网站
  • 赌博网址
  • 彩票群
  • 微信赌博群
  • 韩国首尔赌场
  • 赌钱游戏
  • 美国网上赌场
  • bbin官网
  • 沙巴体育官网
  • 博彩平台推荐
  • 数字币博彩网站
  • 比特币网上赌场
  • 世界赌场名单
  • 美国赌场攻略
  • 菠菜论坛排名
  • 菠菜论坛排名
  • 缅甸网上赌场
  • 支持人民币的博彩公司