JS写纸牌发牌和动画(详细解剖)

先看演示

在这里插入图片描述
在这里插入图片描述

游戏构建准备

1.准备52张纸牌
2.一张桌布
3.编辑工具为 Visual Code

技术概要

1.对象操作
2.数据操作
3.JS animation动画
4.全局变量

function desen_x(){let that = this;var desen=["h_1","h_2","h_3","h_4","h_5","h_6","h_7","h_8","h_9","h_10","h_11","h_12","h_13","p_1","p_2","p_3","p_4","p_5","p_6","p_7","p_8","p_9","p_10","p_11","p_12","p_13","t_1","t_2","t_3","t_4","t_5","t_6","t_7","t_8","t_9","t_10","t_11","t_12","t_13","x_1","x_2","x_3","x_4","x_5","x_6","x_7","x_8","x_9","x_10","x_11","x_12","x_13"];//将你的扑克前戳名全部存储到数组中var Obj = new Object();	//新建一个对象var array=[];//空数组一个for(var i=0;i<4;i++){//游戏演示里只需要发4张扑克,所以只要<4    var x=Math.round(Math.random()*52);//随机数取整*52Obj[i]=x;//存入到全局变量中 否则每次只能存一个数值}console.log(Obj);//打印对象看看是不是4个对象window.array=[desen[Obj[0]],desen[Obj[1]],desen[Obj[2]],desen[Obj[3]]];//将存好的数组 带入扑克全局
}
function send_poker(){ //该方法是发牌事件console.log(window.array);//测试你的全局变量是否正常//并且将传递的全局变量带入temp[]var temp=[window.array[0],window.array[1],window.array[2],window.array[3]];var ti=0;var iamges="../poker/"+temp+".png";//这是图片的默认路径 +你的 desenvar creator=document.getElementById("d_back"); //取得操作的dom父元素var po_1=document.createElement("div");//虚拟生成divvar num = 0;                            //初始化变量//po_1.src="../h_1.png";//img_1.scr="../images/poker/h_1.png";for(var i=0;i<temp.length;i++){//循环tempvar that=this;var img_1=document.createElement("img");img_1.src+="./images/poker/"+temp[i]+".png";//对创建的img赋值可变的路径console.log("等于0时");var ten=10;img_1.className="poker_float";//为其指定一个类,也就是默认的初始发牌位置creator.appendChild(img_1);//生成对象//"../images/poker/"+temp.i+".png";}move_poker();//该方法是自封装的动画}

动画事件

function move_poker(){  //移动扑克var node = document.getElementById("d_back").childNodes;//获取父元素下的所有子节点console.log(node);//打印出有多少var n5=node[9];//以要操作的 img对象类为 9开始操作var n6=node[10];var n7=node[11];var n8=node[12];var popo=anime({//animation动画可在最后查看targets: n5, //操作的对象translateX:-150, //移动到的横向位置translateY: -250,//移动到的纵向位置easing: 'easeInOutQuad',//缓动,不更改css机制duration:100,//完成时间});var popo1= anime({targets: n6,translateX:-100,translateY: -250,easing: 'easeInOutQuad',duration:200,});var popo2=anime({targets: n7,translateX:-50,translateY: -250,easing: 'easeInOutQuad',duration:300,});var popo3= anime({targets: n8,translateX:0,translateY: -250,easing: 'easeInOutQuad',duration:400,});
}
function gui(){ //GUI  是将所有节点复位,方便下次发牌var node = document.getElementById("d_back").childNodes;var n5=node[9];var n6=node[10];var n7=node[11];var n8=node[12];var popo4=anime({targets: [n5,n6,n7,n8],translateX:0,translateY: 0,})node.removeChild(popo4);
}

animation封装

function setAnimationsProgress(insTime) { //该方法有多个dom时,则执行异或异步线程模式进行var i = 0;var animations = instance.animations;var animationsLength = animations.length;    while (i < animationsLength) { var anim = animations[i];var animatable = anim.animatable;var tweens = anim.tweens;var tweenLength = tweens.length - 1;var tween = tweens[tweenLength];if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; } var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);var strings = tween.to.strings;var round = tween.round;var numbers = [];var toNumbersLength = tween.to.numbers.length;var progress = (void 0);for (var n = 0; n < toNumbersLength; n++) {var value = (void 0);var toNumber = tween.to.numbers[n];var fromNumber = tween.from.numbers[n] || 0;if (!tween.isPath) {value = fromNumber + (eased * (toNumber - fromNumber));} else {value = getPathProgress(tween.value, eased * toNumber);}if (round) {if (!(tween.isColor && n > 2)) {value = Math.round(value * round) / round;}}numbers.push(value);}var stringsLength = strings.length;if (!stringsLength) {progress = numbers[0];} else {progress = strings[0];for (var s = 0; s < stringsLength; s++) {var a = strings[s];var b = strings[s + 1];var n$1 = numbers[s];if (!isNaN(n$1)) {if (!b) {progress += n$1 + ' ';} else {progress += n$1 + b;}}}}setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);anim.currentValue = progress;i++;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科技产品下一个重大突破将来自芯片堆叠技术

来源&#xff1a;网易科技 概要&#xff1a;作为几乎所有日常电子产品最基础的一个组件&#xff0c;微芯片正出现一种很有意思的现象。 作为几乎所有日常电子产品最基础的一个组件&#xff0c;微芯片正出现一种很有意思的现象。通常又薄又平的微芯片&#xff0c;如今却堆叠得像…

Inside Class Loaders

原文&#xff1a;http://onjava.com/pub/a/onjava/2003/11/12/classloader.htmlIn this part, I want to lay the groundwork on which we can start a discussion about dynamic and modular software systems. Class loaders may seem to be a dry topic, but I think it is …

Cocos creator -引擎解构

Cocos creator -引擎结构 在长期的开发中&#xff0c;发现cc对大型的手游加载项目的速度很慢&#xff0c;于是我产生了一种想法&#xff0c;想把 cocos creator移植在Linux上做开发&#xff0c;编译时在Windows。但是这样太麻烦了。索性&#xff0c;研究一下它的构造&#xff…

计算机视觉简介:历史、现状和发展趋势

来源&#xff1a;专知 概要&#xff1a;正像其它学科一样&#xff0c;一个大量人员研究了多年的学科&#xff0c;却很难给出一个严格的定义&#xff0c;模式识别如此&#xff0c;目前火热的人工智能如此&#xff0c;计算机视觉亦如此。 【导读】本文由中国科学院自动化研究所模…

IIS-HTTPS(TSL)强制开启的方法和解决过时的安全问题

IIS-HTTPS(TSL)强制开启的方法和解决过时的安全问题 系统为:Windows server 2008R2 工具为:IIS6 数据库为: Windows Sql server 2014 证书为:腾讯云颁发的AC证书 首先你需要这几个工具 IISCrypto | 检测和为你配置最安全的 策略环境 手写reg注册表 | 来关闭本地的事件 Windo…

AI在医疗行业的最新进展

来源&#xff1a; Future智能 概要&#xff1a;随着人工智能、大数据等相关应用与理念的不断传播&#xff0c;越来越多曾经深入人心的观念被彻底撼动&#xff0c;当然&#xff0c;医疗行业也不例外。 随着人工智能、大数据等相关应用与理念的不断传播&#xff0c;越来越多曾经深…

SHA384-算法解密(2)还原元数据

SHA384-算法解密(2)还原元数据 上一次的讲解比较潦草&#xff0c;这次写的更全面详细一些。 首先各位&#xff0c;如果想要解开使用这个算法加密后的数据&#xff0c;必须先学会加密&#xff0c;才能解密。 声明&#xff1a;这里仅供学习研究&#xff0c;不要学了三脚猫功夫就…

美国《时代》周刊公布年度25大最佳发明名单

来源&#xff1a; 中国智慧城市导刊 概要&#xff1a;除了大名鼎鼎的iPhone X和特斯拉model 3&#xff0c;还有好多你可能还未听过的新奇玩意。 当地时间16日&#xff0c;美国《时代》周刊发布了2017年25大最佳发明名单。除了大名鼎鼎的iPhone X和特斯拉model 3&#xff0c;还有…

顶级隐写术,破坏一切解释器

什么是隐写术&#xff1f; 就编程来说&#xff0c;隐写的信息通过加密或混淆&#xff0c;其内容例如一张购物清单&#xff0c;一篇文章&#xff0c;一篇图画或者其他“伪装”&#xff08;cover&#xff09;的消息。 隐写的信息通常用一些传统的方法进行加密&#xff0c;然后用…

“头移植模型”论文称换头术可行 业内疑两大问题未解

来源&#xff1a;澎湃新闻 概要&#xff1a;11月21日&#xff0c;“换头术”的倡导者、哈尔滨医科大学教授任晓平在一场见面会上称&#xff0c;团队在科学领域取得重大突破&#xff0c; “完成了人类第一例头移植外科实验模型”。 11月21日&#xff0c;“换头术”的倡导者、哈尔…

图片有损解构术

图片有损解构 解释&#xff1a;将任意图片解构其PS或修图或雪碧图拼接之前&#xff0c;将通道与法线分离并在原图展现出来 在群里经常看到某些人转发一些图片&#xff0c;有意或者无意的&#xff0c;勾起了我的好奇心&#xff0c;他们这么做有什么好处&#xff1f; 左边图片是…

让机器听懂世界,触及人类梦想还有多远?

来源&#xff1a;陈孝良科学网博客 概要&#xff1a;语言对于人类文明的重要性不言而喻&#xff0c;但是语言的起源却是个高度争议的话题&#xff0c;我们对此几乎一无所知。 语言对于人类文明的重要性不言而喻&#xff0c;但是语言的起源却是个高度争议的话题&#xff0c;我们…

[实战]前端wireshark抓包协议解密

前端wireshark抓包协议解密废话不多说&#xff0c;先看看结果该JSON文件是通过解密后的 HTTP 返回response结果再解密打开的新页面 有兴趣的小伙伴了解下之前的文章 Sha384解密[2] 打开Wireshark 将TCP 转码为RTP &#xff0c;因为该目标地址有视频文件&#xff0c;方便转换 登…

前端React结构工程-改写render

前端React结构工程-改写render 工程准备事项 npm installcnpm初始化工程实例 以上是实例化&#xff0c;安装过npm后的列表 接下来使用 npm run start 来启动项目 当你启动项目后会看到react给我们准备好的 默认界面 React中的 diff原理 和 调度原理是 这次探索的目标 只有搞…

未来智能实验室成立,建设世界第一个智能系统智商评测和趋势研究机构

来源&#xff1a;未来智能实验室 互联网云脑逐渐清晰&#xff0c;AI与互联网结合引发AI威胁论 从科学史可以看到这样一个规律&#xff1a;每一次人类社会的重大技术变革都会导致新领域的科学革命。互联网革命对于人类的影响已经远远超过了大工业革命。与工业革命增强人类的力量…

自己动手制作一门语言(1)波罗语

自己动手制作一门语言(1)波罗语 波罗语&#xff1a;基于波斯(阿拉伯语)的繁衍&#xff0c;主要目的是二向加密语言。防止被保护的数据泄露和解密。使用在计算机与书本中使用语言的发音 主要以 ah 、v 、hv 颤音、哈音、卷舌 创造一门语言很容易&#xff0c;要实现起来确很难&a…

高盛:人工智能报告中文版(45页)

来源&#xff1a;数据局 概要&#xff1a;人工智能是信息时代的尖端科技。计算的飞跃建立在人类告知计算机如何表现的基础上&#xff0c;计算建立在计算机学习如何表现能够对每个行业有意义的基础上。 人工智能是信息时代的尖端科技。计算的飞跃建立在人类告知计算机如何表现的…

人工智能硅脑竞赛:传统芯片巨头VS AI芯片创企

来源&#xff1a;亿欧 概要&#xff1a;但现在&#xff0c;一些芯片企业家得到了不同程度的欢迎。投资者没有对此嗤之以鼻&#xff0c;而是“慷慨地”拿出其支票簿。 英国半导体创业公司Graphcore的联合创始人兼首席执行官Nigel Toon表示&#xff1a;“几年前&#xff0c;许多…

React+Nginx 二级域名指向配置

使React线上项目二级域名指向端口欢迎使用Markdown编辑器开始前检查你的Nginx 检查是否正常编写nginx.conf在同级目录的conf.d目录里清理一下缓存欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑…

佳能g2810打印机扫描怎么用_办公用这款佳能彩色激光打印机无线MF643CDW就够了!...

佳能MF643CDW彩色三合一激光打印https://www.zhihu.com/video/1195286618850979840近两年来&#xff0c;激光打印机正以惊人的速度在办公室、商业用户中普及开来。新一代的彩色激光打印机正以其前所未有的低价位开始大规模进入主流办公室&#xff0c;越来越多的用户将在办公室中…