元豪 发表于 2023-1-22 19:34:05

『用Python做植物大战僵尸』第1期【有鱼币】

本帖最后由 元豪 于 2023-1-25 14:58 编辑




【前言】

Hello,大家好!我是你们的元豪{:10_256:}

现在是『用Python做植物大战僵尸』的第1期!{:10_298:}

素材在这里 ->

(收点鱼币~{:10_279:} )

接下来,我们来说说这次的目标{:10_305:}


本页已结束,请切换下一页^-^







【目标】

本次目标:
1. 写出所有的方法的模版
2. 初始化
3. 创建窗口并放上背景图


本页已结束,请切换下一页^-^







【实现】

先导入需要的模块

import pygame
import sys


实现第1个目标:写出所有的方法的模版

这个应该很容易实现{:10_242:}

你想想,植物大战僵尸有什么?

有植物,对不对~

所以我们写一个植物的基类

class zhiwu:
    '''植物基类'''

    def __init__(self):
      pass


那植物有什么方法?

对嘛~植物都需要种植对吧~

class zhiwu:
    '''植物基类'''

    def __init__(self):
      pass
   
    # 种植的方法
    def zhongzhi(self):
      pass


暂时写到这里,其他的以后完善{:10_248:}

然后呢?

植物大战僵尸还有什么?

僵尸~对~

我们再写一个僵尸的基类

class jiangshi:
    '''僵尸基类'''

    def __init__(self):
      pass


僵尸有什么方法?移动

添加移动方法

class jiangshi:
    '''僵尸基类'''

    def __init__(self):
      pass

    # 移动方法
    def move(self):
      pass


就是这么简单~{:10_323:}

那运行函数的主类呢?

加上~

class Main:
    '''主类'''

    def __init__(self):
      pass

    # 开始
    def start(self):
      pass

    # 结束
    def end(self):
      pass


至此,第1个目标完成了{:10_298:}

实现第2个目标:初始化并创建窗口

初始化就更简单了

设置长宽

WIDTH, HEIGHT = 1000, 600

pygame初始化

class Main:
    '''主类'''

    def __init__(self):
      # 初始化
      pygame.init()
      # 设置长宽
      self.window = pygame.display.set_mode((WIDTH, HEIGHT))
      # 设置标题
      pygame.display.set_caption('植物大战僵尸Python版 - 元豪')

    # 开始
    def start(self):
      pass

    # 结束
    def end(self):
      pass


至此,第2个目标完成了{:10_298:}

实现第3个目标:放上背景图

这个目标,我们定义一个方法,就叫 “showStsrt” {:10_327:}

1. 加载图片
2. 放置图片

# 展示开始界面
    def showStart(self):
      self.img = pygame.image.load('imgs/startBg.jpg')
      self.window.blit(self.img, (0, 0))


问:那我们什么时候调用?

答:游戏主循环

如果大家运行之前的代码,就会发现——游戏窗口只是闪了一下就消失了,所以,我们需要一个循环

在循环中展示开始界面

class Main:
    '''主类'''

    def __init__(self):
      # 初始化
      pygame.init()
      # 设置长宽
      self.window = pygame.display.set_mode((WIDTH, HEIGHT))
      # 设置标题
      pygame.display.set_caption('植物大战僵尸Python版 - 元豪')

    # 开始
    def start(self):
      # 展示开始界面
      self.showStart()

      # 游戏主循环
      while True:
            # 设置循环次数
            pygame.time.Clock().tick(60)

            # 获取事件
            for event in pygame.event.get():
                # 退出
                if event.type == pygame.QUIT:
                  self.end()

                # 获取键盘按下事件
                if event.type == pygame.KEYDOWN:
                  # 按下Esc键
                  if event.key == pygame.K_ESCAPE:
                        self.end()

            # 刷新界面
            pygame.display.update()

    # 展示开始界面
    def showStart(self):
      self.img = pygame.image.load('imgs/startBg.jpg')
      self.window.blit(self.img, (0, 0))

    # 结束
    def end(self):
      print('游戏结束')
      pygame.quit()
      sys.exit()

其他代码我就不细说了{:10_264:}

最后,运行

if __name__ == '__main__':
    Main().start()


至此,我们今天的所有目标全部完成~{:10_298:}

代码 + 素材 ->

如果有兴趣,记得评分 + 订阅哦~

订阅传送门 -> 『用Python做植物大战僵尸』

https://xxx.ilovefishc.com/forum/202301/21/133129oaow9wvuss2oht9p.gif


元豪 发表于 2023-1-22 19:48:14

@Twilight6 @不二如是 @Mike_python小 @zhangjinxuan @python爱好者.

更新了~~

元豪 发表于 2023-1-22 19:48:54

@小伤口 @sfqxx @高山

元豪 发表于 2023-1-22 19:49:24

更新了更新了!!{:10_298:}

zhangjinxuan 发表于 2023-1-22 19:49:43

背景图,来看看{:10_256:}

sfqxx 发表于 2023-1-22 20:40:11

元豪 发表于 2023-1-22 19:48
@小伤口 @sfqxx @高山

来嘞

liuhongrun2022 发表于 2023-1-22 21:05:12

支持!!

kerln888 发表于 2023-1-23 09:05:04

支持!!

三体—夜航星 发表于 2023-1-23 09:44:55

谢谢楼主分享

鸡蛋爱好者 发表于 2023-1-23 10:01:31

{:10_275:}

一位朋友 发表于 2023-1-23 12:25:03

{:10_275:}

追梦少年啊 发表于 2023-1-23 12:50:07

支持

火鸡科学家 发表于 2023-1-23 14:40:41

支持

小伤口 发表于 2023-1-23 15:44:58

厉害厉害呀

[][] 发表于 2023-1-28 10:43:09

{:10_257:}

1583367509 发表于 2023-1-29 12:40:24

6666666666666

wwb135655 发表于 2023-3-7 11:06:44

我去 nb啊

a3727 发表于 2023-3-13 17:57:07

来吧

元豪 发表于 2023-5-9 19:47:33

本帖最后由 元豪 于 2023-5-9 20:11 编辑

千树清风 发表于 2023-5-10 03:38:46

支持
页: [1] 2
查看完整版本: 『用Python做植物大战僵尸』第1期【有鱼币】