Python面向对象植物大战僵尸

这篇具有很好参考价值的文章主要介绍了Python面向对象植物大战僵尸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先来一波效果图

 

Python面向对象植物大战僵尸,python,pygame,开发语言,植物大战僵尸,游戏开发,面向对象

Python面向对象植物大战僵尸,python,pygame,开发语言,植物大战僵尸,游戏开发,面向对象文章来源地址https://www.toymoban.com/news/detail-655978.html

 来看看如何设计游戏架构

import sys

import pygame


class BaseSprite(pygame.sprite.Sprite):
    def __init__(self, name):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()


class AnimateSprite(BaseSprite):
    def __init__(self, default_name, names):
        super().__init__(default_name)
        self.images = [pygame.image.load(name) for name in names]
        self.current = 0

    def update(self):
        self.current += 1
        if self.current == len(self.images) * 2:
            self.current = 0
        self.image = self.images[self.current // 2]


class Enemy(AnimateSprite):
    def __init__(self, default_name, names, center, gm):
        super().__init__(default_name, names)
        self.rect.center = center
        self.time_count = 2
        self.gm = gm

        self.bullet_group = pygame.sprite.Group()

    def update(self):
        super().update()
        self.rect.left -= 1


class PeaShooter(AnimateSprite):
    def __init__(self, default_name, names, center, gm):
        super().__init__(default_name, names)
        self.rect.center = center
        self.time_count = 5
        self.gm = gm

        self.bullet_group = pygame.sprite.Group()

    def update(self):
        super().update()
        self.time_count -= 0.1
        if self.time_count <= 0:
            self.time_count = 5
            BulletSprite("bullet.png", (self.rect.right, self.rect.top + 15)).add(self.bullet_group)

        self.bullet_group.draw(self.gm.screen)
        self.bullet_group.update()

        print("当前子弹哟", len(self.bullet_group.sprites()))


class BulletSprite(BaseSprite):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        self.rect.left += 5
        if self.rect.left > 1400:
            self.kill()


class GameManage:
    def __init__(self):
        self.screen = pygame.display.set_mode((1400, 600))
        pygame.display.set_caption("植物大战僵尸")

        self.clock = pygame.time.Clock()

        self.bg_surface = pygame.image.load("background1.jpg")

        # 射手精灵组
        self.pea_shooter_group = pygame.sprite.Group()

        self.pea1 = PeaShooter("plants/peashooter/idle/idle_00.png",
                               [f"plants/peashooter/idle/idle_0{i}.png" for i in range(8)], (700, 200), self)
        self.pea1.add(self.pea_shooter_group)

        self.pea2 = PeaShooter("plants/peashooter/idle/idle_00.png",
                               [f"plants/peashooter/idle/idle_0{i}.png" for i in range(8)], (700, 300), self)
        self.pea2.add(self.pea_shooter_group)

        self.enemy_group = pygame.sprite.Group()

        images = [f"zombies/run/run_0{i}.png" for i in range(10)]
        for i in range(10, 31):
            images.append(f"zombies/run/run_{i}.png")

        self.enemy1 = Enemy("zombies/run/run_00.png", images, (1400, 200), self)
        self.enemy1.add(self.enemy_group)

        self.enemy2 = Enemy("zombies/run/run_00.png", images, (1100, 200), self)
        self.enemy2.add(self.enemy_group)

        self.enemy3 = Enemy("zombies/run/run_00.png", images, (1300, 300), self)
        self.enemy3.add(self.enemy_group)

        self.enemy4 = Enemy("zombies/run/run_00.png", images, (1200, 300), self)
        self.enemy4.add(self.enemy_group)

    def run(self):
        while True:
            self.clock.tick(20)

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

            self.screen.blit(self.bg_surface, (0, 0))

            self.pea_shooter_group.draw(self.screen)
            self.pea_shooter_group.update()

            self.enemy_group.draw(self.screen)
            self.enemy_group.update()


            for pea_sprite in self.pea_shooter_group.sprites():
                if pygame.sprite.groupcollide(pea_sprite.bullet_group, self.enemy_group, True, True):
                    print("打死了一个僵尸")

            pygame.display.flip()


gm = GameManage()
gm.run()

抛砖引玉,等待后续完善。。。。。

到了这里,关于Python面向对象植物大战僵尸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python制作植物大战僵尸,赶快来试试吧

    哈喽,大家下午好,我是小圆 想问有谁不知道植物大战僵尸这个游戏啊,我从小就在玩 大学上课的时候,老师在上面讲课,我偷摸着在下面玩游戏,一边打僵尸,一边养植物,还是感觉挺意思的 ok,今天我们来用python制作植物大战僵尸里面的冒险模式吧 相关准备 💞 在开始

    2024年02月11日
    浏览(45)
  • 用Python制作小游戏之‘植物大战僵尸’(一)

    1.引入需要的模块 2.配置图片地址及页面宽高等 3.创建地图类 4.植物类 5.增加射击方法 7.豌豆子弹 8.僵尸类 9.以及主程序部分 10.启动程序 完整代码在下一篇文章中

    2024年02月12日
    浏览(49)
  • 【Python游戏】超简单~Python实现植物大战僵尸小游戏,可以用于做毕业设计哟 | 附源码

    hello,大家好呀~ 今天给打击整一个植物大战僵尸 无广告版本 哈哈 现在的小游戏很多都是有广告,多少有点难受 今天给大家直接安排 遇到不懂的问题也可以私信小编或者↓ ↓ ↓ 源码. 点击蓝色字体领取哟~(备注:苏) 有很多的资源可以白嫖的哈,不定时会更新一下Pytho

    2024年02月05日
    浏览(51)
  • 植物大战僵尸植物表(二)

    此文章为“植物大战僵尸”专栏中的第007刊(2023年9月第六刊)。 提示: 1.用于无名版; 2.用于1代; 3.pvz指植物大战僵尸(Plants VS Zonbies)。 土豆雷 窝瓜 火炬树桩 火爆辣椒 杨桃 咖啡豆 大蒜 樱桃炸弹 水草 暗影月光花

    2024年02月10日
    浏览(48)
  • 植物大战僵尸各种僵尸攻略

    此文章为“植物大战僵尸”专栏中的009刊(2023年9月第八刊),欢迎订阅。版权所有。 注意: 1.本博客适用于pvz无名版; 2.pvz指植物大战僵尸(Plants VS Zonbies); 3.本文以耗费低做标准,方法不唯一; 4.本期讲述较弱的僵尸。 1.路障舞王 路障舞王死后会有伴舞僵尸,打起来很轻

    2024年02月09日
    浏览(42)
  • 针对“扫雷“和“植物大战僵尸“游戏,分析,扫描,阳光值,植物,金币,僵尸的分析逆向

    《软件逆向分析》 2022年9月 [一、实验工具介绍 3](#一实验工具介绍) [二、针对\\\"扫雷\\\"游戏 3](#二针对扫雷游戏) [2.1分析\\\"初级\\\"、\\\"中级\\\"和\\\"高级\\\"的棋盘内存地址范围 3](#分析初级中级和高级的棋盘内存地址范围) [2.2找出\\\"雷数\\\"、\\\"笑脸\\\"和\\\"计时器\\\"的内存地址 9](#找出雷数笑脸和计时

    2024年02月07日
    浏览(47)
  • 前端小游戏——植物大战僵尸

    给大家分享一个植物大战僵尸网页游戏源代码,感兴趣的小伙伴可收藏学习 (完整源码在文末) 先来一睹“芳容” 《植物大战僵尸》 是一款极富策略性的小游戏。可怕的僵尸即将入侵,每种僵尸都有不同的特点,例如铁桶僵尸拥有极强的抗击打能力,矿工僵尸可以挖地道绕

    2024年02月03日
    浏览(45)
  • 【植物大战僵尸融合机器学习】+源码

    今天给大家推荐一个Gtihub开源项目:PythonPlantsVsZombies,翻译成中就是植物大战僵尸。 《植物大战僵尸》是一款极富策略性的小游戏。可怕的僵尸即将入侵,每种僵尸都有不同的特点,例如铁桶僵尸拥有极强的抗击打能力,矿工僵尸可以挖地道绕过种植在土壤表面的植物等。玩

    2024年04月17日
    浏览(86)
  • C语言手写-植物大战僵尸

    植物大战僵尸,是一个非常经典的小游戏,初学者从零开始,开发一个自己的植物大战僵尸,还是非常值得期待的!可以作为自己的课设,也可以用来快速提升自己的项目开发能力。 说明:因为完整动图提交后提示违规,所以这里仅截图示意。如果需要演示视频,在评论中回

    2023年04月27日
    浏览(90)
  • Java版【植物大战僵尸+源码】

    今天给大家推荐一个Gtihub开源项目:PythonPlantsVsZombies,翻译成中就是植物大战僵尸。 《植物大战僵尸》是一款极富策略性的小游戏。可怕的僵尸即将入侵,每种僵尸都有不同的特点,例如铁桶僵尸拥有极强的抗击打能力,矿工僵尸可以挖地道绕过种植在土壤表面的植物等。玩

    2024年04月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包