我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么用JavaScript写一个卡片小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么用JavaScript写一个卡片小游戏

这篇文章主要介绍“怎么用JavaScript写一个卡片小游戏”,在日常操作中,相信很多人在怎么用JavaScript写一个卡片小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用JavaScript写一个卡片小游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

项目结构
先在终端中创建项目文件:

mkdir memory-game
cd memory-game
touch index.html styles.css
scripts.js mkdir img

HTML

初始化页面模版并链接 css 文件 js 文件.

<!-- index.html --> <!DOCTYPE html> <html> <head>   <meta charset="UTF-8">   <title>Memory Game</title>   <link rel="stylesheet" href="./styles.css"> </head> <body>   <script class="lazy" data-src="./scripts.js"></script> </body> </html>

这个游戏有 12 张卡片。 每张卡片中都包含一个名为 .memory-card 的容器 div,它包含两个img元素。 一个代表卡片的正面 front-face ,另一个个代表背面 back-face

怎么用JavaScript写一个卡片小游戏

<div>   <img class="lazy" data-src="img/react.svg" alt="React">   <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card"> </div>

这组卡片将被包装在一个 section 容器元素中。 最终代码如下:

<!-- index.html --> <section>   <div>     <img class="lazy" data-src="img/react.svg" alt="React">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/react.svg" alt="React">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/angular.svg" alt="Angular">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/angular.svg" alt="Angular">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/ember.svg" alt="Ember">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/ember.svg" alt="Ember">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/vue.svg" alt="Vue">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/vue.svg" alt="Vue">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/backbone.svg" alt="Backbone">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/backbone.svg" alt="Backbone">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/aurelia.svg" alt="Aurelia">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div>   <div>     <img class="lazy" data-src="img/aurelia.svg" alt="Aurelia">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> </section>

CSS

我们将使用一个简单但非常有用的配置,把它应用于所有项目:

 * {   padding: 0;   margin: 0;   box-sizing: border-box; }

box-sizing: border-box 属性能使元素充满整个边框,所以我们就可以不用做一些数学计算了。

把 display:flex 设置给 body ,并且把 margin:auto应用到到 .memory-game 容器,这样可以使它将垂直水平居中。

.memory-game 是一个弹性容器,在默认情况下,里面的元素会缩小宽度来适应这个容器。通过把 flex-wrap 的值设置为 wrap,会根据弹性元素的大小进行自适应。

 body {   height: 100vh;   display: flex;   background: #060AB2; } .memory-game {   width: 640px;   height: 640px;   margin: auto;   display: flex;   flex-wrap: wrap; }

每个卡片的 width 和 height 都是用 CSS 的 calc()函数进行计算的。 下面我们需要制作一个三行四列的界面,并且把 width 设置为 25%, height 设置为 33.333% ,还要再减去 10px 留足边距.

为了定位 .memory-card 子元素,还要添加属性 position: relative ,这样我们就可以相对它进行子元素的绝对定位。

把 front-face and back-face 的position属性都设置为 absolute ,这样就可以从原始位置移除元素,并使它们堆叠在一起。

这时页面模版看上去应该是这样:

怎么用JavaScript写一个卡片小游戏

我们还需要添加一个点击效果。 每次元素被点击时都会触发 :active 伪类,它引发一个 0.2秒的过渡:

怎么用JavaScript写一个卡片小游戏

翻转卡片

要在单击时翻转卡片,需要把一个 flip 类添加到元素。 为此,让我们用 document.querySelectorAll 选择所有 memory-card 元素,然后使用 forEach 遍历它们并附加一个事件监听器。 每当卡片被点击时,都会触发 flipCard 函数,其中 this 代表被单击的卡片。 该函数访问元素的 classList 并切换到 flip 类:

// scripts.js const cards = document.querySelectorAll('.memory-card'); function flipCard() {   this.classList.toggle('flip'); } cards.forEach(card => card.addEventListener('click', flipCard));

CSS 中的 flip 类会把卡片旋转 180deg:

.memory-card.flip {   transform: rotateY(180deg); }

为了产生3D翻转效果,还需要将 perspective 属性添加到 .memory-game。 这个属性用来设置对象与用户在 z 轴上的距离。 值越小,透视效果越强。 为了能达得最佳的效果,把它设置为 1000px:

.memory-game {   width: 640px;   height: 640px;   margin: auto;   display: flex;   flex-wrap: wrap; + perspective: 1000px; }

接下来对 .memory-card 元素添加 transform-style:preserve-3d属性,这样就把卡片置于在父节点中创建的3D空间中,而不是将其平铺在 z = 0 的平面上(transform-style)。

.memory-card {   width: calc(25% - 10px);   height: calc(33.333% - 10px);   margin: 5px;   position: relative;   box-shadow: 1px 1px 1px rgba(0,0,0,.3);   transform: scale(1); + transform-style: preserve-3d; }

再把 transition 属性的值设置为 transform 就可以生成动态效果了

.memory-card {   width: calc(25% - 10px);   height: calc(33.333% - 10px);   margin: 5px;   position: relative;   box-shadow: 1px 1px 1px rgba(0,0,0,.3);   transform: scale(1);   transform-style: preserve-3d; + transition: transform .5s; }

现在我们得到了带有 3D 翻转效果的卡片, 不过为什么卡片的另一面没有出现? 由于绝对定位的原因,现在 .front-face 和 .back-face 都堆叠在了一起。 每个元素的 back face 都是它 front face 的镜像。 属性 backface-visibility 默认为 visible,因此当我们翻转卡片时,得到的是背面的 JS 徽章。

![( http://upload-images.jianshu.io/upload_images/13133049-4521ac8b957bb1be.gif?imageMogr2/auto-orient/strip )

为了显示它背面的图像,让我们在 .front-face 和 .back-face 中添加 backface-visibility:hidden

.front-face, .back-face {   width: 100%;   height: 100%;   padding: 20px;   position: absolute;   border-radius: 5px;   background: #1C7CCC; + backface-visibility: hidden; }

如果我们刷新页面并翻转一张卡片,它就消失了!

怎么用JavaScript写一个卡片小游戏

由于我们将两个图像都藏在了背面,所以另一面没有任何东西。 所以接下来需要再把 .front-face 翻转180度:

.front-face {   transform: rotateY(180deg); }

效果出来了!

怎么用JavaScript写一个卡片小游戏

匹配卡片

完成翻转卡片的功能之后,接下来处理匹配的逻辑。

当点击第一张卡片时,需要等待另一张被翻转。 变量 hasFlippedCard 和 flippedCard 用来管理翻转状态。 如果没有卡片翻转,hasFlippedCard 的值为 true,flippedCard 被设置为点击的卡片。 让我们切换到 toggle 方法:

  const cards = document.querySelectorAll('.memory-card'); + let hasFlippedCard = false; + let firstCard, secondCard;   function flipCard() { -   this.classList.toggle('flip'); +   this.classList.add('flip'); +   if (!hasFlippedCard) { +     hasFlippedCard = true; +     firstCard = this; +   }   } cards.forEach(card => card.addEventListener('click', flipCard));

现在,当用户点击第二张牌时,代码会进入 else 块,我们将检查它们是否匹配。为了做到这一点,需要能够识别每一张卡片。

每当我们想要向HTML元素添加额外信息时,就可以使用数据属性。 通过使用以下语法: data-,这里的 可以是任何单词,它将被插入到元素的 dataset 属性中。 所以接下来为每张卡片添加一个 data-framework :

<section> + <div data-framework="react">     <img class="lazy" data-src="img/react.svg" alt="React">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="react">     <img class="lazy" data-src="img/react.svg" alt="React">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="angular">     <img class="lazy" data-src="img/angular.svg" alt="Angular">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="angular">     <img class="lazy" data-src="img/angular.svg" alt="Angular">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="ember">     <img class="lazy" data-src="img/ember.svg" alt="Ember">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="ember">     <img class="lazy" data-src="img/ember.svg" alt="Ember">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="vue">     <img class="lazy" data-src="img/vue.svg" alt="Vue">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="vue">     <img class="lazy" data-src="img/vue.svg" alt="Vue">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="backbone">     <img class="lazy" data-src="img/backbone.svg" alt="Backbone">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="backbone">     <img class="lazy" data-src="img/backbone.svg" alt="Backbone">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="aurelia">     <img class="lazy" data-src="img/aurelia.svg" alt="Aurelia">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> + <div data-framework="aurelia">     <img class="lazy" data-src="img/aurelia.svg" alt="Aurelia">     <img class="lazy" data-src="img/js-badge.svg" alt="Memory Card">   </div> </section>

这下就可以通过访问两个卡片的数据集来检查匹配了。 下面将匹配逻辑提取到它自己的方法 checkForMatch(),并将 hasFlippedCard 设置为 false。 如果匹配的话,则调用 disableCards() 并分离两个卡上的事件侦听器,以防止再次翻转。 否则 unflipCards() 会将两张卡都恢复成超过 1500 毫秒的超时,从而删除 .flip 类:

把代码组合起来:

const cards = document.querySelectorAll('.memory-card');   let hasFlippedCard = false;   let firstCard, secondCard;   function flipCard() {     this.classList.add('flip');     if (!hasFlippedCard) {       hasFlippedCard = true;       firstCard = this; +     return; +   } + +   secondCard = this; +   hasFlippedCard = false; + +   checkForMatch(); + } + + function checkForMatch() { +   if (firstCard.dataset.framework === secondCard.dataset.framework) { +     disableCards(); +     return; +   } + +   unflipCards(); + } + + function disableCards() { +   firstCard.removeEventListener('click', flipCard); +   secondCard.removeEventListener('click', flipCard); + } + + function unflipCards() { +   setTimeout(() => { +     firstCard.classList.remove('flip'); +     secondCard.classList.remove('flip'); +   }, 1500); + }   cards.forEach(card => card.addEventListener('click', flipCard));

更优雅的进行条件匹配的方法是用三元运算符,它由三部分组成: 第一部分是要判断的条件, 如果条件符合就执行第二部分的代码,否则执行第三部分:

- if (firstCard.dataset.name === secondCard.dataset.name) { -   disableCards(); -   return; - } - - unflipCards(); + let isMatch = firstCard.dataset.name === secondCard.dataset.name; + isMatch ? disableCards() : unflipCards();

锁定

现在已经完成了匹配逻辑,接着为了避免同时转动两组卡片,还需要锁定它们,否则翻转将会被失败。

怎么用JavaScript写一个卡片小游戏

先声明一个 lockBoard 变量。 当玩家点击第二张牌时,lockBoard将设置为true,条件 if (lockBoard) return; 在卡被隐藏或匹配之前会阻止其他卡片翻转:

const cards = document.querySelectorAll('.memory-card');   let hasFlippedCard = false; + let lockBoard = false;   let firstCard, secondCard;   function flipCard() { +   if (lockBoard) return;     this.classList.add('flip');     if (!hasFlippedCard) {       hasFlippedCard = true;       firstCard = this;       return;     }     secondCard = this;     hasFlippedCard = false;     checkForMatch();   }   function checkForMatch() {     let isMatch = firstCard.dataset.name === secondCard.dataset.name;     isMatch ? disableCards() : unflipCards();   }   function disableCards() {     firstCard.removeEventListener('click', flipCard);     secondCard.removeEventListener('click', flipCard);   }   function unflipCards() { +     lockBoard = true;     setTimeout(() => {       firstCard.classList.remove('flip');       secondCard.classList.remove('flip'); +     lockBoard = false;     }, 1500);   }   cards.forEach(card => card.addEventListener('click', flipCard));

点击同一个卡片

仍然是玩家可以在同一张卡上点击两次的情况。 如果匹配条件判断为 true,从该卡上删除事件侦听器。

怎么用JavaScript写一个卡片小游戏

为了防止这种情况,需要检查当前点击的卡片是否等于firstCard,如果是肯定的则返回。

if (this === firstCard) return;

变量 firstCard 和 secondCard 需要在每一轮之后被重置,所以让我们将它提取到一个新方法 resetBoard()中, 再其中写上 hasFlippedCard = false; 和 lockBoard = false 。 es6 的解构赋值功能 [var1, var2] = ['value1', 'value2'] 允许我们把代码写得超短:

function resetBoard() {   [hasFlippedCard, lockBoard] = [false, false];   [firstCard, secondCard] = [null, null]; }

接着调用新方法 disableCards() 和 unflipCards():

const cards = document.querySelectorAll('.memory-card');   let hasFlippedCard = false;   let lockBoard = false;   let firstCard, secondCard;   function flipCard() {     if (lockBoard) return; +   if (this === firstCard) return;     this.classList.add('flip');     if (!hasFlippedCard) {       hasFlippedCard = true;       firstCard = this;       return;     }     secondCard = this; -   hasFlippedCard = false;     checkForMatch();   }   function checkForMatch() {     let isMatch = firstCard.dataset.name === secondCard.dataset.name;     isMatch ? disableCards() : unflipCards();   }   function disableCards() {     firstCard.removeEventListener('click', flipCard);     secondCard.removeEventListener('click', flipCard); +   resetBoard();   }   function unflipCards() {     lockBoard = true;     setTimeout(() => {       firstCard.classList.remove('flip');       secondCard.classList.remove('flip'); -     lockBoard = false; +     resetBoard();     }, 1500);   } + function resetBoard() { +   [hasFlippedCard, lockBoard] = [false, false]; +   [firstCard, secondCard] = [null, null]; + }   cards.forEach(card => card.addEventListener('click', flipCard));

点击同一个卡片

仍然是玩家可以在同一张卡上点击两次的情况。 如果匹配条件判断为 true,从该卡上删除事件侦听器。

怎么用JavaScript写一个卡片小游戏

为了防止这种情况,需要检查当前点击的卡片是否等于firstCard,如果是肯定的则返回。

if (this === firstCard) return;

变量 firstCard 和 secondCard 需要在每一轮之后被重置,所以让我们将它提取到一个新方法 resetBoard()中, 再其中写上 hasFlippedCard = false; 和 lockBoard = false 。 es6 的解构赋值功能 [var1, var2] = ['value1', 'value2'] 允许我们把代码写得超短:

function resetBoard() {   [hasFlippedCard, lockBoard] = [false, false];   [firstCard, secondCard] = [null, null]; }

接着调用新方法 disableCards() 和 unflipCards():

const cards = document.querySelectorAll('.memory-card');   let hasFlippedCard = false;   let lockBoard = false;   let firstCard, secondCard;   function flipCard() {     if (lockBoard) return; +   if (this === firstCard) return;     this.classList.add('flip');     if (!hasFlippedCard) {       hasFlippedCard = true;       firstCard = this;       return;     }     secondCard = this; -   hasFlippedCard = false;     checkForMatch();   }   function checkForMatch() {     let isMatch = firstCard.dataset.name === secondCard.dataset.name;     isMatch ? disableCards() : unflipCards();   }   function disableCards() {     firstCard.removeEventListener('click', flipCard);     secondCard.removeEventListener('click', flipCard); +   resetBoard();   }   function unflipCards() {     lockBoard = true;     setTimeout(() => {       firstCard.classList.remove('flip');       secondCard.classList.remove('flip'); -     lockBoard = false; +     resetBoard();     }, 1500);   } + function resetBoard() { +   [hasFlippedCard, lockBoard] = [false, false]; +   [firstCard, secondCard] = [null, null]; + }   cards.forEach(card => card.addEventListener('click', flipCard));

洗牌

我们的游戏看起来相当不错,但是如果不能洗牌就没有乐趣,所以现在处理这个功能。

当 display: flex 在容器上被声明时,flex-items 会按照组和源的顺序进行排序。 每个组由order属性定义,该属性包含正整数或负整数。 默认情况下,每个 flex-item 都将其 order 属性设置为 0,这意味着它们都属于同一个组,并将按源的顺序排列。 如果有多个组,则首先按组升序顺序排列。

游戏中有12张牌,因此我们将迭代它们,生成 0 到 12 之间的随机数并将其分配给 flex-item order 属性:

function shuffle() {   cards.forEach(card => {     let ramdomPos = Math.floor(Math.random() * 12);     card.style.order = ramdomPos;   }); }

为了调用 shuffle 函数,让它成为一个立即调用函数表达式(IIFE),这意味着它将在声明后立即执行。 脚本应如下所示:

const cards = document.querySelectorAll('.memory-card');   let hasFlippedCard = false;   let lockBoard = false;   let firstCard, secondCard;   function flipCard() {     if (lockBoard) return;     if (this === firstCard) return;     this.classList.add('flip');     if (!hasFlippedCard) {       hasFlippedCard = true;       firstCard = this;       return;     }     secondCard = this;     lockBoard = true;     checkForMatch();   }   function checkForMatch() {     let isMatch = firstCard.dataset.name === secondCard.dataset.name;     isMatch ? disableCards() : unflipCards();   }   function disableCards() {     firstCard.removeEventListener('click', flipCard);     secondCard.removeEventListener('click', flipCard);     resetBoard();   }   function unflipCards() {     setTimeout(() => {       firstCard.classList.remove('flip');       secondCard.classList.remove('flip');       resetBoard();     }, 1500);   }   function resetBoard() {     [hasFlippedCard, lockBoard] = [false, false];     [firstCard, secondCard] = [null, null];   } + (function shuffle() { +   cards.forEach(card => { +     let ramdomPos = Math.floor(Math.random() * 12); +     card.style.order = ramdomPos; +   }); + })();   cards.forEach(card => card.addEventListener('click', flipCard));

到此,关于“怎么用JavaScript写一个卡片小游戏”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么用JavaScript写一个卡片小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于JavaScript编写一个翻卡游戏

这篇文章主要为大家详细介绍了如何溧阳JavaScript编写一个简单的翻卡游戏,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2023-02-15

使用JavaScript编写一个2048小游戏

今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点
2023-06-07

基于JavaScript如何编写一个翻卡游戏

这篇文章主要介绍“基于JavaScript如何编写一个翻卡游戏”,在日常操作中,相信很多人在基于JavaScript如何编写一个翻卡游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于JavaScript如
2023-07-05

怎么用Elixir语言编写一个小游戏

本篇内容主要讲解“怎么用Elixir语言编写一个小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Elixir语言编写一个小游戏”吧!通过编写“猜数字”游戏来学习 Elixir 编程语言
2023-06-15

使用Java编写一个2048小游戏

本文章向大家介绍使用Java编写一个2048小游戏的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页
2023-06-06

利用java编写一个弹球小游戏

本篇文章给大家分享的是有关利用java编写一个弹球小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。弹球游戏实现原理:  隔一定时间(小于1秒)重新绘制图像,因为Graphi
2023-05-31

怎么用Python编写一个宝石消消乐小游戏

本篇内容介绍了“怎么用Python编写一个宝石消消乐小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具python版本:3.6.4
2023-06-26

怎么用Js写一个简单的五子棋小游戏

这篇文章主要讲解了“怎么用Js写一个简单的五子棋小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Js写一个简单的五子棋小游戏”吧!这里的五子棋只做一些基础的功能,对于相对专业的规则
2023-07-02

怎么用java写小游戏

要用Java写一个小游戏,你可以按照以下步骤进行:1. 确定游戏的主题和玩法。选择一个简单的游戏主题,例如猜数字、井字棋、贪吃蛇等。2. 创建一个新的Java项目。可以使用Eclipse、IntelliJ IDEA或其他Java开发工具来创
2023-10-18

利用JavaScript怎么实现一个H5接金币小游戏

这篇文章主要为大家详细介绍了利用JavaScript怎么实现一个H5接金币小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行
2023-06-06

用Python写一个无界面的2048小游戏

以前游戏2048火的时候,正好用其他的语言编写了一个,现在学习python,正好想起来,便决定用python写一个2048,由于没学过python里面的界面编程,所以写了一个极其简单的无界面2048。游戏2048的原理和实现都不难,正好可以
2022-06-04

怎么用C++编写一个井字游戏

这篇文章主要介绍“怎么用C++编写一个井字游戏”,在日常操作中,相信很多人在怎么用C++编写一个井字游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用C++编写一个井字游戏”的疑惑有所帮助!接下来,请跟
2023-06-17

怎么用Python编写一个简单的游戏

本篇内容介绍了“怎么用Python编写一个简单的游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在这个系列中,我们要用不同的编程语言编写相
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录