最新要闻
- 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
- Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
- 环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
- 天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
- 天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
- 每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
- 世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
- 环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
- 世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
- 上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
- 全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
- 不吃饭光吃补充剂 真的可以避免营养缺乏吗?
- 历时9个月 时速350高铁成功“穿海入城”
- 别再说RTX 4090功耗比A卡高了:4K 120帧仅需150W
- 简讯:权威结果出炉:今年画质最好的游戏有答案了
- 炉石关服前夕:网易同类卡牌游戏《秘境对决》宣布恢复运营
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球视点!教你用JavaScript实现调皮的字母
(资料图)
案例介绍
欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,制作提高打字速度的小游戏-调皮的字母。点击与屏幕上字母相对应的按键,若按键与出现的字母一致,则可以获得相应的分数。
案例演示
根据屏幕上随机出现的字母来点击键盘上对应的按键,可自行调节字母下落的速度以及时间间隔,还会有分数统计。
源码学习
进入核心代码学习,我们先来看HTML中的核心代码。
3
分数: 0
<script src="../js/调皮的字母.js"></script>
然后再让我们来看CSS核心代码,CSS主要是对要页面部件的样式进行设置。
*{ margin: 0; padding: 0; overflow: hidden;}#input{ display:block; width: 100%; height: 100%; position:absolute; cursor: default; background: rgb(156, 83, 83);}/* 底部的显示 */#ground{ width: 100%; height:200px; position:absolute; padding-top: 80px; bottom:0; background-color: #4d292c;}/* 下落的字母 */.stone{ background-size: 100% 100%; position:absolute; bottom:1200px; width: 80px; height:80px; text-align: center; line-height:80px; font-size: 40px; color:white; overflow:hidden; transform-origin: center;}label{ color: white; margin-left: 20px;}input[type="number"] { width:100px; height: 40px; font-size: 30px; margin-top: 30px;}input[type="button"] { padding-left:10px; width: 200px; padding-right: 10px; height: 50px; font-size: 18px; margin-left: 300px;}/* 提示 */#hint{ position: absolute; top:10px; right: 10px; font-size: 35px; color:red;}/* 分数的显示 */#score{ position: absolute; top:60px; left:50%; text-align: center; font-size: 30px; color:white;}
让我们来编写核心的JavaScript代码,首先声明相关的变量。通过countdown()方法设置时间倒计时,分数初始化为0。getElementById()方法获取id对应的组件。设置定时器,并在每次游戏重新开始前对定时器进行清除。random()方法获取随机字母以及随机位置,并将字母添加到容器里。for()循环遍历每一个字母修改属性,设置游戏结束的位置。removeChild()方法移除最前面的字母,更新分数。
//有个小院-兴趣编程// 生成字母的间隔var interval = 50;// 计数,如果和间隔一样就下落var time = interval;// 下落的速度var speed = 5;// 判断游戏是否结束var gameOver = false;// 生成的字符从这里随机取var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";// 作为setInterval的返回值var down;// 分数var score = 0;// 开始倒计时function countdown() { score = 0; document.getElementById("scorenum").innerHTML = score; // 倒计时3,2,1 let hint = document.getElementById("hint"); // 倒计时 var countTime = 3; // 设置定时器 let count = setInterval(() => { hint.innerHTML = countTime; if (!countTime) { clearInterval(count); hint.innerHTML = "游戏开始!"; document.getElementById("input").focus(); down = setInterval(fall, 20); } countTime -= 1; }, 500);}countdown();// 字母下降function fall() { let stones = document.getElementsByClassName("stone"); // 如果次数达到设定的值,生成一个新的字母 if (time == interval) { let newStone = document.createElement("div"); newStone.setAttribute("class", "stone"); // 随机字符 newStone.innerHTML = str[Math.round(Math.random() * 25)]; // 随机位置 newStone.style.left = `${Math.round(Math.random() * 80) + 10}%` // 获取容器 let container = document.getElementById("container"); // 把生成的字母添加到容器里 container.appendChild(newStone); time = 0; } // 遍历每一个字母,修改属性,实现下落 for (let i = 0; i < stones.length; i++) { // 计算下落的距离,赋值给style.bottom let distance = parseInt(getComputedStyle(stones[i]).bottom) - speed; stones[i].style.bottom = `${distance}px`; // 距离小于 150px 表示接触到地板,游戏结束 if (distance < 260) { document.getElementById("hint").innerHTML = "游戏结束!" gameOver = true; clearInterval(down); } } time ++;}// 按下按键触发的事件function keydown() { // 晚1ms清空input里的字符,不然有可能清空失败 setTimeout(() => { document.getElementById("input").value = ""; }, 1); // 如果游戏结束,停止触发 if (gameOver) return; // 遍历所有的字母,如果和键盘输入的值相同则移除最前面的字母 let stones = document.getElementsByClassName("stone"); for (let i = 0; i < stones.length; i++) { // 判断字母的值是否和键盘输入的值相同 if (arguments.callee.caller.arguments[0].key.toUpperCase() == stones[i].textContent) { let die = stones[i]; die.innerHTML = ""; setTimeout(() => { die.parentElement.removeChild(die); die = null; }, 300); // 更新分数 score ++; document.getElementById("scorenum").innerHTML = score; break; } }}// 按下 重新开始键 触发的事件function gameStart() { // 如果游戏没结束则不能重新开始,防止下落抖动 if (!gameOver) return; // 从输入框获取各项参数 interval = document.getElementById("interval").value; time = interval; speed = document.getElementById("speed").value; // 清空容器里的字母 let container = document.getElementById("container"); while (container.children.length) { container.children[0].remove(); } gameOver = false; countdown();}
记得关注我,每天学习一点点
你觉得这个游戏,最吸引你的地方在哪里?
全网可搜:小院里的霍大侠, 免费获取简单易懂的实战编程案例。编程/就业/副业/创业/资源。私微信:huodaxia_xfeater二维码: http://www.yougexiaoyuan.com/images/weixin_huodaxia.jpg公众号:有个小院(微信公众号:yougexiaoyuan)github:yougexiaoyuan (视频源码免费获取)(部分素材来源于互联网,如有保护请联系作者)
-
【新视野】PHP Composer 虚拟依赖包 - 实现按需载入钉钉对应功能模块的 php sdk
难得钉钉官方提供了完整的apisdk,各种语言的版本的都有,而且api覆盖面非常完整。但是,composer安装下...
来源: -
全球新动态:Safari浏览器对SVG中的
标签支持不友好,渲染容易错位 在svg中需要写一个markdown编辑器,需要用到<foreignObject>绘制来html,编辑器选择了simplemde。大致ht...
来源: 全球视点!教你用JavaScript实现调皮的字母
【新视野】PHP Composer 虚拟依赖包 - 实现按需载入钉钉对应功能模块的 php sdk
全球新动态:Safari浏览器对SVG中的
标签支持不友好,渲染容易错位 【环球热闻】实拍日本多地暴雪:1.6米高积雪掩埋车辆、14人死亡
Redmi Buds 4青春版耳机亮相:单耳轻至3.9g 活力4色
环球快资讯:《阿凡达2》中的“海怪”:原来真的存在于地球!
AcWing241. 楼兰图腾
天天速递!CentOS7配置静态IP
天天快消息!男生考研分到高中母校被班主任监考:网友一句话扎心
天天信息:山东小伙用1个月微缩30倍农村老屋:惟妙惟肖
MAUI新生6.1-Shell导航视觉层次结构
每日播报!2022年优化最差游戏榜单出炉:《巫师3》次世代版上榜
世界通讯!能跑虚幻5特效!Centerpiece机械键盘自带CPU+GPU
环球滚动:康辉被调侃为“天选打工人”:连上六天班、领带惹眼
世界百事通!Redmi K60首款素皮机身揭秘:参照跑车内饰 拟真缝线工艺
上海今起对快递外卖每人每天补贴60元 元旦春节补贴150元
全球观焦点:15.5小时!阿里云史上最长大规模中断:官方公告四大问题
不吃饭光吃补充剂 真的可以避免营养缺乏吗?
历时9个月 时速350高铁成功“穿海入城”
别再说RTX 4090功耗比A卡高了:4K 120帧仅需150W
简讯:权威结果出炉:今年画质最好的游戏有答案了
炉石关服前夕:网易同类卡牌游戏《秘境对决》宣布恢复运营
今日最新!洛谷 P5721 【入门3】循环结构
【pygame游戏】用Python实现一个蔡徐坤大战篮球的小游戏,可还行?【附源码】
环球热议:大货车雪地滑坡 山东小伙神操作“拔草相助”!后续令网友感动
超长寿命TLC闪存 金邦2TB PCIe 4.0硬盘679元:5GB/s速度
热门:再不努力就要归零 2nm工艺成日本半导体最后的机会
教你用JavaScript实现搜索展开
天天新资讯:李斌:创业的没有几个真的是骗子 要多鼓励
AMD 8年真身接连被破 Intel 13代酷睿“开挂“:超频无敌了
【焦点热闻】索尼被质疑虚假宣传:上市两年后 PS5仍不支持8K
中国千年酒文化传承 酒祖杜康白酒大促:礼盒装110两瓶
今日聚焦!李斌再回应蔚来数据泄露:会承担所有责任 哪怕破产也不妥协
环球微动态丨「杂题乱写」AtCoderDP26 题
(二)elasticsearch 源码目录
【新视野】碳纤维纹理后盖!Redmi K60回归硬核设计:刀锋战士理念
速看:无惧严寒!网易严选牛奶绒床品四件套:159元起
新的全国铁路列车运行图实行:石家庄至北京将实现一小时通达
新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作
环球关注:高速上飞来钢管插进驾驶室:差点害死驾驶员
热消息:联想:小红点会在ThinkPad笔记本上永远存在
天天头条:正式发布前 盒装RTX 4070 Ti线下偷跑:售价感人
天天热资讯!保时捷为Taycan推出全新充电器:充电速度提升一倍 改装费用上万
环球通讯!Epic喜加一!免费送大作《地铁》:下款将是《死亡搁浅》
每日头条!2023考研报告发布:“逆向考研”成亮点!附报告源文
世界快播:锐龙7000系列三款非X型号曝光:价格感受下
囧!日本老师暴打初二男生 因学“左手定则”时比中指
老人故意推倒摩托车损坏被抓:车主回应希望判决不手软 惯犯了
焦点速递!Sentinel的规则
天天热议:一加11下周官宣:安卓性能天花板
MAUI新生5.3-Layout布局类控件难点
国产OS统信UOS家庭版22.0明年1月发布:免费用1年 可与Windows共存
全靠移民硬撑?美国人口增长率仍贴近历史低位
视点!18岁女生因焦虑2个月减25斤:最终瘦成95斤
天天消息!男子无聊送外卖发现2小时挣150:开豪车也干
天天精选!Kubernetes监控手册03-宿主监控实操
今日观点!一路用到安卓17?OPPO将提供4年ColorOS重大更新
环球即时看!同价位罕见!雷军:Redmi K60系列这三款全都上2K直屏
微资讯!“联盟号”发生泄漏:俄罗斯或派遣救援飞船接回机组人员
世界播报:cmake-4
Redmi可穿戴新品公布:手表、耳机全都有
行业最快!红魔8 Pro系列搭载520Hz游戏体感肩键:毫秒级触控响应
《阿凡达2:水之道》国内票房突破6亿:卡梅隆光环褪色 回本太难
每日焦点!终结起火、爆炸困扰!红旗全固态电芯试制完成:10Ah级大容量
27款笔记软件的介绍
全球视点!ts10_使用webpack打包ts文件3
环球今日报丨C#封装GRPC类库及调用简单实例
百事通!Spring IOC官方文档学习笔记(四)之依赖项(下)
【天天报资讯】Web 标准 & W3C 规范
今日热闻!研究人员在柬埔寨发现超级蚊子:对杀虫剂免疫
焦点关注:C++基础3
焦点滚动:惧怕《阿凡达2》 输不起?郭帆回应《流浪地球2》撤档 春节见
播报:Redmi K60全系标配2K柔性屏 专家:国产技术已破局超越
环球即时看!以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
全球快资讯丨最高799元 迪士尼再发布涨价公告:开业以来已涨4次
质感一绝!一加11证件照公布:双曲面屏、流动天阶设计
速递!共计100小时:全球首架C919自12月26日起验证飞行
ts09_使用webpack打包ts文件2
环球热头条丨2022贺岁档票房破10亿!《阿凡达:水之道》5.9亿元能拯救院线吗
曾因“双标”遭网友痛批:好丽友旗舰店发布闭店公告
全球热头条丨AcWing1134/洛谷P1144 最短路计数
WPF开发之Prism详解【内附源码】
不愧是宝马 因机油渗漏:近500台S1000系列摩托车被召回
最新快讯!Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
焦点日报:肾脏衰竭 球王贝利病情继续恶化:家人开始筹备葬礼
02.关于线程你必须知道的8个问题(上)
当前头条:喜提安卓13!小米平板5/Pro 12.4推送MIUI 14开发版:支持光子引擎
每日热文:SSD/内存白菜价难持续:国产厂商被制裁 三星等大厂减产提价
天天热点!我的2022年个人总结
环球焦点!FreeSWITCH学习笔记:EventSocket
AMD RX7900被吐槽空气卡 溢价千元普遍:国内用户持币等 买它还是4080?
【世界播资讯】小米又一爆款诞生!小米净水器销量破500万台
热推荐:新冠后丧失嗅觉的关键原因找到了 科学家:长期失灵也能恢复
环球通讯!3199元起 爱奇艺奇遇MIX VR一体机发布:4K级3000吋巨幕 支持Steam串流
焦点快播:趁早加满!下轮国内油价上调几成定局
影驰发布全球第三款8GHz DDR5内存:如此"光污染" 绝了
焦点速讯:电解质水到底有没有用?我来告诉你
美国人预期寿命降至25年来最低:三大因素导致一半的死亡
11月智能手机销量出炉:小米大卖340万台 国产第一
天天短讯!多方安全计算(6):MPC中场梳理