python小游戏“植物大战僵尸”

python讨论qq群:996113038


导语

这几天一直写爬虫,感觉写累了。本来准备写一个画画的程序的,但是想来想去没有想到合适的程序。后来想到好久没有给大家推送过游戏了。上次推送游戏还是两个星期以前(如果我没记错的话)。而且那些游戏都比较简单,全是方块组成的飞机大战,贪吃蛇啥的。

今天就来一个稍微复杂点的“植物大战僵尸”。

当然了,大家别想错了,这个植物大战僵尸没有真正的植物大战僵尸那么复杂。那啥的倭瓜土豆玉米加农炮,西瓜荷叶豌豆大嘴花.......

我们没有三百多种植物。只有豌豆射手和向日葵。当然了,我们的敌人也很简单,只有最简单的僵尸。

当然了,其他的规则都和原来一样。鼠标左键代表种向日葵,右键代表种豌豆。


代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“ game12 ”获取源代吗

2:加入群聊:996113038。在群文件中下载源代码以及相关资料。


开发工具

python3.6.4

相关第三方库:

pygame

random


效果演示


基本原理

我们把需要的素材全部放到img文件夹里面呢,然后全部载入到程序里面。

1:首先设置好这个地图:

#3 创建地图类
class Map():
    #3 存储两张不同颜色的图片名称
    map_names_list = [IMAGE_PATH + 'map1.png', IMAGE_PATH + 'map2.png']
    #3 初始化地图
    def __init__(self, x, y, img_index):
        self.image = pygame.image.load(Map.map_names_list[img_index])
        self.position = (x, y)
        # 是否能够种植
        self.can_grow = True
    #3 加载地图
    def load_map(self):
         MainGame.window.blit(self.image,self.position)

创建好这个地图,img里面存储了两张地图,分为两个难度级别。地图类需要的参数是地图点的位置,这个点是否能够种植,要知道,一个地点只能种一个植物。

2:此外,我们还要建立植物类,向日葵类,豌豆射手类。其中,向日葵类,豌豆射手类应该继承向日葵类的所有属性。代码如下

class PeaShooter(Plant):

向日葵类要加一个生产阳光的功能,豌豆射手类应该加一个射击子弹的功能。里面要加上子弹与僵尸的碰撞检测,如果子弹与僵尸碰到了,需要让子弹消失在屏幕上,减少僵尸的生命值。

3:我们还需要加上僵尸类。

class Zombie(pygame.sprite.Sprite):

僵尸类应该继承游戏精灵类。还需要加上移动的功能。这个功能是僵尸类的私有功能,只有实例化的僵尸才能调用。


部分代码

下面是部分主函数:

#1 主程序
class MainGame():
    #2 创建关数,得分,剩余分数,钱数
    shaoguan = 1
    score = 0
    remnant_score = 100
    money = 200
    #3 存储所有地图坐标点
    map_points_list = []
    #3 存储所有的地图块
    map_list = []
    #4 存储所有植物的列表
    plants_list = []
    #7 存储所有豌豆子弹的列表
    peabullet_list = []
    #9 新增存储所有僵尸的列表
    zombie_list = []
    count_zombie = 0
    produce_zombie = 100
    #1 加载游戏窗口

              感谢大家观看,有钱的老板可以打赏一下小编哦!

扫描下方二维码,关注公众号

参考资料:

参考来源:https://github.com/371854496/pygame

封面来源:http://y2.ifengimg.com/dbcc8e45854c158f/2012/0930/rdn_5067a4f0ead51.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值