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

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢)

大家写的时候可以参考一下我的代码思路

git地址:--- 植物大战僵尸源代码---

不下载直接玩: --- 植物大战僵尸浏览器页面直接玩 ---(也可以在手机里面点开,但是放置植物时会有些卡(可以点一下植物然后再点一下草坪,也可以实现功能),电脑莫有问题)大家第一次玩这个可能会有些卡顿,第二次就好了

界面介绍:

进入游戏开始界面:

 游戏主菜单界面:

 游戏界面:

 

界面底层使用和js思路分析:                                               

HTML的内容(所有) :

<div class="total wrapper">
    <!-- 整个页面的内容 -->
    <div class="entire wrapper">
      <!-- 设置游戏开始是的场景 -->
      <div class="startJframe">
        <!-- 放置我事件监听的按钮 -->
        <div class="startGame-btn wrapper">
          <div class="begin-text"></div>
        </div>
      </div>
      <div class="menu">
        <div class="menu_btn"></div>
      </div>
      <div class="game-jframe">
        <canvas id="canvas" style="width: 1120px; height: 620px;">
        </canvas>
      </div>
    </div>
  </div>

我这里只有3个页面,你们写的时候可以多加几个关卡,我这里相当于只有一个关卡,然后我将讲解一下我的这三个界面都是如何构成的

第一个页面:纯HTML(div startjframe)+CSS

第二个页面:纯HTML(div menu)+CSS

第三个页面:HTML(div game-jframe)里面的 canvas 绘画和 js(僵尸植物除了草坪的所有东西都是通过canvas绘画的)                               

 

 canvas js代码思路:

我一共写了4个js,在这里和大家系统介绍一下:

mcommon是我用来存储图片路径

mscene是我来定义类的(里面只有类 【植物,僵尸,小卡车,太阳,铲子,子弹,植物卡片】 )

(大家在创建类的时候可能会有些麻烦,如果遇到问题可以在评论区问我,我会尽力帮大家解决的)

mgame是我用来通过调用mscene中的类对象的draw方法来进行页面绘制的(通过canvas中的drawImage方法绘制的)-(下面的那个图片中的cxt就是context【canvas的上下文】)

mmain是我用来初始化一些东西的【僵尸数组,植物数组,小车数组,卡片数组,一个太阳全局生成定时器,一个reset退出游戏界面清空僵尸植物和太阳的数组,并将太阳数量重置】

js游戏运行核心:

整个游戏我是通过定时器来实现我的页面运行的,因为我还没有学到其他的一些知识,所以现在只能如此

通过游戏进度的判断然后来调用game类中定义的方法实现的

      g.drawPlants()
      g.drawZombies()
      g.drawStepImg()
      g.drawPic()
      g.drawShovel()
      g.drawReturn()
      g.drawCars()

就比如上面这个就是当我的游戏在进行时,在页面中绘画植物,僵尸,进度条,鼠标点击植物时出现的卡片,小铲子,小车等等...  g是我的class game类,然后后面是我在这个类中定义的方法

到这里就结束了,真心希望大家可以通过我的分享学习到一些东西


http://www.kler.cn/a/315013.html

相关文章:

  • Brave127编译指南 Windows篇:部署Node.js(五)
  • 从华为到创业公司
  • 844.比较含退格的字符串
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • 字节跳动Android面试题汇总及参考答案(80+面试题,持续更新)
  • Python数据类型(一):bool布尔类型
  • [每日一练]MySQL中的正则表达式的应用
  • Day 9:1306 跳跃游戏III
  • 神经网络构建原理(以MINIST为例)
  • Java | Leetcode Java题解之第416题分割等和子集
  • 国内可以使用的ChatGPT服务【9月持续更新】
  • 828华为云征文 | 云服务器Flexus X实例:多智能体对话框架 AutoGen 部署和实例运行
  • 重修设计模式-结构型-门面模式
  • python 实现binomial coefficient二项式系数算法
  • excel 单元格一直显示年月日
  • Contact Form 7最新5.9.8版错误修复方案
  • ClickHouse 与 Quickwit 集成实现高效查询
  • 适用于QF的存档系统
  • react的事件绑定
  • vulnhub(12):bob 1.0.1(gpg文件解密)
  • @PostConstruct
  • <刷题笔记> 力扣236题——二叉树的公共祖先
  • 全面详尽的 PHP 环境搭建教程
  • C++ 元编程
  • 18938 汉诺塔问题
  • 《深度学习》PyTorch 常用损失函数原理、用法解析