Js 简单实现翻牌小游戏

2023-10-28 09:30

本文主要是介绍Js 简单实现翻牌小游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简介

非常简单的一个网络消消乐翻牌小游戏的实现,代码量较少,不过遇到的bug和自行开发的步骤十分有纪念意义。

2.核心代码块

生成随机数列,确定图片随机分布

function getImgIndex(is){var index = parseInt(Math.random()*8)+1;if(is[index] < 2){is[index]++;} else {index = getImgIndex(is);}return index;}

通过window.onload函数定义8个背景图片随机分布

window.onload = function(){//规则:五个背景图,每张图出现两次,随机分配到16个div中var ele = document.getElementById("parent");var imgs = [1,2,3,4,5,6,7,8]; 				var is = [0,0,0,0,0,0,0,0,0];for(var i = 0; i < 16; i++){var index = getImgIndex(is);console.info(index);ele.innerHTML += "<div id='k"+i+"' class='kid' "+"οnclick='oclick(this.id,"+index+");'></div>";	//通过字符串拼接方式,将H5代码发送给网页执行			}}

点击图片事件
oclick函数中利用f存储上个图片的index,;利用id2存储上个图片的id
再进行以下操作比较

function oclick(id,index){   if(find[index]<2){if(f==0){find[index]++;look(id,index);f=index;id2=id;}else{if(f==index&&id!=id2){   find[index]++;look(id,index);f=0;id2=0;marked++;}else{   find[f]=0;look(id,index);look(id2,f);clearStyle(id);clearStyle(id2);f=0;id2=0;}}}if(marked==8){alert("恭喜完成");}}

图片操作函数

function look(id,index){var ele = document.getElementById(id);ele.style="background-image: url("+index+".gif);";}function clearStyle(id){setTimeout(function(){var ele = document.getElementById(id);ele.style="";}, 200);}

重置页面函数

function re(){window.location.reload();}

页面的设计

	<body><div id="parent" class="par"></div><input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/></body>

3.已知bug 说明(已解决)

1.点击图片本身两次导致匹配成功
解决方式:加入id判断是否为自身比较

f==index&&id!=id2

2.已匹配的图片再次点击会消除
解决方式:加入find[]数组统计图片点击次数,超过两次不再比较

if(find[index]<2)

4.全文代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>/* 父子网页界面设计 */.kid{width: 100px;height: 100px;background-color: #aaffff;border: 1px solid black;margin: 10px;float: left;}.par{width: 1000px;padding: 10px;border: 1px solid black;float: left;}</style><script>var f=0;var id2=0;var find = [0,0,0,0,0,0,0,0,0];var marked=0;window.onload = function(){//规则:五个背景图,每张图出现两次,随机分配到16个div中var ele = document.getElementById("parent");var imgs = [1,2,3,4,5,6,7,8]; 				var is = [0,0,0,0,0,0,0,0,0];for(var i = 0; i < 16; i++){var index = getImgIndex(is);console.info(index);ele.innerHTML += "<div id='k"+i+"' class='kid' "+"οnclick='oclick(this.id,"+index+");'></div>";				}}function getImgIndex(is){var index = parseInt(Math.random()*8)+1;if(is[index] < 2){is[index]++;} else {index = getImgIndex(is);}return index;}function oclick(id,index){   if(find[index]<2){if(f==0){find[index]++;look(id,index);f=index;id2=id;}else{if(f==index&&id!=id2){   find[index]++;look(id,index);f=0;id2=0;marked++;}else{   find[f]=0;look(id,index);look(id2,f);clearStyle(id);clearStyle(id2);f=0;id2=0;}}}if(marked==8){alert("恭喜完成");}}function look(id,index){var ele = document.getElementById(id);ele.style="background-image: url("+index+".gif);";}function clearStyle(id){setTimeout(function(){var ele = document.getElementById(id);ele.style="";}, 200);}function re(){window.location.reload();}</script></head><body><div id="parent" class="par"></div><input type="button" name="b1" id="b1" value="再van♂一次" onclick="re();"/></body>
</html>

注意:使用需修改图片地址url

实现效果

在这里插入图片描述
------by 啊哈在下

这篇关于Js 简单实现翻牌小游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292286

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一