首页 > 其他分享 >2018_11_02_01

2018_11_02_01

时间:2024-10-08 20:25:12浏览次数:8  
标签:11 02 01 coordinateNumber let background coordinate td Math

战舰游戏

展示

基于 vue 开发,具体代码请看vue 写法

<js-2018_11_02_01-index/>

原生 js 代码

<div class="continuar">
  <table cellpadding="0" cellspacing="0" id='tab'>
   tr*7>td*7
  </table>
  <div class="enter">
    <input type="text" placeholder="A0" maxlength="2" id="coordinate" value="">
    <div class="btn" id='btnEnter'>输入</div>
  </div>
</div>
* {
  margin: 0;
  padding: 0;
}
body {
  background-color: black;
}
.continuar {
  margin: 0;
  width: 650px;
  position: relative;
  height: 650px;
  background: url('../images/board.jpg') no-repeat;
  background-size: contain;
}

table {
  margin: 0 auto;
  padding-top: 62px;
}

tr td {
  width: 60px;
  height: 60px;
  border: 0px solid rgb(21, 172, 16);
}
td.ship {
  background: url('../images/ship.png') no-repeat;
  background-size: contain;
  background-position: center;
}
td.miss {
  background: url('../images/miss.png') no-repeat;
  background-size: contain;
  background-position: center;
}
.enter {
  position: absolute;
  right: 14%;
  bottom: 0;
  display: flex;
  padding: 20px;
}
.enter input {
  height: 35px;
  color: #000000;
  background-color: rgb(159, 255, 48);
  display: block;
  float: left;
  border: 0;
}
.enter .btn {
  height: 25px;
  float: left;
  padding: 0 5px;
  cursor: pointer;
  font-size: 12px;
  color: aliceblue;
  margin-left: 5px;
  line-height: 25px;
  user-select: none;
  text-align: center;
  background-color: #41510d;
  border: 5px solid #46e234;
}
window.onload = function() {
  let btnEnter = document.getElementById('btnEnter');
  let coordinate = document.getElementById('coordinate');
  // 给节点添加点击事件
  btnEnter.onclick = btn;
  coordinate.onkeypress = key;
  function key(e) {
    // 监听`enter`键是否被点击
    if (e.charCode === 13) {
      btn();
    }
  }
  // 转化坐标
  let digital = { A: 0, B: 7, C: 14, D: 21, E: 28, F: 35, G: 42 };
  // 使用随机数,初始化战舰位置
  let ships = {
    0: Math.floor(Math.random() * 48),
    1: Math.floor(Math.random() * 48),
    2: Math.floor(Math.random() * 48),
  };
  console.log(ships);
  // 获取所有的`td`
  function btn() {
    console.log(coordinate.value);
    let patt1 = new RegExp(/^[a-g][0-6]/i);
    if (patt1.test(coordinate.value)) {
      // 截取字符串中的首位,将其转化为大写字母
      let coordinateText = coordinate.value[0].toUpperCase();
      // 玩家输入的战舰坐标
      let coordinateNumber =
        Number.parseInt(digital[coordinateText]) +
        Number.parseInt(coordinate.value[1]);
      // 获取所有名为 `td` 的节点
      let tds = document.getElementsByTagName('td');
      // 判断玩家输入的坐标上,是否有战舰存在,如果有的话,就击沉战舰
      if (
        ships[0] === coordinateNumber ||
        ships[1] === coordinateNumber ||
        ships[2] === coordinateNumber
      ) {
        // 击沉战舰
        tds[coordinateNumber].setAttribute('class', 'ship');
      } else {
        // 没有击沉战舰
        tds[coordinateNumber].setAttribute('class', 'miss');
      }
    } else {
      alert('请输入正确的坐标;\n如: A6!');
    }
  }
};

vue 写法

这里我做了一点改进,增加直接点击区域替换背景图标,详细功能请点击展示

<<< docs/.vuepress/components/js/2018_11_02_01/index.vue

标签:11,02,01,coordinateNumber,let,background,coordinate,td,Math
From: https://www.cnblogs.com/honghaitao/p/18452436

相关文章

  • 2018_10_29_02
    代码收集区分桌面环境与移动平台参考文章:https://segmentfault.com/a/1190000016760627<<<docs/.vuepress/components/js/2018_10_29_01/2018_10_29_01.jselement元素Y轴的scroll事件触发移动平台<<<docs/.vuepress/components/js/2018_10_29_02/html_scroll_mo......
  • 2018_10_28_01
    vscode配置vscode插件AtomOneDarkThemeAutoRenameTagvscode-language-babelChinese(Simplified)LanguagePackforVisualStudioCodeCodeSpellCheckerDockerESLintHopscotch(Official)IntelliJIDEAKeybindingsminapp-vscodePathIntellisensePHPDebu......
  • 2018_10_31_01
    gitcommit提交规范Commitmessage和Changelog编写指南规范你的commitmessage并且根据commit自动生成CHANGELOG.mdCommitmessage的格式主要摘选了基本格式与如何使用<type>(<scope>):<subject>//空一行<body>//空一行<footer>其中,Header是必需的,Bod......
  • 2018_10_22_02
    git~F.A.Q在git的一般使用中,如果发现错误的将不想提交的文件add进入index之后,想回退取消,则可以使用命令:gitresetHEAD<file>...,同时gitadd完毕之后,git也会做相应的提示,比如:引用#Changestobecommitted:#(use"gitresetHEAD<file>..."tounstage)##newfile:Test......
  • 2024年Java最新面试题总结(五年经验)
    第一章、基础技术栈1.1)集合,string等基础问题1、arraylist,linkedlist的区别,为啥集合有的快有的慢①ArrayList它的底层是数组,有下标的概念,可以通过index下标直接定位元素,所以查询快;在增删时,会进行扩容判断和拷贝,所以增删慢。②LinkedList的底层是双向链表。每次查询都要循环......
  • YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新Mamba注意力机制MLLAttention
    1. MLLAttention介绍1.1 摘要:Mamba是一种有效的状态空间模型,具有线性计算复杂度。最近,它在处理各种视觉任务的高分辨率输入方面表现出了令人印象深刻的效率。在本文中,我们揭示了强大的Mamba模型与线性注意力Transformer具有惊人的相似之处,而线性注意力Transforme......
  • 10.8 模拟赛(2023 CSP-S 十连测 #5)
    炼石计划10月28日CSP-S十连测#5【补题】-比赛-梦熊联盟(mna.wang)复盘T1秒了。30min。T2题目越短越难。但是链的是经典题目,写了。小样例太水,大样例太大,不方便猜结论。于是先写暴力然后自己造样例。模拟了五六组感觉可以按照lca的深度降序排序,然后能选就选。这......
  • 2023 ICPC 南京
    10.5想要袋鼠。赛时5题深刻感觉到代码能力瓶颈。I签到C也是签到,需要枚举的次数很少。F似乎是签到但是队友debug卡了一百年,晚点补一下看看Gxixike秒的L思路就是贪心。我写了两遍错的,xixike重构了一下把能合并的都合并了就过了。A比较显然的是连通块里面的袋鼠都胜......
  • 2022 CCPC 绵阳AE
    2022CCPC绵阳A.BanorPick,What’stheTrick?题面描述:红蓝双方有一个大小为nnn的英雄池,每次操作一方可以选择一个英雄或者......
  • 2021 ICPC 南京
    10.7赛时四题,也是可能是赛前最后一场vp,国庆爽vp了4场但是似乎毫无长进。这场其实7题思路都有开出来,但是由于我睡着了没能阻止队友连开两小时J所以浪费太多时间。。感觉D和I都比J简单(大概24级军爷都要开始军训了,然后我在机房军训,大家都有光明的未来。A签到M选取一个最大值一......