原生JavaScript实现打字游戏

本文介绍了如何用原生JavaScript实现一个打字游戏,强调了函数式编程思想的应用。游戏包括开始、暂停、退出、设置难度等功能,并详细阐述了各个功能的实现,如字母下落、随机生成字母、键盘事件监听等。在游戏过程中,可以调整难度,且随着得分增加,字母下落速度会加快。游戏结束后,得分、正确率和速度将被清零。
摘要由CSDN通过智能技术生成

写在最前面

本文主要锻炼的是原生JavaScript的编程能力,运用了函数式编程的思想!

1.页面的排版与布局

主要分成两个页面:a.初始呈现出来的界面;b.点击开始进入游戏的界面。

a界面: 比较丑,大家注重功能实现就好,忽略ui
初始呈现出来的界面
按下说明按钮后出现的说明文字
说明:
a.画页面不是我的目的,所以背景潦草的使用了一张图片简单实现了一下。
b.三个dom元素:两个按钮(开始、说明),点击说明按钮出现的说明内容。

// 初始呈现出来的界面

<div id="gameStart">
   <!-- 1.开始游戏按钮 -->
   <div id="start"></div>
   
   <!-- 2.游戏说明按钮 -->
   <div id="describe"></div>
   
   <!-- 3.游戏说明内容 -->
   <div id="des">
      我是一段认认真真的游戏说明。
      <div id="cl">关闭</div>
   </div>
</div>
/* container 是最外层的包裹容器 */
#container{
   
   /* 宽高就是背景图片的尺寸 */
   width: 521px; 
   height: 342px;
   margin: 50px auto;
   /* 设置相对定位 */
   position: relative;
   /* 后续下落字母落到背景图以下时候,进行隐藏 */
   overflow: hidden;
}

/* 把背景图片放进 gameStart 里 */
#gameStart{
   
   background: url(./img/background.png) no-repeat;
   /* 宽高百分之百,继承父级 */
   width: 100%;
   height: 100%;
   /* display: none; */
}

/* 按钮的定位,两按钮除了距离底部高度不一致外其余都相同 */
#start, #describe{
   
   width: 101px;
   height: 30px;
   /* border: 1px solid black; */
   position: absolute;
   left: 7px;
   border-radius: 20px;
   cursor: pointer;
}
#start{
   
   bottom: 51px;
}
#describe{
   
   bottom: 6px;
}

/* 游戏说明部分 */
#des{
   
   width: 300px;
   height: 100px;
   position: absolute;
   top: 100px;
   left: 100px;
   border: 7px solid skyblue;
   background-color: #fff;
   text-align: center;
   display: none;
}
/* 关闭叉叉 */
#cl{
   
   position: absolute;
   top: 0;
   right: 0;
   cursor: pointer;
   border: 1px solid #ccc;
   font-weight: bold;
   display: none;
}

b.界面: 点击开始按钮进入游戏界面
四个操作按钮:

  • 开始按钮 —> 游戏的暂停
  • 结束按钮
  • 退出游戏 —> 退出到游戏开始的界面
  • 设置 —> 设置当前游戏的难度
    进入游戏界面
    点击设置,显示游戏难度选择。
    游戏难度设置
<!-- 进入游戏界面 -->
<div id="game">
   <!-- 四个操作按钮,使用了事件委托进行js交互 -->
   <div id="oprate">
      <span class="start">开始</span>
      <span class="exit">退出</span>
      <span class="finish">结束</span>
      <span class="set">设置</span>
   </div>

   <!-- 点击设置弹出游戏难度选择 -->
   <div id="select">
      <!-- 一开始是隐藏的 -->
      <select name="" id="">
         <option value="3"></option>
         <option value="2"></option>
         <option value="1"></option>
      </select>
      <!-- 关闭按钮 -->
      <span id="close">关闭</span>
   </div>

   <!-- 提示打字的得分、正确率和速度 -->
   <div id="tip">
      <p>得分: <span>0</span></p>
      <p>正确率:<span>0 %</span></p>
      
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常好的问题!以下是一个基本的原生 JavaScript 轮播图实现: HTML ```html <div class="slider"> <div class="slider-wrapper"> <div class="slider-item"></div> <div class="slider-item"></div> <div class="slider-item"></div> </div> <div class="slider-nav"> <a class="slider-prev" href="#">Prev</a> <a class="slider-next" href="#">Next</a> </div> </div> ``` CSS ```css .slider { position: relative; width: 100%; height: 300px; overflow: hidden; } .slider-wrapper { position: absolute; top: 0; left: 0; height: 100%; width: 300%; display: flex; transition: transform 0.3s ease-in-out; } .slider-item { height: 100%; width: 33.333%; } .slider-nav { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); z-index: 10; display: flex; } .slider-prev, .slider-next { margin: 0 10px; padding: 5px 10px; background-color: #ddd; border-radius: 3px; } .slider-prev:hover, .slider-next:hover { background-color: #bbb; } ``` JavaScript ```js const sliderWrapper = document.querySelector('.slider-wrapper'); const prevBtn = document.querySelector('.slider-prev'); const nextBtn = document.querySelector('.slider-next'); const sliderItems = document.querySelectorAll('.slider-item'); const itemWidth = sliderItems[0].offsetWidth; let position = 0; nextBtn.addEventListener('click', () => { position -= itemWidth; if (position < -itemWidth * (sliderItems.length - 1)) { position = 0; } moveToPosition(); }); prevBtn.addEventListener('click', () => { position += itemWidth; if (position > 0) { position = -itemWidth * (sliderItems.length - 1); } moveToPosition(); }); function moveToPosition() { sliderWrapper.style.transform = `translateX(${position}px)`; } ``` 这个例子通过改变 sliderWrapper 的 transform 属性来移动轮播图的位置。prevBtn 和 nextBtn 的点击事件分别减小或增加 position 值,而 moveToPosition 函数将新的 position 值应用到 sliderWrapper 上,实现轮播图的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值