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