大家好,我去世了,我是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要实现上述两个蚂蚁,您需要首先设置类属性并实现以下三个函数:
在开发前的回答和测试:
答案很困难。主要难度是该函数仅执行一次,并且始终调用该函数。因此,我们必须重新启动该函数。它更容易想到我们可以使用高级别函数,以便我们可以内部修改它确定何时恢复。
在完成所有功能的开发后,玩游戏,效果就是这样:
这次,内容非常丰富,并且是温和的。它对新移民非常友好,非常适合入门。
当您看到自己的开发功能可以在页面上运行并可以自己播放时,我相信这是非常满意的。建议每个人都亲自尝试。
好吧,我将谈论这个项目。谢谢您的阅读。