威尼斯网上娱乐场>国内彩讯>澳门赌场厅主·Python《植物大战僵尸》代码实现:植物卡片选择和种植

澳门赌场厅主·Python《植物大战僵尸》代码实现:植物卡片选择和种植

[摘要]python 植物大战僵尸代码实现:图片加载和显示切换https://blog.csdn.net/marble_xu/article/details/100129768下面是游戏的截图:图1:新增的植物和僵尸图2:每关开始选择上场植物卡片图3:选择植物在哪里种植植物卡片选择和种植如图3所示,游戏中可以种植物的方格一共有45个。完整代码游戏实现代码的github链接 植物大战僵尸https://gi

澳门赌场厅主·Python《植物大战僵尸》代码实现:植物卡片选择和种植

澳门赌场厅主,作者 | marble_xu

来源 | csdn原力计划获奖文章

功能介绍

植物卡片选择和种植

完整代码

代码实现

植物卡片类

卡片栏类

鼠标图片切换

提示种在哪个方格中

编译环境

功能介绍

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

功能介绍

功能实现如下:

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

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

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

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

增加除草机。

python 植物大战僵尸代码实现(1):图片加载和显示切换

https://blog.csdn.net/marble_xu/article/details/100129768

下面是游戏的截图:

图1:新增的植物和僵尸

图2:每关开始选择上场植物卡片

图3:选择植物在哪里种植

植物卡片选择和种植

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

这篇文章要介绍的是:

上方植物卡片栏的实现。

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

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

完整代码

游戏实现代码的github链接 植物大战僵尸

https://github.com/marblexu/pythonplantsvszombies

这边是csdn的下载链接 植物大战僵尸

https://download.csdn.net/download/marble_xu/11982275

代码实现

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

比如list index 0 就是太阳花:

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

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

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

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

代码在source\component\menubar.py中

植物卡片类

代码在source\component\menubar.py中,每个植物卡片是一个单独的card类,用来显示这个植物。

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

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

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

卡片栏类

代码在source\component\menubar.py中,menubar类显示图3中的植物卡片栏:

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

self.card_list: 植物卡片的list

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

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

鼠标图片切换

代码在source\state\level.py中,setupmouseimage 函数实现鼠标图片切换为选中的植物。

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

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

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

提示种在哪个方格中

先看下map类,代码在source\component\map.py 中

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

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

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

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

代码在source\state\level.py中:

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

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

编译环境

python3.7 + pygame1.9

版权声明:本文为csdn博主「marble_xu」原创,版权归作者所有。

技术的道路一个人走着极为艰难?

一身的本领得不施展?

优质的文章得不到曝光?


© Copyright 2018-2019 twettrends.com 威尼斯网上娱乐场 Inc. All Rights Reserved.