当前位置: 首页 > news >正文

公司做网站费用会计分录临沂做网站系统

公司做网站费用会计分录,临沂做网站系统,江苏鑫圣建设工程有限公司网站,网站建设 海南在撰写《从零开始制作消除游戏#xff1a;基于Web技术的简单教程》这篇博客时#xff0c;主要的目标是提供一个清晰、逐步的指南#xff0c;帮助读者从零开始创建自己的消除游戏。 游戏逻辑实现 游戏板设计与初始化#xff1a;描述如何创建游戏板的数据结构#xff0c;以…         在撰写《从零开始制作消除游戏基于Web技术的简单教程》这篇博客时主要的目标是提供一个清晰、逐步的指南帮助读者从零开始创建自己的消除游戏。 游戏逻辑实现 游戏板设计与初始化描述如何创建游戏板的数据结构以及如何初始化游戏。处理用户输入解释如何捕获和处理用户的点击事件以便他们可以放置或移动方块。更新游戏状态深入探讨如何根据用户的操作更新游戏板的状态。检测和消除连续的相同块详细解释如何实现这个核心逻辑确保游戏能够检测并消除连续的相同方块。 第一步创建HTML结构 首先我们需要构建游戏的HTML结构。创建一个index.html文件并添加以下代码 !DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title消消乐游戏/title style #game { width: 300px; height: 300px; border: 1px solid #000; } .block { width: 30px; height: 30px; } /style /head body div idgame onclickswapBlocks()/div script srcscript.js/script /body /html 第二步初始化游戏块 接下来我们在script.js中添加游戏的逻辑。首先我们需要初始化游戏块。我们可以通过一个二维数组来表示游戏板上的块其中每个元素代表一个块的类型。例如我们可以用数字0、1、2等来表示不同的块。 在script.js中添加以下代码 const gameBoard [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; 第三步渲染游戏块 接下来我们需要将游戏板渲染到HTML中。我们可以使用div元素来代表每个块并使用CSS样式来设置它们的外观。在script.js中添加以下代码 const game document.getElementById(game); const blockSize 30; // 每个块的大小为30px * 30px const blocks []; // 用于存储所有的块元素 function renderBoard() { // 清除之前的块元素 while (game.firstChild) { game.removeChild(game.firstChild); } blocks.length 0; // 清空块元素数组 // 创建并添加每个块元素 for (let i 0; i gameBoard.length; i) { const row document.createElement(div); row.style.height blockSize px; for (let j 0; j gameBoard[i].length; j) { const block document.createElement(div); block.style.width blockSize px; block.style.height blockSize px; block.style.background rgb(${((i j) * 10) % 255}, ${((i j) * 10) % 255}, ${((i j) * 10) % 255}); // 随机生成颜色作为块的背景色 block.innerText gameBoard[i][j]; // 在块上显示数字作为类型标识符 block.addEventListener(click, () swapBlocks(i, j)); // 为每个块添加点击事件监听器以便在用户点击时交换块 row.appendChild(block); // 将块添加到行中 blocks.push(block); // 将块添加到块数组中以便稍后可以轻松地访问它们以进行交换操作等操作。 } game.appendChild(row); // 将行添加到游戏板中以显示它们。 } } renderBoard(); // 在页面加载时渲染游戏板。这是我们的初始化过程。之后我们将通过交换操作来更新游戏板的状态。这将通过调用 swapBlocks() 函数来完成。这个函数将接收两个参数即要交换的两个块的行和列索引。然后我们将通过交换这两个块来更新游戏板的状态。这将通过简单地交换两个数组元素的索引来完成。这样当我们在下一帧中渲染游戏板时这两个块将出现在它们新的位置上。这会让我们看起来像是我们移动了一个块来交换另一个块的位置。 第四步交换游戏块 在交换游戏块时我们需要考虑一些边界条件。例如如果用户试图将一个块移动到游戏板的边缘我们应该阻止这种交换。此外我们还需要检查两个块是否可以交换。这可以通过检查它们是否属于同一行或同一列来完成。如果它们属于同一行或同一列我们可以安全地交换它们。 在script.js中添加以下代码 function swapBlocks(row1, col1, row2, col2) { // 检查边界条件和交换可行性 if (row1 0 || row1 gameBoard.length || col1 0 || col1 gameBoard[row1].length || row2 0 || row2 gameBoard.length || col2 0 || col2 gameBoard[row2].length || gameBoard[row1][col1] gameBoard[row2][col2] || !canSwap(row1, col1, row2, col2)) { return; } // 交换块 const temp gameBoard[row1][col1]; gameBoard[row1][col1] gameBoard[row2][col2]; gameBoard[row2][col2] temp; // 重新渲染游戏板 renderBoard(); } function canSwap(row1, col1, row2, col2) { // 检查两个块是否可以交换不属于同一行或同一列 return row1 ! row2 col1 ! col2; } 第五步处理消除 当用户交换块时我们需要检查是否形成了连续的相同块。如果是我们需要消除这些块并更新游戏板。我们可以使用深度优先搜索DFS算法来找到并消除连续的相同块。在DFS算法中我们将从当前位置开始并尝试向上下左右移动。如果我们可以移动到相同类型的块我们将继续搜索并消除这些块。否则我们将停止搜索并返回到上一个位置。在消除过程中我们将从游戏板中删除相应的块元素。最后我们将重新渲染游戏板以显示消除的结果。 在script.js中添加以下代码 function removeBlocks(row, col) { // 检查是否可以向上下左右移动并消除连续的相同块 const directions [[-1, 0], [1, 0], [0, -1], [0, 1]]; // 上下左右四个方向 for (let i 0; i directions.length; i) { const [dx, dy] directions[i]; // 当前方向的增量 let x row dx; // 当前位置的x坐标 let y col dy; // 当前位置的y坐标 let count 0; // 连续相同块的计数器 while (x 0 x gameBoard.length y 0 y gameBoard[x].length gameBoard[x][y] gameBoard[row][col]) { count; // 增加计数器 x dx; // 更新x坐标 y dy; // 更新y坐标 } if (count 1) { // 如果连续相同块的计数大于1则消除这些块 for (let j 0; j count; j) { gameBoard[row j][col] null; // 将连续的相同块设置为null以表示消除它们 } renderBoard(); // 重新渲染游戏板以显示消除的结果。这是我们的游戏循环的一部分。我们将不断重复这个过程直到用户选择退出游戏或游戏结束。为了实现这一点我们将使用一个简单的游戏循环来不断更新游戏的状态和渲染游戏板。我们将在下一部分中介绍这个循环的实现。 第六步游戏循环 在游戏循环中我们将不断更新游戏的状态并重新渲染游戏板。我们将使用requestAnimationFrame函数来实现这个循环。这个函数将告诉浏览器我们希望在下次重绘之前调用一个函数来更新动画。这将确保我们的游戏以平滑的帧率运行。 在script.js中添加以下代码 let lastTime 0; function gameLoop(time) { const deltaTime time - lastTime; lastTime time; updateGame(deltaTime); renderBoard(); requestAnimationFrame(gameLoop); } requestAnimationFrame(gameLoop); 第七步更新游戏状态 在游戏循环中我们需要更新游戏的状态。这可能包括处理用户的输入、消除块、检查游戏是否结束等。在我们的简单游戏中我们将检查是否形成了连续的相同块并消除它们。 在script.js中添加以下代码 function updateGame(deltaTime) { // 检查并消除连续的相同块 for (let i 0; i gameBoard.length; i) { for (let j 0; j gameBoard[i].length; j) { if (gameBoard[i][j] ! null gameBoard[i][j] ! undefined) { const blocksToRemove checkAndRemoveBlocks(i, j); for (let k 0; k blocksToRemove.length; k) { gameBoard[blocksToRemove[k].row][blocksToRemove[k].col] null; // 消除这些块 } } } } } 第八步检查和消除连续的相同块 在检查和消除连续的相同块时我们将使用类似于前面处理消除的深度优先搜索DFS算法。我们将从当前位置开始并尝试向上下左右移动。如果我们可以移动到相同类型的块我们将继续搜索并消除这些块。否则我们将停止搜索并返回到上一个位置。在搜索过程中我们将记录下要消除的块的坐标。最后我们将返回这些坐标以便在游戏循环中消除这些块。 在script.js中添加以下代码 function checkAndRemoveBlocks(row, col) { const directions [[-1, 0], [1, 0], [0, -1], [0, 1]]; // 上下左右四个方向 const blocksToRemove []; // 存储要消除的块的坐标 for (let i 0; i directions.length; i) { const [dx, dy] directions[i]; // 当前方向的增量 let x row dx; // 当前位置的x坐标 let y col dy; // 当前位置的y坐标 while (x 0 x gameBoard.length y 0 y gameBoard[x].length gameBoard[x][y] ! null gameBoard[x][y] gameBoard[row][col]) { blocksToRemove.push({row: x, col: y}); // 记录要消除的块的坐标 x dx; // 更新x坐标 y dy; // 更新y坐标 } } return blocksToRemove; // 返回要消除的块的坐标列表以便在游戏循环中消除这些块。这是我们的游戏逻辑的核心部分。它确保我们的游戏能够检测和消除连续的相同块从而提供有趣和挑战性的游戏体验。通过使用简单的JavaScript和HTML技术我们可以轻松地实现这个逻辑而不需要使用任何第三方库或框架。这证明了Web技术的强大功能和灵活性。 第九步游戏结束 当游戏结束时我们需要告诉用户游戏已经结束并显示一个消息来解释为什么游戏结束。在我们的简单游戏中游戏将在没有空位时结束。我们将遍历游戏板检查是否有空位如果没有空位则游戏结束。 在script.js中添加以下代码 function checkGameOver() { for (let i 0; i gameBoard.length; i) { for (let j 0; j gameBoard[i].length; j) { if (gameBoard[i][j] null) { return false; // 如果有空位则游戏未结束 } } } return true; // 如果没有空位则游戏结束 } 第十步显示游戏结束消息 当游戏结束时我们需要显示一个消息来告诉用户游戏已经结束。我们可以使用HTML和CSS来显示这个消息。在HTML中我们将添加一个元素来显示消息并在CSS中设置样式来美化它。 在HTML中添加以下代码 div idgameOverMessage classhidden游戏结束!/div 在CSS中添加以下代码 .hidden { display: none; } 在script.js中添加以下代码 function showGameOverMessage() { const gameOverMessage document.getElementById(gameOverMessage); gameOverMessage.classList.remove(hidden); // 显示游戏结束消息 } 第十一步整合所有代码 现在我们已经完成了所有步骤我们可以将所有代码整合在一起。确保将所有HTML、CSS和JavaScript代码放在适当的位置以便它们可以在浏览器中正确加载和运行。在HTML中将script标签放在body标签的末尾以便在页面加载时执行JavaScript代码。在CSS中将样式表链接放在head标签中。最后将所有JavaScript代码放在一个外部JavaScript文件中并在HTML中引用它。现在你可以打开HTML文件并在浏览器中查看你的游戏了 总结 通过遵循这些步骤你已经创建了一个简单的消除游戏。虽然这是一个简单的示例但它为你提供了一个良好的起点可以进一步扩展和改进。希望这些步骤对你有所帮助并激发你对Web开发和游戏开发的热情。
http://www.zqtcl.cn/news/883549/

相关文章:

  • 主机网站wampserver搭建网站
  • 建设银行网站点不进去深圳龙华区招聘网最新招聘信息
  • 网站建设公司现在还挣钱吗wordpress棋牌
  • 网站建设有什么技术自媒体平台哪个好
  • 可以建网站的软件南昌seo代理商
  • 手机网站建设宽度中小型企业网站模板
  • 网站开发需要的所有技术中信建设有限责任公司历任董事长
  • 安徽省建设干部学校网站首页做软件是什么工作
  • 图书馆网站设计方案安徽质量工程建设网站
  • 电子商务网站建设效果那个网站可以做链接
  • 怎样做投资与理财网站网页设计优秀案例分析
  • 网站制作需要学什么搜狗网页版入口
  • html源码网seo搜索优化工程师招聘
  • 做的网站在小窗口中怎么保持中间广东省公共资源交易中心地址
  • 合肥做网站汇站网织梦网站广告代码教程
  • 复兴专业做网站wordpress搬家502
  • 代做毕网站淘宝权重查询
  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制