Python小游戏13——植物大战僵尸

  • 代码

 

import random

import time

 

# 植物类

class Plant:

    def __init__(self, name, health):

        self.name = name

        self.health = health

 

    def is_alive(self):

        return self.health > 0

 

# 僵尸类

class Zombie:

    def __init__(self, name, health):

        self.name = name

        self.health = health

 

    def is_alive(self):

        return self.health > 0

 

# 游戏类

class Game:

    def __init__(self):

        self.plants = []

        self.zombies = []

        self.turn = 0

 

    def add_plant(self, plant):

        self.plants.append(plant)

 

    def add_zombie(self, zombie):

        self.zombies.append(zombie)

 

    def start(self):

        while self.plants and self.zombies:

            print(f"\nTurn {self.turn}:")

            self.plant_turn()

            self.zombie_turn()

            self.turn += 1

 

    def plant_turn(self):

        for plant in self.plants:

            if random.random() < 0.5: # 50% chance to attack

                target = random.choice(self.zombies)

                target.health -= 1

                print(f"{plant.name} attacks {target.name} for 1 damage.")

 

    def zombie_turn(self):

        for zombie in self.zombies:

            if random.random() < 0.5: # 50% chance to attack

                target = random.choice(self.plants)

                target.health -= 1

                print(f"{zombie.name} attacks {target.name} for 1 damage.")

 

    def end(self):

        print("Game Over")

        if self.plants:

            print("Plants win!")

        else:

            print("Zombies win!")

 

# 创建游戏实例

game = Game()

 

# 添加植物和僵尸

game.add_plant(Plant("Sunflower", 3))

game.add_plant(Plant("Peashooter", 2))

game.add_zombie(Zombie("Basic Zombie", 3))

game.add_zombie(Zombie("Flag Zombie", 4))

 

# 开始游戏

game.start()

 

# 游戏结束

game.end()

4cf2f3b439324351a196bf7edc561465.png

  • 知识点总结
  • 1. 类和对象:
  • 使用类( class )来定义对象的蓝图。
  • 创建对象(实例化)来表示游戏中的实体,如植物和僵尸。
  • 2. 属性:
  • 通过在类的构造函数( __init__ )中定义属性来存储每个对象的状态,例如植物的名称和健康状态。
  • 3. 方法:
  • 在类中定义方法来表示对象的行为,例如检查植物或僵尸是否存活。
  • 4. 列表:
  • 使用列表( list )来存储游戏中的植物和僵尸对象。
  • 5. 循环:
  • 使用 while 循环来控制游戏的回合,直到游戏结束条件满足。
  • 6. 条件语句:
  • 使用 if 语句来决定游戏逻辑,例如判断植物或僵尸是否存活。
  • 7. 随机性:
  • 使用 random 模块来增加游戏的不确定性,例如决定植物和僵尸是否在每个回合攻击。
  • 8. 函数:
  • 定义函数来封装游戏逻辑,例如 plant_turn 和 zombie_turn 来处理每个回合的行动。
  • 9. 输入/输出:
  • 使用 print 函数来输出游戏状态和信息,使用 input 函数(虽然在这个示例中没有使用)来获取用户输入。
  • 10. 模块化:
  • 将游戏逻辑封装在 Game 类中,使得代码更加组织化和易于维护。
  • 11. 控制流:
  • 使用控制流语句(如 while 循环和 if 条件语句)来控制游戏的流程。
  • 12. 游戏结束条件:
  • 定义游戏结束的条件,例如当所有植物或所有僵尸被消灭时。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/901086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tornado简单使用

Tornado简单使用 1 介绍 Tornado 是一个基于Python的Web服务框架和 异步网络库&#xff0c;它最初由 FriendFeed 开发&#xff0c;后来被 Facebook 收购并开源&#xff0c;通过利用非阻塞网络 I/O, Tornado 可以承载成千上万的活动连接&#xff0c;完美的实现了 长连接、WebS…

关于 Linux 内核“合规要求”与俄罗斯制裁的一些澄清

原文&#xff1a;Michael Larabel - 2024.10.24 当 一些俄罗斯的 Linux 开发者被从内核的 MAINTAINERS 文件中移除 时&#xff0c;原因被描述为“合规要求”&#xff0c;但并未明确这些要求具体涉及什么内容。随后&#xff0c;Linus Torvalds 对此发表了评论&#xff0c;明确指…

SIP 业务举例之 三方通话:邀请第三方加入的信令流程

目录 1. 3-Way Conference - Third Party Is Added 简介 2. RFC5359 的 3-Way Conference - Third Party Is Added 信令流程 3. 3-Way Conference - Third Party Is Added 总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信)…

[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist

[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist 环境 python 3.10 torch 2.4.0cu118 torchvision 0.19.0cu118 vllm 0.6.1.post2cu118问题详情 if torch._C._d…

Spring Boot框架中小企业设备监控系统开发

3系统分析 3.1可行性分析 通过对本中小企业设备管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本中小企业设备管理系统采用Spring Boot框架&#xff0…

ubuntu20.04上使用 Verdaccio 搭建 npm 私有仓库

安装nvm 首先安装必要的工具&#xff1a; apt update apt install curl下载并执行nvm安装脚本&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash添加环境变量&#xff08;如果安装脚本没有自动添加&#xff09;。编辑 ~/.bash…

java项目之基于web的智慧社区设计与实现(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于web的智慧社区设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于web的智…

使用TimeShift备份和恢复Ubuntu Linux

您是否曾经想过如何备份和恢复您的Ubuntu或Debian系统&#xff1f;TimeShift是一个强大的备份和还原工具。TimeShift允许您创建系统快照&#xff0c;提供了一种在出现意外问题或系统故障时恢复到先前状态的简便方式。您可以使用RSYNC或BTRFS创建快照。 有了这个介绍&#xff0…

萤石设备视频接入平台EasyCVR私有化视频平台变电站如何实现远程集中监控?

一、方案背景 随着城市经济的发展和电力系统的改造&#xff0c;变电站的数量和规模逐渐增加&#xff0c;对变电站的安全管理和监控需求也越来越高。视频监控系统作为重要的安全管理手段&#xff0c;在变电站中起到了关键的作用。 目前青犀视频研发的萤石设备视频接入平台EasyC…

【NOIP普及组】 选数

【NOIP普及组】 选数 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 已知 n 个整数 x1,x2,…,xn&#xff0c;以及一个整数 k&#xff08;k&#xff1c;n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例…

快速排序(hoare版本)

文章目录 文章目录 前言 二、使用步骤 1.实现基准值 2.递归实现排序 3.三数取中 三.注意事项 总结 前言 我们之前学习的多种排序&#xff0c;它们都有着不同的效率&#xff0c;可以适用与不同的场景&#xff0c;接下来要说的一种排序它叫做快速排序&#xff0c;从它的名字就可…

从产品经理到AI产品经理,这波升职加薪我把握住了

2024年&#xff0c;还有什么新风口&#xff1f; AI、元宇宙、NFT… 很多人不知道&#xff0c;其实不管是元宇宙还是NFT&#xff0c;它们本质上就是人工智能领域。 AI自身应用领域非常广泛&#xff0c;大批高薪岗位随之涌了出来&#xff0c;包括AI产品经理。 AI产品经历具体工…

微软运用欺骗性策略大规模打击网络钓鱼活动

微软正在利用欺骗性策略来打击网络钓鱼行为者&#xff0c;方法是通过访问 Azure 生成外形逼真的蜜罐租户&#xff0c;引诱网络犯罪分子进入以收集有关他们的情报。 利用收集到的数据&#xff0c;微软可以绘制恶意基础设施地图&#xff0c;深入了解复杂的网络钓鱼操作&#xff…

数字化工厂:制造业转型的新引擎

在当前技术飞速发展的时代,数字化正以前所未有的速度深入到各个行业,推动着产业转型升级。制造业作为国民经济的支柱,更是数字化转型的重点领域。随着5G、大数据、云计算、人工智能等新一代信息技术的广泛应用,以及国家"工业4.0"、"中国制造2025"等政策的持…

05-服务保护和分布式事务

原文为黑马程序员的飞书云文档&#xff0c;链接在这&#xff1a;原文链接 在微服务的远程调用中&#xff0c;还存在几个问题需要解决&#xff1a; 首先是业务健壮性问题&#xff1a; 在之前的查询购物车列表的业务中&#xff0c;购物车服务需要查询最新的商品信息&#xff0…

语音语言模型最新综述! 关于GPT-4o背后技术的尝试

近期,大型语言模型(LLMs)在生成文本和执行各种自然语言处理任务方面展现出了卓越的能力,成为了强大的AI驱动语言理解和生成的基础模型。然而&#xff0c;仅依赖于基于文本模态的模型存在显著局限性。这促使了基于语音的生成模型的发展,使其能够更自然、直观地与人类互动。 为了…

Prism 四事件聚合器

#1024程序员节&#xff5c;征文# 不废话&#xff0c;直接上代码一个简单的示例。 1、事件聚合 创建一个文件夹EventBLL&#xff0c;添加EventDemo.cs&#xff0c;代码如下。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using …

SpringMVC6-SpringMVC的视图

目录 ThymeleafView 转发视图 重定向视图 视图控制器view-controller SpringMVC中的视图是View接口&#xff0c;视图的作用&#xff1a;渲染数据&#xff0c;将模型Model中的数据展示给用户 SpringMVC视图的种类很多&#xff0c;默认有转发视图InternalResourceView 和重定…

卷积神经网络评价指标

1.评价指标的作用 1. 性能评估&#xff1a;评价指标提供了一种量化的方式来衡量CNN模型的性能。通过这些指标&#xff0c;我们可以了解模型在特定任务上的表现&#xff0c;比如图像分类、目标检测或图像分割等。 2. 模型比较&#xff1a;不同的模型架构或训练策略可能会产生不…

UWA Gears:Frame Capture模式 - 着色器查看器

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台&#xff0c;提供了实时监测和截帧分析功能&#xff0c;帮助您精准定位性能热点&#xff0c;提升应用的整体表现。 在上周的文章中&#xff0c;我们详细介绍了网格查看器的功能&#xff0c;介绍如何通过网格数据优化…