本文实例为大家分享了JS实现记忆翻牌游戏的具体代码,供大家参考,具体内容如下

html代码

css代码

* {

padding: 0;

margin: 0;

}

#game {

width: 600px;

height: 600px;

margin: 0 auto;

}

.block {

float: left;

box-sizing: border-box;

width: 25%;

height: 25%;

border: 2px solid #ddd;

background-color: #f0f0f0;

}

.block:hover {

background-color: #2b84d0;

}

.pic {

width: 100%;

height: 100%;

background-repeat: no-repeat;

background-position: center center;

transform: scaleX(0);

transition: transform .2s;

}

.block.on .pic {

transform: scaleX(1)

}

js代码

var game = {

el: '',

level: 0,

blocks: 0,

gameWidth: 600,

gameHeight: 600,

dataArr: [],

judgeArr: [],

turnNum: 0,

picNum: 20,

maxLevel: 3, // 最高游戏级别

init: function (options) {

this.initData(options);

this.render();

this.handle();

},

initData: function (options) {

this.options = options;

this.el = options.el;

this.level = options.level > this.maxLevel ? this.maxLevel : options.level;

this.blocks = (this.level * 2) * (this.level * 2);

this.getdataArr();

},

getdataArr: function () {

var randomArr = this.randomArr();

var halfBlocks = this.blocks / 2;

var dataArr = [];

for(var i = 0; i < halfBlocks; i ++) {

var num = randomArr[i];

var info = {

url: './images/' + num + '.png',

id: num

}

dataArr.push(info, info);

}

console.log(dataArr);

this.dataArr = this.shuffle(dataArr);

},

randomArr: function () {

var picNum = this.picNum;

var arr = [];

for(var i = 0; i < picNum; i ++) {

arr.push(i + 1);

}

console.log(arr);

return this.shuffle(arr);

},

shuffle: function (arr) {

return arr.sort(function () {

return 0.5 - Math.random();

})

var length = arr.length - 1;

for(var i = length ; i >= 0; i --) {

var randomIndex = Math.floor(Math.random() * (i + 1));

var temp = arr[randomIndex];

arr[randomIndex] = arr[i];

arr[i] = temp;

}

return arr;

},

render: function () {

var blocks = this.blocks;

var gameWidth = this.gameWidth;

var gameHeight = this.gameHeight;

var level = this.level;

var blockWidth = gameWidth / ( level * 2 );

var blockHeight = gameHeight / ( level * 2 );

var dataArr = this.dataArr;

for(var i = 0; i < blocks; i ++) {

var info = dataArr[i];

var oBlock = document.createElement('div');

var oPic = document.createElement('div');

oPic.style.backgroundImage = 'url(' + info.url + ')';

oBlock.style.width = blockWidth + 'px';

oBlock.style.height = blockHeight + 'px';

oBlock.picid = info.id;

oPic.setAttribute('class', 'pic');

oBlock.setAttribute('class', 'block');

oBlock.appendChild(oPic);

this.el.appendChild(oBlock);

handle: function () {

var self = this;

this.el.onclick = function (e) {

var dom = e.target;

var isBlock = dom.classList.contains('block');

if(isBlock) {

self.handleBlock(dom);

}

}

},

handleBlock: function (dom) {

var picId = dom.picid;

var judgeArr = this.judgeArr;

var judgeLength = judgeArr.push({

id: picId,

dom: dom

});

dom.classList.add('on');

if(judgeLength === 2) { this.judgePic(); }

this.judgeWin();

},

judgePic: function () {

var judgeArr = this.judgeArr;

var isSamePic = judgeArr[0].id === judgeArr[1].id;

if(isSamePic) {

this.turnNum += 2;

} else {

var picDom1 = judgeArr[0].dom;

var picDom2 = judgeArr[1].dom;

setTimeout(function () {

picDom1.classList.remove('on');

picDom2.classList.remove('on');

}, 800)

}

judgeArr.length = 0;

},

judgeWin: function () {

if(this.turnNum === this.blocks) {

setTimeout(function () {

alert('胜利');

}, 300)

}

}

}

game.init({

el: document.getElementById('game'),

level: 2

})

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-07-29

记忆翻牌游戏代码html,原生JS实现记忆翻牌游戏相关推荐

  1. html五子棋游戏制作原理,原生JS+Canvas实现五子棋游戏

    功能模块 先看下现在做完的效果: 代码详解 人机对战功能实现 从效果图可以看到,棋盘的横竖可以放的位置为15*15,通过canvas画棋盘: //绘画棋盘 var drawChessBoard = f ...

  2. html九图拼图游戏代码,基于Vue.js实现数字拼图游戏

    先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...

  3. 五子棋人机对战_原生JS+Canvas实现五子棋游戏

    原生JS+Canvas实现五子棋游戏 效果图 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代码详解 2.1 人机对战功能实现 从效果图可以看到,棋盘的横竖可以放的位置为15 ...

  4. 原生JS实现贪吃蛇游戏

    原生JS实现贪吃蛇游戏 贪吃蛇游戏(原生JavaScript) 贪吃蛇游戏思路分析 游戏思想: 面向对象的思想 三个js文件分别代表三个对象 三个对象相互独立,在HTML中控制全局 使用面向对象思想的 ...

  5. html五子棋悔棋,原生 JS + Canvas 实现五子棋游戏

    原标题:原生 JS + Canvas 实现五子棋游戏 || 一.功能模块 先看下现在做完的效果: 线上体验: https://wj704.github.io/five_game.html 主要功能模块 ...

  6. 五子棋游戏代码html,HTML5网页版黑白子五子棋游戏代码

    特效描述:HTML5 网页版黑白子五子棋 五子棋游戏. 通过原生js和canvas实现五子棋,可以试下左右手互搏 代码结构 1. HTML代码 PK 您的浏览器不支持canvas var text = ...

  7. python小游戏代码200行左右,python编程小游戏代码

    大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情. 1.python简单小 ...

  8. eclipse javascript_原生js实现贪吃蛇游戏_javascript技巧

    更新时间:2020年10月26日 11:46:36   作者:leisure-ZL 这篇文章主要为大家详细介绍了原生js实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴 ...

  9. 前端小白写了个网页版五子棋游戏,使用原生 JS + Canvas 实现绘制棋子、棋盘

    功能模块 快来体验下吧!看下你能赢得了计算机么? 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 老规矩,源码贴上 具体代码 (1)HTML代码 <!DOCTYPE html ...

最新文章

  1. 差点吓尿,手贱不要乱点support native debug
  2. 清北刷题10.23night
  3. 判断小米华为等系统 MD
  4. SpringBoot-SpringCloud-版本对应关系
  5. haproxy配置代理tomcat和nginx_你真的掌握LVS、Nginx及HAProxy工作原理吗?
  6. Tomcat服务器性能优化
  7. Nmap 添加自定义服务指纹
  8. 为什么说“进程是资源分配的单位、线程是调度的单位”?
  9. 元组中[-1]的作用
  10. python pipline_python中sklearn的pipeline模块实例详解
  11. 牛客网暑期ACM多校训练营(第三场) E Sort String 哈希处理字符串(模板)
  12. 服务器端修改yapi-cli默认IP,centos部署yapi
  13. 【数据结构和算法笔记】图的相关概念(有向图,无向图......)
  14. 机器学习中训练集和测试集归一化(matlab版)
  15. sklearn特征选择类库使用小结
  16. 幻想西游php源码,如何搭建幻想西游服务器
  17. 如何使用IBM SPSS Statistics进行描述性分析
  18. 从王者荣耀看设计模式(十六.原型模式)
  19. html可以用搜狗浏览器打开网页,搜狗浏览器网页不小心关了怎么办?搜狗浏览器恢复页面三种方法...
  20. 第二篇:Cydia添加源和安装软件

热门文章

  1. python效率计算公式_Python: Pandas运算的效率探讨以及如何选择高效的运算方式
  2. 晶体封装越小esr越大_FCX-07晶体的电气特性及产品特点
  3. 走近源码:神奇的HyperLogLog
  4. 实用的工具,有趣的人
  5. 学Java有哪些比较好用的软件呢?
  6. Arduino控制1302颗ws2812灯珠显示圣诞树和圣诞老人(附程序源码)
  7. 在 google code 项目首页(或 wiki)嵌入 slideshare
  8. 没有网络的计算机怎么装驱动程序,装机后电脑没有网络的情况下,驱动人生6教你首先将网卡驱动安装好...
  9. 读取S50-IC卡的所有扇区、数据块
  10. OSG三维渲染引擎编程学习(全系列开展OSG学习)