当前位置: 首页 > news >正文

植物大战僵尸python代码

import pygame
import random

--- 常量定义 ---

SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
WHITE = (255, 255, 255)
GREEN = (0, 255, 0) # 植物颜色
RED = (255, 0, 0) # 僵尸颜色
BLACK = (0, 0, 0)

--- 类定义 ---

class Plant:
def init(self, x, y):
self.rect = pygame.Rect(x, y, 50, 50)

def draw(self, screen):
pygame.draw.rect(screen, GREEN, self.rect)
# 在植物上画个简单的叶子标记
pygame.draw.circle(screen, BLACK, (self.rect.x+15, self.rect.y+15), 5)

class Zombie:
def init(self):
self.rect = pygame.Rect(SCREEN_WIDTH, random.randint(50, 550), 40, 60)
self.speed = random.randint(1, 3)

def update(self):
self.rect.x -= self.speed

def draw(self, screen):
pygame.draw.rect(screen, RED, self.rect)
# 画个简单的僵尸眼睛
pygame.draw.rect(screen, BLACK, (self.rect.x+30, self.rect.y+10, 5, 5))

--- 主程序 ---

def main():
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("植物大战僵尸 - 入门版")
clock = pygame.time.Clock()

plants = []
zombies = []
spawn_timer = 0

running = True
while running:
screen.fill(WHITE)

1. 事件处理

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 点击鼠标左键种植物
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
plants.append(Plant(event.pos[0], event.pos[1]))

2. 游戏逻辑更新

spawn_timer += 1
if spawn_timer > 60: # 每60帧生成一个僵尸
zombies.append(Zombie())
spawn_timer = 0

for z in zombies:
z.update()
# 简单的移除屏幕外僵尸逻辑
if z.rect.right < 0:
zombies.remove(z)

3. 绘制画面

for p in plants:
p.draw(screen)
for z in zombies:
z.draw(screen)

【特殊标志】在此处显示你的学号后四位

假设学号后四位是 1234,你可以修改这里的数字

font = pygame.font.Font(None, 36) # 使用默认字体
# 为了防止没有字体文件报错,这里简单用文字表示,实际运行会有显示
text = font.render("ID: 1234", True, (0, 0, 255))
screen.blit(text, (10, 10))

pygame.display.flip()
clock.tick(60)

pygame.quit()

if name == "main":
main()

http://www.gsyq.cn/news/1428889.html

相关文章:

  • Zotero终极美化插件:打造专业高效的文献管理界面
  • 项目介绍 MATLAB实现基于LSTM-Attention长短期记忆网络(LSTM)结合注意力机制进行多变量时序预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的
  • 3步解锁加密音乐:Unlock-Music浏览器工具完全指南
  • 如何快速掌握DLSS Swapper:新手3分钟游戏性能优化终极指南
  • 从被动矩阵LED点阵逆向工程到驱动算法优化:嵌入式显示系统设计解析
  • 自制木制SMD焊接夹具:低成本实现PCB与贴片元件精准固定
  • 国产影像测量仪技术升级实录:从手动到全自动,这家厂家是如何做到高精度+高效率的?​ - 品牌推荐大师
  • 2026孝感各区黄金上门回收价格表出炉,述姗黄金回收透明无套路 - 余生黄金回收
  • 2026年企业数字营销转型难题解析:郑州GEO优化公司多维对比梳理 - 兔兔不是荼荼
  • 三步快速掌握小说下载器:200+网站免费离线阅读终极指南
  • 从Brio玩具火车修复看镍氢电池充电与触点清洁技术实践
  • 告别岁月的痕迹!亨得利表壳表带划痕抛光翻新全攻略:2026年全国十大官方网点深度测评与修复效果实录(附真实价格与避坑技巧) - 亨得利腕表维修中心
  • 基于Power Virtual Agents构建智能内容选题引擎:低代码对话机器人的实战应用
  • 手把手教你用Artix-7 FPGA实现CameraLink相机采集(含1280x1024@60Hz工程源码)
  • PS4存档管理终极指南:Apollo Save Tool让你的游戏进度永不丢失
  • 新手做有声书指南:2026 语音克隆工具测评与高效制作方法 - GrowthUME
  • 不用出门就能保养手表?实测亨得利同城上门预约保养服务:工程师带箱上门、全程录像、原厂机油,9城官方网点+400电话全公开 - 亨得利腕表维修中心
  • Ubuntu开机卡在emergency mode?别慌,手把手教你用fsck修复磁盘(附ROS系统实战案例)
  • 告别自动更新烦恼:在Ubuntu 20.04上彻底禁用apt定时任务的保姆级教程
  • 5个技巧掌握Sketch批量重命名:Rename It插件终极指南
  • 2026制衣车间降温设备厂家推荐与技术解析​ - 合昌环境科技
  • 家庭洗衣防串色攻略:3好物+7习惯告别串色发灰烦恼 - 行业洞察分析师
  • 2026 Excel 转 PDF 怎么做?免费工具+多种方法,保姆级教程手把手教你 - 软件小管家
  • 亲测有效!AI率92%暴降至5%!实测10款降AIGC工具!薅羊毛技巧! - 降AI小能手
  • 告别仿真黑盒:手把手教你用XA+Verdi调试混合信号电路(附CFG文件详解)
  • 2026年卖黄金前必看,东莞鑫盛寄卖行教你避坑 - 资讯纵览
  • 魔兽世界宏编辑革命:GSE高级宏编译器全面解析
  • GaussDB分区表数据清理实战:用TRUNCATE PARTITION比DELETE快10倍(附详细语法避坑)
  • Win10下Vivado 2018.3连不上ZYQN-XC7Z020?别慌,这份保姆级驱动修复指南帮你搞定
  • 2026母婴囤货避坑!新手爸妈买母婴用品用哪个平台更优惠?认准美团 - 资讯焦点