codecombat极客战记森林41-60通关代码

codecombat极客战记森林41-60通关代码

所有代码均使用python编写。

41.以静制动

在这里插入图片描述

# 你可以将一个if语句放到另一个if语句当中。
# 你必须注意这些if语句是如何互相影响的。
# 请确保代码缩进正确!
# 从外层if/else结构开始会有帮助
# 使用注释为内层if/else占位预留空间:
while True:
    enemy= hero.findNearestEnemy()
        # 如果有敌人出现,那么就...
    if enemy:
            # 使用distanceTo创建一个距离变量
        distance= hero.distanceTo(enemy)
            # 如果敌人与你的距离小于5米,那么就攻击它
        if distance < 5:
                hero.attack(enemy)
            # 否则(这名敌人还离得很远),就使用shield
        else:
            ready= hero.shield()
        # 否则(没有敌人)...
    else:
        hero.moveXY(40, 34)

42.AGRIPPA守卫战

在这里插入图片描述

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # 用 distanceTo 获取与敌人的距离。
        distance = hero.distanceTo(enemy)
        # 如果距离小于5米...
        if distance <5:
            # ...如果
            ready = hero.isReady("cleave")
            if ready:
               hero.cleave(enemy) 
            #“cleave”技能准备好了,就用“cleave”干掉他们!
            else:
            # ...否则,仅仅进行普通攻击。
                hero.attack(enemy)

43.AGRIPPA守卫战A在这里插入图片描述

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # 用 distanceTo 获取与敌人的距离。
        distance = hero.distanceTo(enemy)
        # 如果距离小于5米...
        if distance <5:
            ready = hero.isReady("cleave")
            # ...如果 “cleave”技能准备好了,就用“cleave”干掉他们!
            if ready:
                hero.cleave(enemy)
            # ...否则,仅仅进行普通攻击。
            else:
                hero.attack(enemy)

44.

在这里插入图片描述

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # 用 distanceTo 获取与敌人的距离。
        distance = hero.distanceTo(enemy)
        # 如果距离小于5米...
        if distance <5:
            ready = hero.isReady("cleave")
            if ready:
                hero.cleave(enemy)
            # ...如果 “cleave”技能准备好了,就用“cleave”干掉他们!
            
            # ...否则,仅仅进行普通攻击。
            else:
                hero.attack(enemy)

45.村庄守护神

在这里插入图片描述

# 矮人来袭!保护镇子!
# 定义你自己的函数来对抗敌人!
def cleaveOrAttack():
    # 在函数中找到敌人,然后劈斩或是攻击它。
    enemy = hero.findNearestEnemy()
    distance = hero.isReady("cleave")
    if enemy:
        if distance:
            hero.cleave(enemy)
        hero.attack(enemy)
# 在巡逻点之间移动并调用函数。
while True:
    hero.moveXY(35, 34)
    # 使用上面定义的cleaveOrAttack函数。
    cleaveOrAttack()
    hero.moveXY(47, 27)
    # 再次调用函数。
    cleaveOrAttack()
    hero.moveXY(60, 31)
    # 再次调用函数。
    cleaveOrAttack()

46.乡村漫游者在这里插入图片描述

# 这定义了findAndAttackEnemy函数
def findAndAttackEnemy():
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)
# 这段代码不是函数的一部分。
while True:
    # 现在你可以使用findAndAttackEnemy在村子里巡逻
    hero.moveXY(35, 34)
    findAndAttackEnemy()
    # 现在移动到右侧入口。
    hero.moveXY(60, 31)
    # 使用findAndAttackEnemy
    findAndAttackEnemy()

47.村庄守卫

在这里插入图片描述

# 这个函数攻击最近的敌人。
def findAndAttackEnemy():
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

# 定义一个函数来劈斩敌人(只在劈斩就绪时)
def findAndCleaveEnemy():
    # 找到最近的敌人:
    enemy = hero.findNearestEnemy()
    # 如果敌人存在:
    if enemy:
        # 如果"cleave"就绪了:
        ready = hero.isReady("cleave")
        if ready:
            # 是时候使用劈斩了!
            hero.cleave(enemy)
    pass

# 在主循环中,巡逻、劈斩和攻击。
while True:
    # 移动到巡逻点,劈斩并攻击。
    hero.moveXY(35, 34)
    findAndCleaveEnemy()
    findAndAttackEnemy()
    
    # 移动到另一点:
    hero.moveXY(35, 34)
    # 使用findAndCleaveEnemy函数:
    findAndCleaveEnemy()
    # 使用findAndAttackEnemy函数:
    findAndAttackEnemy()

48.造币厂

在这里插入图片描述

# 差役试图偷取金币
# 编写一个函数,在差役盗取金币前将其干掉

def pickUpCoin():
    coin = hero.findNearestItem()
    if coin:
        hero.moveXY(coin.pos.x, coin.pos.y)

# 在下方写一个攻击敌人的函数attackEnemy。
# 寻找最近的敌人,如果出现敌人就进行攻击
def attackenemy():
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)
while True:
    #attackEnemy() # ∆ 在写好 attackEnemy 函数后消除这里的注释。
    pickUpCoin()
    attackenemy()

49. SHORT-SIGHTED BURL

# Collect coins and run lest the burl will find you.

# The function allows your hero take an item.
def takeItem(item):
    hero.moveXY(item.pos.x, item.pos.y)
# Write the function "checkTakeRu
def checkTakeRun(item1):
    if item1:
        takeItem(item1)
        hero.moveXY(40, 12)
    else:
        hero.moveXY(40, 12)

# If the item exists, use "takeItem" function to take it.
# Move to the start point (the green mark) whether the item or no.

# Don't change this code.
while True:
    hero.moveXY(16, 56)
    coin = hero.findNearestItem()
    checkTakeRun(coin)
    hero.moveXY(64, 56)
    coin = hero.findNearestItem()
    checkTakeRun(coin)

50.森林矿工

在这里插入图片描述

def checkEnemyOrSafe(target):
    # 如果目标(参数)存在:
    if target:
        # 然后攻击目标
        hero.attack(target)
    # 否则:
    else:
        # 使用say()来叫农民。
        hero.say("来人呢来人呢")

while True:
    # 移动到并检查右上的X标记。
    hero.moveXY(64, 54)
    enemy1 = hero.findNearestEnemy()
    checkEnemyOrSafe(enemy1)
    
    # 移动到左下的X标记处。
    hero.moveXY(16, 15)
    # 将findNearestEnemy()的结果存到一个变量中。
    enemy2 = hero.findNearestEnemy();
    # 调用checkEnemyOrSafe,并传递
    checkEnemyOrSafe(enemy2)
    # findNearestEnemy的结果作为参数

51.捉迷藏在这里插入图片描述

# 收集4个发光石,用来打败食人魔斗士。
# 如果发现发光石的话,藏起来。

def checkTakeHide(item):
    if item:
        # 物品在此,拿着它。
        hero.moveXY(item.pos.x, item.pos.y)
        # 然后移动到营地中央(40, 34)
        hero.moveXY(40, 34)

while True:
    # 移动到右上的X标记。
    hero.moveXY(68, 56)
    # 在那里搜索一块发光石。
    lightstone = hero.findNearestItem()
    # 调用checkTakeHide,并使用参数:lightstone
    checkTakeHide(lightstone)
    # 移动到左上角的标记。
    hero.moveXY(12, 56)
    # 搜索发光石。
    lightstone = hero.findNearestItem()
    # 调用checkTakeHide函数。
    checkTakeHide(lightstone)
    # 将搜索的结果作为参数传入。
    

52.MAIL INTERCEPTOR在这里插入图片描述

# Intercept all ogre messengers from ambush. 

def ambushAttack(target):
    #  Attack the target if it exists and return to the mark.
    # Write the function:
    if target:
        hero.attack(target)
    hero.moveXY(52, 36)

while True:
    ogre = hero.findNearestEnemy()
    ambushAttack(ogre)

53.墓地阴魂在这里插入图片描述

# 唯一的出口被食人魔堵住了。
# 躲着骷髅怪,并一个个击败食人魔

# 这个函数需要攻击敌人并隐藏。
def hitOrHide(target):
    # 如果'目标'存在:
    if target:
        # 攻击'目标'
        hero.attack(target)
        # 然后移动到红色标记。
        hero.moveXY(32, 16)        

while True:
    enemy = hero.findNearestEnemy()
    hitOrHide(enemy)

54.盗墓者

在这里插入图片描述

# 森林中一座被遗忘的墓地!
# 但是食人魔紧追不舍。
# 在防御矮人的同时破开坟墓

# 这个函数应该在敌人存在时攻击,否则攻击门!
def checkToDefend():
    # 检查目标是否存在
    enemy = hero.findNearestEnemy()
        # 如果是这样,攻击目标。
    if enemy:
        hero.attack(enemy)
    # 如果没有目标,使用else去做点别的事
    else:
        hero.attack("Door")
        # 否则攻击 "Door"
        
while True:
    checkToDefend()

55.边地之叉在这里插入图片描述

# 一大波食人魔正在到来!
# 使用 checkAndAttack 函数让代码易读。
# 这个函数有一个参数。
# 参数是一种给函数传递信息的方式。
def checkAndAttack(target):
    # target参数只是一个变量!
    # 它包含了函数调用时的参数。
    if target:
        hero.attack(target)
    hero.moveXY(43, 34)

while True:
    hero.moveXY(58, 52)
    topEnemy = hero.findNearestEnemy()
    checkAndAttack(topEnemy)
    # 移动到底部的X标记处。
    hero.moveXY(58, 17)
    # 创建名为 bottomEnemy 的变量,寻找最近敌人。
    bottomenemy = hero.findNearestEnemy()
    # 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。
    checkAndAttack(bottomenemy)

56.AGRIPPA重构在这里插入图片描述

def cleaveOrAttack(enemy):
    # 如果 “cleave” 技能冷却完毕,那就使用它!否则,使用普通攻击。
    em = hero.isReady("cleave")
    if em:
        hero.cleave(enemy)
    else:
        hero.attack(enemy)
        
        
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        distance = hero.distanceTo(enemy)
        if distance < 5:
            # 调用上面定义的 “cleaveOrAttack” 函数
            cleaveOrAttack(enemy)

57.交给屠夫在这里插入图片描述

# 这里展示了如何定义一个叫作cleaveWhenClose的函数
# 函数定义了一个参数,名为target
def cleaveWhenClose(target):
    if hero.distanceTo(target) < 5:
        # 将你的攻击代码放到这里。
        # 如果cleave准备就绪,那就劈斩目标
        ready = hero.isReady("cleave")
        if ready:
            hero.cleave(target)
        # 否则,使用attack攻击目标!
        else:
            hero.attack(target)
# 这段代码不是函数的一部分。
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # 注意在cleaveWhenClose内部,我们用target指向敌人。
        cleaveWhenClose(enemy)

58.边地好伙伴

在这里插入图片描述

# 你现在拥有一个宠物!

def speak(event):
    # 你的宠物需要用pet.say()进行回应
    pet.say("hello kitty")
# 这将告诉你的宠物,在听到声音时运行speak()函数
pet.on("hear", speak)

# 和你的宠物交谈!
#pet.say("Hello")
hero.say("message")

59.BACKWOODS AMBUSH A在这里插入图片描述

# In this level you will use functions with two parameters.
# Look at the structure below, notice how there are two arguments.
# These are both accessible within the function. 

def checkAndAttack(x, y):
    # First move to the coordinates provided by the parameters.
    hero.moveXY(x, y)
    # Then check for an enemy.
    enemy = hero.findNearestEnemy()
        # If there is one, attack it!
    if enemy:
        hero.attack(enemy)
    
checkAndAttack(24, 42)
checkAndAttack(27, 60)
# Navigate to the last 3 x-marks and defeat any remaining munchkins.
checkAndAttack(42, 50)
checkAndAttack(39, 24)
checkAndAttack(55, 29)

60.友人和敌人

在这里插入图片描述

# 农民和士兵聚集在森林。
# 命令农民战斗,敌人滚蛋!

while True:
    friend = hero.findNearestFriend()
    if friend:
        hero.say("战斗, " + friend.id + "!")
    # 寻找最近的敌人,然后让他们滚蛋
        enemy = hero.findNearestEnemy()
        if enemy:
            hero.say("滚蛋," + enemy.id + "!")
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,FPGA米极客可能并没有公开发布针对 FDMA 的完整源代码。不过,以下是一个简单的伪代码示例,展示了如何使用 FDMA 对两个用户进行分频。您可以根据您的具体需求和实现细节来编写实际的源代码。 ``` // 定义频带宽度 bandwidth = 1000; // 用户1的频率范围 user1_start_frequency = 0; user1_end_frequency = 400; // 用户2的频率范围 user2_start_frequency = 400; user2_end_frequency = 1000; // 创建用户1的频率分配 user1_frequencies = [i for i in range(user1_start_frequency, user1_end_frequency)]; // 创建用户2的频率分配 user2_frequencies = [i for i in range(user2_start_frequency, user2_end_frequency)]; // 将两个频率分配合并 frequency_allocation = user1_frequencies + user2_frequencies; // 将频率分配映射到时间域 time_allocation = []; for frequency in frequency_allocation: time_allocation.append(frequency / bandwidth); // 在时间域分配用户数据 user1_data = [1, 0, 1, 1, 0, 0, 1, 1]; user2_data = [0, 1, 1, 0, 1, 1, 0, 0]; // 将用户数据映射到频率分配 user1_frequency_data = []; user2_frequency_data = []; for i in range(len(user1_data)): user1_frequency_data.append(user1_frequencies[i % len(user1_frequencies)] * user1_data[i]); user2_frequency_data.append(user2_frequencies[i % len(user2_frequencies)] * user2_data[i]); // 将每个用户的频率数据加起来 total_frequency_data = [user1_frequency_data[i] + user2_frequency_data[i] for i in range(len(user1_frequency_data))]; // 将频率数据映射回时间域 total_time_data = []; for frequency_data in total_frequency_data: total_time_data.append(frequency_data / bandwidth); // 传输总时间数据 transmit(total_time_data); ``` 请注意,这只是一个伪代码示例,您需要根据您的具体需求和实现细节来编写实际的源代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值