前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:程序IT圈

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun

功能介绍

最近一直在给这个植物大战僵尸游戏添加新的植物和僵尸, 因为网上的图片资源有限,能加的植物和僵尸比较少, 目前进展如下。

功能实现如下:

支持的植物类型:太阳花,豌豆射手,寒冰射手,坚果,樱桃炸弹。新增加植物:双重豌豆射手,三重豌豆射手,食人花 ,小喷菇,土豆地雷,倭瓜。

支持的僵尸类型:普通僵尸,棋子僵尸,路障僵尸,铁桶僵尸。新增加读报僵尸。

使用json文件保存关卡信息,设置僵尸出现的时间和位置。

增加每关开始时选择上场植物。

增加除草机。

下面是游戏的截图:

植物卡片选择和种植

如图所示,游戏中可以种植物的方格一共有45个(有5行,每行9列)。

这篇文章要介绍的是:

上方植物卡片栏的实现。

点击植物卡片,鼠标切换为植物图片。

鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。

代码实现

所有的植物卡片的名称和属性都保存在单独的list中,每个list index都对应一种植物。

比如list index 0 就是太阳花:

card_name_list[0] 是太阳花卡片的名字,用来获取太阳花卡片的图片。

plant_name_list[0] 是太阳花的名字,用来获取太阳花卡片的图片。

plant_sun_list[0] 是种植太阳花需要花费的太阳点数。

plant_frozen_time_list[0] 是太阳花的冷却时间。

植物卡片类

每个植物卡片是一个单独的Card类,用来显示这个植物。

checkMouseClick函数:判断鼠标是否点击到这个卡片;

canClick:判断这个卡片是否能种植(有没有足够的点数,是否还在冷却时间内);

update 函数:通过设置图片的透明度来表示这个卡片是否能选择。

卡片栏类

MenuBar类显示图3中的植物卡片栏:

self.sun_value:当前采集的太阳点数;

self.card_list: 植物卡片的list;

setupCards函数:遍历初始化init函数中传入这个关卡选好的植物卡片list,依次创建Card类,设置每个卡片的显示位置;

checkCardClick函数:检查鼠标是否点击了卡片栏上的某个植物卡片,如果选择了一个可种植的卡片,返回结果。

代码:

鼠标图片切换

setupMouseImage 函数实现鼠标图片切换为选中的植物:

self.mouse_image :根据 plant_name 获取选中的植物图片;

self.mouse_rect:选中植物图片的位置,在drawMouseShow函数中,需要将植物图片的位置设置成当前鼠标的位置;

pg.mouse.set_visible(False):隐藏默认的鼠标显示,这样效果就是鼠标图片切换为选中的植物了。

提示种在哪个方格中

先看下map类,代码在sourcecomponentmap.py 中:

self.map:二维list,用来保存每个方格的状态。每个entry初始化为 0, 表示可以种植物,值为1时表示这个方格已经种了植物。

getMapIndex 函数:传入参数是游戏中的坐标位置(比如当前鼠标的位置),返回该位置在地图的哪个方格中。

getMapGridPos 函数:传入一个方格的index,返回在该方格中种植物的坐标位置。

showPlant 函数:根据传入的坐标位置,判断该位置所在的方格是否能种植物,如果能种,就返回返回在该方格中种植物的坐标位置。

代码在sourcestatelevel.py中:

canSeedPlant 函数:判断当前鼠标位置能否种植物;

setupHintImage 函数:如果当前鼠标位置能种植物,且有选择了一个植物卡片,则设置self.hint_image 显示当前会在哪一个方格中种植物,self.hint_rect 是植物种的坐标位置。

植物大战僵尸的代码如何使用python来实现

松鼠爱吃饼干2020-04-14 15:17

前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:程序IT圈

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun

功能介绍

最近一直在给这个植物大战僵尸游戏添加新的植物和僵尸, 因为网上的图片资源有限,能加的植物和僵尸比较少, 目前进展如下。

功能实现如下:

支持的植物类型:太阳花,豌豆射手,寒冰射手,坚果,樱桃炸弹。新增加植物:双重豌豆射手,三重豌豆射手,食人花 ,小喷菇,土豆地雷,倭瓜。

支持的僵尸类型:普通僵尸,棋子僵尸,路障僵尸,铁桶僵尸。新增加读报僵尸。

使用json文件保存关卡信息,设置僵尸出现的时间和位置。

增加每关开始时选择上场植物。

增加除草机。

下面是游戏的截图:

植物卡片选择和种植

如图所示,游戏中可以种植物的方格一共有45个(有5行,每行9列)。

这篇文章要介绍的是:

上方植物卡片栏的实现。

点击植物卡片,鼠标切换为植物图片。

鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。

代码实现

所有的植物卡片的名称和属性都保存在单独的list中,每个list index都对应一种植物。

比如list index 0 就是太阳花:

card_name_list[0] 是太阳花卡片的名字,用来获取太阳花卡片的图片。

plant_name_list[0] 是太阳花的名字,用来获取太阳花卡片的图片。

plant_sun_list[0] 是种植太阳花需要花费的太阳点数。

plant_frozen_time_list[0] 是太阳花的冷却时间。

植物卡片类

每个植物卡片是一个单独的Card类,用来显示这个植物。

checkMouseClick函数:判断鼠标是否点击到这个卡片;

canClick:判断这个卡片是否能种植(有没有足够的点数,是否还在冷却时间内);

update 函数:通过设置图片的透明度来表示这个卡片是否能选择。

卡片栏类

MenuBar类显示图3中的植物卡片栏:

self.sun_value:当前采集的太阳点数;

self.card_list: 植物卡片的list;

setupCards函数:遍历初始化init函数中传入这个关卡选好的植物卡片list,依次创建Card类,设置每个卡片的显示位置;

checkCardClick函数:检查鼠标是否点击了卡片栏上的某个植物卡片,如果选择了一个可种植的卡片,返回结果。

代码:

鼠标图片切换

setupMouseImage 函数实现鼠标图片切换为选中的植物:

self.mouse_image :根据 plant_name 获取选中的植物图片;

self.mouse_rect:选中植物图片的位置,在drawMouseShow函数中,需要将植物图片的位置设置成当前鼠标的位置;

pg.mouse.set_visible(False):隐藏默认的鼠标显示,这样效果就是鼠标图片切换为选中的植物了。

提示种在哪个方格中

先看下map类,代码在sourcecomponentmap.py 中:

self.map:二维list,用来保存每个方格的状态。每个entry初始化为 0, 表示可以种植物,值为1时表示这个方格已经种了植物。

getMapIndex 函数:传入参数是游戏中的坐标位置(比如当前鼠标的位置),返回该位置在地图的哪个方格中。

getMapGridPos 函数:传入一个方格的index,返回在该方格中种植物的坐标位置。

showPlant 函数:根据传入的坐标位置,判断该位置所在的方格是否能种植物,如果能种,就返回返回在该方格中种植物的坐标位置。

代码在sourcestatelevel.py中:

canSeedPlant 函数:判断当前鼠标位置能否种植物;

setupHintImage 函数:如果当前鼠标位置能种植物,且有选择了一个植物卡片,则设置self.hint_image 显示当前会在哪一个方格中种植物,self.hint_rect 是植物种的坐标位置。

如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦!

内容来源于网络如有侵权请私信删除

python植物大战僵尸代码写完了怎么运行_植物大战僵尸的代码如何使用python来实现...相关推荐

  1. 以下选项中不是python对文件的写操作方法的是_以下选项中,不是 Python 对文件的读操作方法的是...

    以下选项中,不是 Python 对文件的读操作方法的是 答:readtext 中国大学MOOC: 温度升高,生物大分子容易降解.为防止变性和降解,对于具有活性的蛋白质和酶,提取时一般在0℃-5℃的低温 ...

  2. python代码写完怎么运行-Python 项目代码写完了,然后怎么打包和发布?

    你把你的代码写完了,是不是要给别人使用下,怎么打包你的项目代码呢? 喂,开源么? 接下来小帅b就跟你说说,如何打包你的代码. 就拿我们上次演示的 用 Python 开发一个 「个人计划 todolis ...

  3. php代码里怎么写html代码_菜鸟青铜变白银!Python 项目代码写完了,然后怎么打包和发布?...

    你把你的代码写完了,是不是要给别人使用下,怎么打包你的项目代码呢?喂,开源么?接下来小帅b就跟你说说,如何打包你的代码.就拿我们上次演示的 todo为例,写完代码之后,代码的目录是这样的: 在 tod ...

  4. python代码写完怎么运行-教你如何编写、保存与运行 Python 程序

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  5. ++代码实现 感知机的原理_决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

  6. python在图片上写倾斜文字_OpenCV文字识别(二):使用Python(直线检测法)对图像进行倾斜校正...

    OpenCV 文字识别(一):图像预处理 上一篇的博客中我使用了C++对印刷体汉字进行了预处理,但因为文字识别模型是基于TensorFlow的,C++调用python代码繁杂且容易出错,所以试着用Py ...

  7. jS代码写在html什么位置,3种JavaScript代码书写位置和注意事项

    在网页中编写JavaScript代码时,有3种书写位置,分别是行内式.内嵌式(也称为嵌入式)和外部式(也称为外链式),下面分别进行讲解. 1. 行内式 行内式是指将单行或少量的JavaScript代码 ...

  8. 喜欢把代码写一行的人_我最喜欢的代码行

    喜欢把代码写一行的人 Every developer has their favourite patterns, functions or bits of code. This is mine and ...

  9. 以下选项中不是python对文件的写操作方法的是_以下选项中不是Python对文件的写操作方法的是:()-智慧树品三国,论领导艺术章节答案...

    品三国,论领导艺术:以下选项中不是Python对文件的写操作方法的是:()[单选题] A:准确性原则 B:公平原则 C:完整性原则 D:及时原则 品三国,论领导艺术章节测试答案: 公平原则 更多相关问 ...

  10. python可以写什么视觉特效_星球大战视觉特效背后的功臣—Python语言

    本文主要向大家介绍了星球大战视觉特效背后的功臣-Python语言,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 阔别十年时光,全球瞩目的第七部星球大战电影<原力觉醒> ...

最新文章

  1. logo语言linux,用 screenfetch 和 linux_logo 显示带有酷炫 Linux 标志的基本硬件信息
  2. 在不root手机的情况上读取Data目录上的文件
  3. java on RHEL5
  4. WebStorm V2017.1版用于Angular2开发的环境设置
  5. 网站的高性能架构--web前端优化
  6. 前端相对路径 与后端相对路径的区分
  7. 【S操作】我的云存储工具选择,供您参考——总结云存储云办公云笔记工具
  8. 好用的数学公式(持续更新中)
  9. 实例41:python
  10. 蓝鲸社区版_部署bkdata服务无法启动问题
  11. docker-containerd 启动流程分析
  12. 交返对于高频交易者尤为重要
  13. 群晖Docker部署Calibre Web打造全功能书库
  14. 英语体系----词根词缀等----持续补充(词根词缀等,词汇,语法,简单句,长难句,写作)
  15. 基于STM32的智能抽油烟机系统
  16. 将视频文件旋转90°的方法
  17. python问卷星 自动答题_问卷星自动答题神器
  18. oracle 自增数,ORACLE自增函数,一般函数
  19. 冯小刚回应质疑:中国没大师 谁都别装!
  20. 王半仙儿的日记-0004

热门文章

  1. 卡巴斯基提供升级包 解决病毒库升级
  2. 从eoeandroid换到CSDN-[回顾]
  3. Android集成微信登录-无法收到微信登录回调结果
  4. VM 网络设置 for xp3
  5. 冯诺依曼元胞计算机,冯诺依曼元胞自动机
  6. 统计学基础知识(一)
  7. 【推荐】前沿智能视频分析深度学习算法框架-NVIDIA DEEPSTREAM5.0 【原理介绍】
  8. 《创新者的窘境》读书笔记
  9. 表面肌电信号处理流程——基于肌电信号分类的特征抽取的设计
  10. 3┃音视频直播系统之浏览器中通过 WebRTC 直播视频实时录制回放下载