返回顶部
首页 > 资讯 > 后端开发 > Python >Python面向对象植物大战僵尸
  • 700
分享到

Python面向对象植物大战僵尸

pythonpygame开发语言植物大战僵尸游戏开发面向对象 2023-08-31 12:08:36 700人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

先来一波效果图    来看看如何设计游戏架构 import sysimport pygameclass BaseSprite(pygame.sprite.Sprite): def __init__(self, name):

先来一波效果图

 

 来看看如何设计游戏架构

import sysimport pygameclass 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 -= 1class 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()

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

来源地址:https://blog.csdn.net/zhangzhaoyuxunlei/article/details/132345949

--结束END--

本文标题: Python面向对象植物大战僵尸

本文链接: https://lsjlt.com/news/385595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python面向对象植物大战僵尸
    先来一波效果图    来看看如何设计游戏架构 import sysimport pygameclass BaseSprite(pygame.sprite.Sprite): def __init__(self, name): ...
    99+
    2023-08-31
    python pygame 开发语言 植物大战僵尸 游戏开发 面向对象
  • Android植物大战僵尸小游戏
    Android植物大战僵尸小游戏全部内容如下: 相关下载:Android植物大战僵尸小游戏 具体代码如下所示: package com.example.liu.mygam...
    99+
    2022-06-06
    小游戏 僵尸 Android
  • 基于Python实现经典植物大战僵尸游戏
    目录游戏截图动态演示源码分享state/tool.pystate/constants.pystate/main.py主执行文件main.py游戏截图 动态演示 源码分享 st...
    99+
    2024-04-02
  • 教你用Python写一个植物大战僵尸小游戏
    目录一、前言二、引入模块三、完整代码四、主程序五、效果演示一、前言 上次写了一个俄罗斯方块,感觉好像大家都看懂了,这次就更新一个植物大战僵尸吧 二、引入模块 import pyg...
    99+
    2024-04-02
  • 用python实现植物大战僵尸(游戏截图+动态演示+源码分享)
    大家好,我是梦执,对梦执着。希望能和大家共同进步! 下面给大家带来python实现植物大战僵尸的的源码分享,只含有冒险模式。   截图+动态演示+源码分享 游戏截图动态演示源码分享 state/tool.pystate/c...
    99+
    2023-10-08
    python 游戏 pygame
  • Python学习 :面向对象 -- 三大
    面向对象的三大特性 一、封装 把数据、值、变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1、创建对象 2、通过对象执行类中的一个特殊方法(_init_方法) ...
    99+
    2023-01-30
    三大 面向对象 Python
  • python 面向对象、类、对象
    class 类 object 对象 object-oriented programming 面向对象,简称OOP attribute 属性 method 方法 inheritance 继承 python中通过类和对象来实现 ...
    99+
    2023-01-31
    面向对象 对象 python
  • python 面向对象
    面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序...
    99+
    2023-01-30
    面向对象 python
  • python面向对象
    python面向对象 目录: 1.类的定义和使用 2.类的封装 3.类的继承 4.多态   1.类的定义和使用 查、增加、修改、删除、初始化方法、实例化 __init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这...
    99+
    2023-01-30
    面向对象 python
  • Python|面向对象
    #一、类、对象定义及使用 #定义类语法:class 类名(父类):代码块注意:()可有可无 #class Student: #class Student(): #创建对象(实例)语法:对象名=类名() 注意:Java语言在实例化对...
    99+
    2023-01-30
    面向对象 Python
  • python - 面向对象
    #python面向对象 - 类定义   注意:特殊方法"__init__"前后分别有两个下划线!!!   __init__方法可以理解成定义属性的方法,编辑器中会默认将属性都绑定到self中,在使用时直接self.shuxing 即可哟;...
    99+
    2023-01-31
    面向对象 python
  • python面向对象的三大特性
    一、 封装 广义的封装 :类中的成员 狭义的封装 :私有成员 表象:__名字 实际:_类名__名字 要求:只能在类的内部使用,既不能在类的外部调用,也不能在子类中使用 对象的作用:存储一些值,以后方便自己使用 class F...
    99+
    2023-01-31
    三大 面向对象 特性
  • Python面向对象之面向对象基本概念
    面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果;函数不仅能执行,还能返回结果。 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实现; 根据开发需求,将某些功能独立的...
    99+
    2023-01-31
    面向对象 基本概念 Python
  • python 面向对象三大特征详解
    目录一、面向对象三大特征介绍1、封装(隐藏)2、继承3、多态二、继承1、语法格式2、类成员的继承和重写3、super()获得父类定义4、设计模式_工厂模式实现5、设计模式_单例模式实...
    99+
    2024-04-02
  • python面向对象(一)
    面向对象 1.初始面向对象     面向过程:         一切以事务的发展流程为中心.     面向对象:         一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象     打比方:   面向过程  ...
    99+
    2023-01-30
    面向对象 python
  • [Python3]Python面向对象
    一、面向对象的程序设计的由来 1.第一阶段:面向机器,1940年以前 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据。 简单来说,就是直接编写 0 和 1 的序列来代表程序语言。例如:使用 ...
    99+
    2023-01-31
    面向对象 Python
  • python面向对象,类
    1:类和对象    是面向对象中的俩个重要概念,类是对事物的抽象,比如人类,球类。对象是事物的实例,比如足球,篮球。球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球体出来。2:类的定义    类把需要的变量和函数组合成一起,这种...
    99+
    2023-01-31
    面向对象 python
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2024-04-02
  • Python面向对象三大特性是什么
    今天小编给大家分享一下Python面向对象三大特性是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问:说说Python面...
    99+
    2023-06-19
  • python面向对象三大特征是什么
    小编给大家分享一下python面向对象三大特征是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、面向对象三大特征介绍Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。1、封装(隐...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作