创建您的第一个记忆卡片游戏

    大家好!今天,我们将一起探索如何用HTML、CSS和JavaScript创建一个有趣的记忆卡片游戏。我们的游戏规则很简单:用户需要找到一对一样的卡片。如果你是编程新手,不用担心,我会逐步引导你完成这个项目。

正文:

   大家好!今天,我们将一起探索如何用HTML、CSS和JavaScript创建一个有趣的记忆卡片游戏。我们的游戏规则很简单:用户需要找到一对一样的卡片。如果你是编程新手,不用担心,我会逐步引导你完成这个项目。

游戏逻辑深入分析

    在我们的游戏中,我们需要生成一组卡片,卡片背面相同,正面则显示不同的图片。用户点击两张卡片,如果图片相同则卡片保持翻开状态,如果不同则卡片重新翻回背面。

HTML结构

   在HTML结构中,我们定义了一个容器div,它将包含所有的游戏卡片。游戏中的卡片将通过JavaScript在页面加载时动态生成。

<div id="parent" class="par"><!-- 动态生成的卡片将在这里插入 -->
</div>

CSS样式

     CSS用于设置我们游戏界面的样式。我们定义了两个主要的样式类:.kid为卡片的样式,.par为包含所有卡片的父容器样式。

.kid{width: 150px;height: 150px;background-color: #7FFFD4;border: 1px solid black;margin: 10px;float: left;
}
.par{width: 65%;padding: 10px;border: 1px solid black;float: left;
}

.kid类中,float: left;使卡片水平排列。而.par类则定义了容器宽度以及内外边距。

JavaScript 细节

现在,我们来看看JavaScript部分,这是使游戏可玩的魔法所在。

  1. window.onload:当页面加载完毕后,这部分代码会被执行。这里是我们初始化游戏设置的地方。

  2. is数组:它的作用是跟踪每张图片的使用次数,确保每个图片只被使用两次。

  3. getImgIndex(is)函数:此函数负责获取一个随机且未分配超过两次的图片索引。

  4. look(id, index)函数:该函数在用户点击卡片时被触发。它会显示卡片对应的图片,且如果用户连续点击两张相同的图片,那么这些图片将保持显示状态。如果不同,则会在短延时后翻回背面。

完整代码清单

    在经过上面的分析后,我现在提供了修改后可工作的完整代码。您可以复制以下代码,保存为一个HTML文件,并用浏览器打开来尝试我们的记忆游戏。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>.kid{width: 150px;height: 150px;background-color: #7FFFD4;border: 1px solid black;margin: 10px;float: left;}.par{width: 65%;padding: 10px;border: 1px solid black;float: left;}</style><script>//初始化,随机分配图片window.onload = function(){//规则:五个背景图,每张图出现两次,随机分配到10个div中var ele = document.getElementById("parent");//图片数组var imgs = [1,2,3,4,5,6]; var is = [0,0,0,0,0,0,0];for(var i = 0; i < 12; i++){//随机图片indexvar index = getImgIndex(is);console.info(index);ele.innerHTML += "<div id='k"+i+"' class='kid' "+"onclick='look(this.id,"+index+");' "+"</div>";//onmouseout='clearStyle(this.id);'>}}function getImgIndex(is){var index = parseInt(Math.random()*6)+1;if(is[index] < 2){is[index]++;} else {//递归index = getImgIndex(is);}return index;}//记录前面点击图片的索引indexvar imgIndex = 0;//记录前面点击的图片的div的idvar imgDivId = "";function look(id,index){console.log("id = ",id,"  index = ",index)var ele = document.getElementById(id);ele.style="background-image: url(../../img/"+index+".jpg);";setTimeout(function(){if(imgIndex == 0){//第一次点击图片imgDivId = id;imgIndex = index;} else if(imgDivId == id){//重复点击同一张图片clearStyle(id);} else {if(imgIndex != index){//两张图片不同clearStyle(imgDivId);clearStyle(id);} else {//两张图片相同,清除onclick事件,防止再次点击document.getElementById(id).removeAttribute("onclick");document.getElementById(imgDivId).removeAttribute("onclick");}imgIndex = 0;imgDivId = "";}},200);}function clearStyle(id){var ele = document.getElementById(id);ele.style="";}</script></head><body><div id="parent" class="par"><!-- <div id="k1" class="kid" onmouseover="look(this.id);" onmouseout="clearStyle(this.id);"></div> --></div></body>
</html>

请注意,将"url('../../img/"+index+".jpg')"替换为您实际的图片路径。

这是我的路径:

结语

    恭喜你,你已经完成了一个简单的记忆游戏!这个项目适合任何想入门Web开发的新手。通过实际编写代码并看到结果,你会更快地学习和理解网页开发的核心概念。随时为这个游戏添加更多功能,比如计时器、分数板或者更多级别的复杂性。祝你编程愉快!

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

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

相关文章

lottie 动画在 vue 中的使用

前言 最近我所负责的项目中采用了动画效果&#xff0c;最早使用 gif 来实现。然而&#xff0c;在实践过程中&#xff0c;我发现 gif 格式的动画在 git 中出现了明显的锯齿感&#xff0c;这让我非常困扰。为了追求更完美的表现效果&#xff0c;我最终选择了 lottie 来实现我的动…

苹果手机微信内存不足怎么清理?分享简单的解决方法!

我们平时经常使用手机来进行各种各样的活动&#xff0c;尤其是微信&#xff0c;它已经成为了我们生活中不可或缺的一部分。然而&#xff0c;随着时间的推移&#xff0c;微信占用的手机内存会越来越大&#xff0c;从而导致手机出现卡顿、闪退等问题。 当出现微信存储空间不足的…

【python】Win11上安装spyder

一、安装miniconda 见Miniconda官网 推荐用安装包安装。 如果想用命令行安装到D盘&#xff0c;需要打开命令提示符终端&#xff0c;输入&#xff1a; curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o miniconda.exe start /wait "&…

Oracle 12c rac 搭建 dg

环境 rac 环境 &#xff08;主&#xff09;byoradbrac 系统版本&#xff1a;Red Hat Enterprise Linux Server release 6.5 软件版本&#xff1a;Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1&#xff1a;172.17.38.44 byoradb2&#xff1a;…

mysql查询出json格式字段中的值

一、使用场景 由于一些特殊数据使用json格式保存到表数据种中了&#xff0c;在查询的时候需要查询出这条数据中json格式中的某个字段 比如&#xff1a;需要将下列字符串中的“nationality”字段单独查询出来 json格式是一个对象 结果&#xff1a; json格式是一个集合 查询结…

特征归一化及其原理--机器学习

归一化是数据预处理中的一种常见操作&#xff0c;其目的是将不同特征的数值范围统一或缩放到相似的尺度。这有助于提高模型的性能&#xff0c;加速模型的收敛&#xff0c;并使模型更加稳健。以下是进行归一化的一些原因和原理&#xff1a; 消除特征间的尺度差异&#xff1a; 不…

Unity Shader 实现X光效果

Unity Shader 实现X光效果 Unity Shader 实现实物遮挡外轮廓发光效果第五人格黎明杀机火炬之光 实现方案操作实现立体感优化总结源码 Unity Shader 实现实物遮挡外轮廓发光效果 之前看过《火炬之光》、《黎明杀机》、《第五人格》等不少的游戏里面人物被建筑物遮挡呈现出不同的…

C语言——指针题目“指针探测器“

如果你觉得你指针学的自我感觉良好&#xff0c;甚至已经到达了炉火纯青的地步&#xff0c;不妨来试试这道题目&#xff1f; #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3…

参数归一化-实现时间格式化

文章目录 需求分析具体实现完整源码 不知道大家有没有尝试封装过一个时间格式化的函数啊&#xff0c;在之前我封装的时候&#xff0c;开始是觉得手到擒来&#xff0c;但是实践之后发现写非常的shi啊&#xff0c;大量的分支判断&#xff0c;哪怕是映射起到的作用也只是稍微好一点…

PC9095高性能可调限流OVP过压过流保护 软启动 抗浪涌 集成功率FET开关

特点 •输入电压范围&#xff1a; •PC9095A、PC9095KA:2.5伏~13.5伏 •PC9095B&#xff0c;PC9095KB:2.5伏~10伏 •PC9095C&#xff0c;PC9095KC:2.5伏~5.5伏 •28V绝对最大额定电压VOUT •带外部电阻器的可调限流器 •集成功率FET开关&#xff0c;53mΩRds&#xff08…

棒打疯猫^^

欢迎来到程序小院 棒打疯猫 玩法&#xff1a;点击鼠标左键举起棒子打猫&#xff0c;等猫落下之后打&#xff0c;打飞猫遇到炸弹会弹飞更远距离&#xff0c; 遇到大便会停止前进游戏结束&#xff0c;看你能够打飞多远距离&#xff0c;快去打猫吧^^。开始游戏https://www.ormcc.…

阿里云数据库polardb怎么收费?

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…

文件下载输出zip文件

文件下载输出成zip文件&#xff1a; 1、前端整个按钮&#xff0c;调js方法&#xff1a;&#xff08;参数&#xff1a;param,需要下载的id&#xff0c;用逗号拼接&#xff09; var param "?dto.id";//需要自己拼接param window.location.href "<%basePat…

城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程

城市分站优化已成为企业网络营销的重要手段&#xff0c;今天来给大家分享一款城市分站优化系统源码。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.多城市分站管理&#xff1a;该系统支持多个城市分站的管理&#xff0c;用户可以根据业务需求&#xff0c;…

官网万词霸屏推广源码系统:轻松实现百度上万关键词排名在线

互联网的快速发展&#xff0c;网络营销已经成为企业推广的重要手段。在这个竞争激烈的市场中&#xff0c;如何让自己的网站在搜索引擎中获得更好的排名&#xff0c;成为众多企业关注的焦点。而万词霸屏推广源码系统正是在这样的背景下应运而生&#xff0c;为企业提供了一种全新…

【深入浅出Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Gauge和Histogram篇)

承接上文 承接上文中的【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析&#xff08;Counter篇)&#xff0c;我们知道和了解了对应的Counter计数器的作用和实现原理&#xff0c;接下来我们需要进行分析和了解计量器&#xf…

面试题:MySQL 自增主键一定是连续的吗?

文章目录 测试环境&#xff1a;一、自增值的属性特征&#xff1a;1. 自增主键值是存储在哪的&#xff1f;2. 自增主键值的修改机制&#xff1f; 二、新增语句自增主键是如何变化的&#xff1a;三、自增主键值不连续情况&#xff1a;&#xff08;唯一主键冲突&#xff09;四、自…

uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传

全局消息是推送&#xff0c;实现app在线更新&#xff0c;WebSocket 1.在main.js中定义全局的WebSocket2.java后端建立和发送WebSocket3.通知所有用户更新 背景&#xff1a; 开发人员开发后app后打包成.apk文件&#xff0c;上传后通知厂区在线用户更新app。 那么没在线的怎么办&…

使用electron属性实现保存图片并获取图片的磁盘路径

在普通的网页开发中&#xff0c;JavaScript由于安全性的考虑&#xff0c;通常是无法直接获取到客户端的磁盘路径的。浏览器出于隐私和安全原因对此类信息进行了限制。 在浏览器环境下&#xff0c;JavaScript主要通过Web APIs来与浏览器进行交互&#xff0c;而这些API通常受到浏…

【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器中有32块硬盘&#xff0c;组建了3组RAIDZ&#xff0c;部分磁盘作为热备盘。zfs文件系统。 服务器故障&#xff1a; 服务器运行中突然崩溃&#xff0c;排除断电、进水、异常操作等外部因素。工作人员将服务器重启后发现无法进入操作系统。…