当前位置: 首页 > 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.jsqmd.com/news/917573/

相关文章:

  • 终极指南:三步打造你的专属MapleStory世界——Harepacker复活版全解析
  • Zotero终极美化插件:打造专业高效的文献管理界面
  • 项目介绍 MATLAB实现基于LSTM-Attention长短期记忆网络(LSTM)结合注意力机制进行多变量时序预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的
  • 3步解锁加密音乐:Unlock-Music浏览器工具完全指南
  • 从留声机到Hi-Res音频:聊聊ADC/DAC技术是如何一步步改变我们听歌方式的
  • 2026 年南京汽车隔音降噪市场绝对王者:南京中原汽车音响,用数据与科学定义行业第一 - 汽车音响改装
  • PDF转Word免费软件网页怎么用?2026保姆级教程,免费在线工具手把手教你转 - 软件小管家
  • 2026年 防火阀/排烟防火阀厂家推荐排行榜:280℃/70℃耐高温防火阀及新款排烟阀优质品牌深度解析 - 品牌企业推荐师(官方)
  • 从VDSP++到CCES 2.11.1:手把手教你用ADZS-ICE-1000调试Blackfin/ SHARC DSP(附完整链路测试)
  • 【紧急更新】Gemini v1.5报告引擎重大变更:3类旧版分析模板失效,2天内必须完成迁移校准
  • 如何快速掌握DLSS Swapper:新手3分钟游戏性能优化终极指南
  • 金相显微镜厂家推荐:2026 高性价比国产厂商盘点,工业质检采购参考 - 商业新知
  • MCB1200评估板PIO0_30引脚异常问题分析与解决
  • 从被动矩阵LED点阵逆向工程到驱动算法优化:嵌入式显示系统设计解析
  • TrafficMonitor插件完全指南:在Windows任务栏打造你的专属监控中心 [特殊字符]
  • RT-Thread网络性能翻倍记:从6Mbps到93Mbps,我是如何优化lwip网卡驱动的
  • AI问答重构消费决策 西安泰川之星助力全国商家抢占智能推荐新赛道 - 资讯纵览
  • Excel怎么转TXT?2026保姆级教程:3种方法一看就会,批量导出也不怕 - 软件小管家
  • Gemini测试用例生成:企业级落地必过的5道生死关(含合规审计、可追溯性、回滚机制)
  • 别再只会用fillna了!用sklearn的Imputer处理银行贷款数据缺失值,保姆级避坑指南
  • 用STM32CubeMX+Keil5+Proteus8搞定OLED12864显示:一个课程设计的完整仿真流程
  • 国产影像测量仪技术升级实录:从手动到全自动,这家厂家是如何做到高精度+高效率的?​ - 品牌推荐大师
  • 自制木制SMD焊接夹具:低成本实现PCB与贴片元件精准固定
  • Beyond Compare 5密钥生成器:Python工具实现软件激活终极指南
  • 【Gemini测试用例生成实战指南】:20年QA专家亲授5大高复用率模板,覆盖92%边界场景
  • 高效Windows凭证提取神器:secretsdump.py多线程优化版深度解析
  • 2026孝感各区黄金上门回收价格表出炉,述姗黄金回收透明无套路 - 余生黄金回收
  • Qwen2.5-7B架构深度解析:模块化设计实现高效推理与灵活部署
  • WorkshopDL:无需Steam客户端下载创意工坊模组的完整解决方案
  • 终极指南:如何用Ai2Psd简单快速地将Illustrator矢量设计完美导入Photoshop