当前位置: 首页 > 网络应用技术

我去世后,伯克利太强壮了,带您写了一杯植物与僵尸

时间:2023-03-09 10:53:34 网络应用技术

  大家好,我去世了,我是Liang Tang。这篇文章在公共帐户中开始:

  今天,我们继续来到肝伯克利的CS61A。这次,我们在本课程中完成了第二个主要任务。

  这个项目非常有趣,让我们制作一个类似于植物与僵尸的小游戏。只是把蚂蚁改为蜜蜂,蜜蜂被海浪击中。我们想建立各种蚂蚁的功能来抵抗蜜蜂的攻击。

  完成后的操作效果已完成:

  课程

  项目原始文档

  github

  这次项目并不困难。主要的解释是面向对象的Python部分。它教会我们学习设计和继承。

  殖民地:游戏发生的场景由多个隧道组成。每个通道由一个网格组成(位置)

  地点:网格,每个网格都连接到另一个网格组成,玩家可以在网格上放置一个蚂蚁,但每个网格都可以是

  蜂巢:蜂巢,蜜蜂的家乡,蜜蜂从蜂巢中出来,来到殖民地

  蚂蚁:蚂蚁,玩家用来控制士兵在游戏中反对蜜蜂的玩家。每个回合可以采取特定的动作,并生产蚂蚁食用某些食物。这两个最基本的蚂蚁是(收获蚂蚁)。它可以收集1种食物,并每发(扔一个蚂蚁)。

  蜜蜂:蜜蜂,我们在游戏中需要处理的敌人。在每回合,如果没有蚂蚁的道路,蜜蜂将走得更远。结尾

  女王蚂蚁:蚂蚁皇后,每场比赛中只有一个女王。女王还具有进攻能力。此外,它可以鼓励士气并增强其他蚂蚁的攻击力量。如果蜜蜂杀死了女王,那么同一游戏结束了

  有两种运行游戏的方法,一种是基于文本命令行的形式,用于开发测试:

  我们还可以通过游戏界面来运行游戏以进行最终演示:

  -D控制难度测试/易于/中/硬/疯狂

  -w地图中是否有水

  - 开始食物数量

  在第一阶段,基本的蚂蚁(和)。

  在舞台结束时,您可以运行最基本的游戏版本

  阅读代码以回答几个问题:

  我们可以以命令行交互的形式回答这些问题(原始问题是英语)。下载项目代码后,输入命令:

  问题和选项将以命令行文本的形式显示,以通过输入选项的形式回答问题。

  老师为每个问题设置了一个测试示例,但是我们需要首先使用该问题来使用这些样本。请勿测试样本和测试将无法验证身份。即使我们不是伯克利的学生,我们也可以享受它,这是非常非常友好的。

  首先添加食品费用和开发。

  当前生产蚂蚁不需要任何消耗,因此游戏完全困难。

  HarvestTant21 Throwrant31现在需要花费蚂蚁,因此我们需要收集食物。开发课程可以在每一轮比赛中添加它。

  在开始开发之前,请回答测试问题,测试可以通过测试解锁测试示例:

  完成实施后,测试:

  答案功能将在每回合中调用,并在添加呼叫时添加它

  完美的构造函数使其能够跟踪入口()。

  目前,一个人只会记录出口(),我们希望记录其入口。每个人只有一个入口。入口后,您可以知道他们面前的蜜蜂。

  但是,简单地将构造函数传递到构造函数上存在问题。因为我们需要在当前创建之前的这两个属性,这将导致循环依赖性。要解决此问题,我们使用以下方法:

  暗示:

  在功能中,当前对象将受到绑定

  如果您感到困惑,可以先画两个。在GUI中,一个入口是其右边

  在开始编码之前,请先回答问题,并确保您已经理解了

  完成后,使用以下命令进行测试:

  答案在外界通过。当它不为空时,可以将其设置为电流。

  让我们实现下面的类以攻击蜜蜂。

  首先,它必须知道它需要攻击的蜜蜂。代码方法的第一个版本只会在同一网格中攻击蜜蜂。)。

  方法随机返回最接近它的网格中的蜜蜂之一:

  暗示:

  在开始开发之前回答问题,以确保您已经完全了解

  开发完成后,测试:

  通过测试后,您可以模拟效果:

  效果如下:

  答案一直在整个周期中传播,直到有一只蜜蜂,并且可以返回一个随机的蜜蜂。

  现在,您已经开发了两种最基本的ANT类型,可以玩最基本的游戏。

  在此阶段,您将使用不同的技能开发更多的ANT类型。完成子类的开发后,您需要更改在GUI中使用它的属性。完成新的蚂蚁后可以测试游戏。

  在完成此阶段的开发后,您可以尝试使用该命令:当前的ANT类型匹配一波蜜蜂。您也可以使用或尝试更高的难度。如果您觉得很难获胜,也许您需要需要开发更多类型的蚂蚁。

  这是一个很好的进攻单位,但是如果价格更便宜,则会更好。两个子类成本较低,但在投掷距离内会有限制:

  以上两只蜜蜂都不能只用4次攻击蜜蜂。不可能仅赢得一只攻击蜜蜂。

  实现Shortthroter21 longThrower21的更好方法是让它们继承类。因为他们选择了相同的攻击目标的逻辑,但最大和最小距离的限制除外。

  因此,您需要修改使用和属性的方法,并且仅返回该范围内的蜜蜂

  原始范围没有限制,因此您需要向其添加相应的属性,以免影响它,然后将适当的范围和食物支出设置为子类和设置。

  暗示

  返回以表示无限的浮点,该点比任何其他数字都要大

  不要忘记改变和平的属性

  在开始开发之前,请完成测试:

  完成后,测试:

  答案意味着我们修改父类而不是子类,以便父类具有无限范围,以确保父类的功能不变,并且我们还可以支持子范围的要求。

  为子类设置适当的范围,以便无需重复实现该方法。它只需要修改配置即可实现功能

  实施类,类具有一种特殊的方法:将装甲缩小到0或更低时:它将攻击同一网格中的所有蜜蜂并减去其装甲以减少它(默认3)。

  fileant51提示:

  攻击蜜蜂可能导致蜜蜂被移出场地。如果它一遍又一遍地特征列表,则删除列表中的内容可能会导致错误。

  因此,建议如果您需要穿越序列(例如副本/删除所选元素等),则最好先复制序列。

  当您开发它时,将其设置为

  在测试之前,首先回答问题以确保理解正确

  开发后,测试:

  答案装甲降低到0以下,以攻击同一网格中的所有蜜蜂。因为攻击蜜蜂可能会导致蜜蜂死亡并改变。因此,我们需要先复制序列,然后在副本中攻击蜜蜂。

  您可以玩一两个现有蚂蚁的游戏,损坏很高。灵活获胜并不难。

  意识到,它可以选择吞咽与原样的网格。吞咽蜜蜂后,您需要在3绳之后再次消化它。

  Hungryant41将类属性添加到类中,该属性指示吞咽后消化所需的回合数。。

  实现该功能以检查是否正在消化。如果减少了,否则将放松相同的蜜蜂网格(将蜜蜂的盔甲设置为0,重置)

  编码之前回答问题,以确保正确理解

  实施后,测试:

  回答要注意类属性和实例属性之间的区别

  开发忍者蚂蚁(),它将攻击所有通过的蜜蜂,不会受伤。

  Ninjaant51不会阻碍蜜蜂的前进。为了实现这一目标,您需要在类中添加一个新的类属性,以指示它是否会阻碍蜜蜂的前进并将其设置为中。在这种情况下,子类的子类默认为默认值,并将其设置为`错误的

  其次,当没有蚂蚁的道路或道路停下的蚂蚁时,修改回报的方法。在这种情况下,蜜蜂将飞来飞去。

  最后,我们想攻击所有飞行蜜蜂。要在功能中进行此功能,以便它可以在同一网格中攻击所有蜜蜂。好像,我们需要穿越可能会更改的顺序,因此我们需要先复制它

  开发前的答案:

  开发后测试:

  尝试只使用和赢。

  回答

  我们现在有很多进攻手段,我们需要开发一些防御机制。

  在此阶段,我们将开发一些具有防御功能的蚂蚁,例如增加装甲或保护同伴。

  我们将为蚂蚁王国开发保护。它不会在每回合中做任何只能阻止蜜蜂的事情。它具有高盔甲,类似于植物战争的僵尸中的坚果。

  walland44与以前的蚂蚁不同。我们不提供类的初始代码。

  您需要从头开始实现它,设置类中的属性以设置它,以便可以正常显示图像。

  开发前的答案:

  开发后测试:

  答案是继承自我,设置相应的参数,然后调用父类构造函数以设置装甲(请参阅其他类)。

  我们的蚂蚁太脆弱了,因此我们希望为蚂蚁开发保护。

  Bodyguardant42与普通蚂蚁不同,因为它是一个容器。它可以容纳另一个蚂蚁并保护它,它们在同一蚂蚁中。当蜜蜂攻击时,只会攻击容器。

  容器中的蚂蚁也可以在每次执行。当容器被破坏时,受保护的蚂蚁仍然保留。

  每个都有一个实例属性,用于存储受保护的蚂蚁。在开始时,由于没有保护蚂蚁,因此要实现一个函数,它将被传输到派生的要受保护的一个函数,并需要将其分配给属性。此外,执行受保护的实现方法。

  此外,您需要进行以下更改,以确保容器与所容纳的蚂蚁一起占据相同的网格。每个网格中最多有两个蚂蚁,一个必须是一个容器。

  回答问题之前的代码:

  开发后测试:

  回答

  它提供了良好的防御能力,但据说最好的防守是令人反感的。

  这是一个可以攻击的容器。除了提供保护外,它还可以用与每轮相同的网格造成1损伤。

  Tankant62您只能修改类中的代码。如果您发现仍然需要在其他地方修改代码,则意味着您以前的实现可能有些问题。请在修改代码之前找到该功能以完成代码。

  回答:

  开发后测试:

  回答

  在最后阶段,您需要开发一种新的网格类型和可以使用它的蚂蚁。

  这些蚂蚁中最重要的是:女王

  让我们在蚂蚁王国中添加一个游泳池。现在我们只有两个网格:和。为了使游戏更有趣,让我们开发新类型。

  只有蚂蚁才能在游泳池中生存。为了确定昆虫是否具有在水中生存的能力,它们需要在类中添加类属性并默认设置。因为蜜蜂可以飞,蜜蜂是。

  对于课堂开发方法。首先调用添加昆虫的方法。此步骤不需要考虑昆虫的生存能力。如果昆虫不防水,那么称为昆虫的方法将昆虫装甲降低到0。不要复制糊状代码并使用开发的代码。

  开发前的答案:

  开发后测试:

  开发它时,可以使用参数打开池。

  答案是在课堂上,我们可以在功能中调用该函数以完成该功能,以便可以尽可能多地重复使用代码。

  不要忘记相应的子类设置的属性

  现在,没有蚂蚁可以在水中生存,因此我们要养成蚂蚁。它是一个具有较大支出的子类,但可以在水中生存,但是与基类不同,蚂蚁不会丢失装甲(蜜蜂在水中(蜜蜂(蜜蜂)(蜜蜂(Bee(Bee(Beecan),Beecan')t发射)。

  Scubathrower61我们没有为您提供此类的初始代码,我们需要从头开始完成开发。设置其类属性以允许GUI工作。

  开发前的答案:

  开发后测试:

  回答

  最后,女王女王。女王是一个子类,它可以鼓励士气。

  女王每轮都可以将其背后的攻击力加倍。请注意,蚂蚁的攻击力只能加倍

  Queenant71,责任越大,责任越大。女王需要受三个特殊规则的限制:

  一些技巧:

  开发前的答案:

  开发后测试:

  答案属性是类属性。修改后,所有实例都会生效。因此,当第一个诞生时,将其设置为0,以便可以实现差异。

  在该功能中,我们可以根据替代品采取不同的动作。

  将真正的女王的末尾逻辑添加到真正的女王的末尾。

  添加无法在中间移出女王的逻辑,也就是说,必须判断要删除的类型必须是,并且属性是,如果确定,则直接是直接的。

  附带的问题,最后两只蚂蚁,它们不会造成损害,但会产生特殊效果,这将为铸造的蜜蜂增加损坏。

  而且,这两个蚂蚁生成的减益是不同的,当持续时间结束时,蜜蜂的恢复。持续时间是根据呼叫数量计算的。

  我们将意识到以下两只蚂蚁,它们都是子类:

  Slowthroter41 stunthroter61要实现上述两个蚂蚁,您需要首先设置类属性并实现以下三个函数:

  在开发前的回答和测试:

  答案很困难。主要难度是该函数仅执行一次,并且始终调用该函数。因此,我们必须重新启动该函数。它更容易想到我们可以使用高级别函数,以便我们可以内部修改它确定何时恢复。

  在完成所有功能的开发后,玩游戏,效果就是这样:

  这次,内容非常丰富,并且是温和的。它对新移民非常友好,非常适合入门。

  当您看到自己的开发功能可以在页面上运行并可以自己播放时,我相信这是非常满意的。建议每个人都亲自尝试。

  好吧,我将谈论这个项目。谢谢您的阅读。