
CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码6
发布日期:2021-05-07 10:58:02
浏览次数:17
分类:精选文章
本文共 3737 字,大约阅读时间需要 12 分钟。
以静制动
# 你可以将一个if语句放到另一个if语句当中。# 你必须注意这些if语句是如何互相影响的。# 请确保代码缩进正确!# 从外层if/else结构开始会有帮助。# 使用注释为内层if/else占位预留空间:while True: enemy = hero.findNearestEnemy() # 如果有敌人出现,那么就... if enemy: # 使用distanceTo创建一个距离变量。 distanceToEnemy = hero.distanceTo(enemy) # 如果敌人与你的距离小于5米,那么就攻击。 if distanceToEnemy < 5: hero.attack(enemy) # 否则(敌人还离得很远),那么就使用shield。 else: hero.shield() # 否则(没有敌人)... else: # …那么,回到X位置。 hero.moveXY(40, 34)
agrippa守卫战
while True: enemy = hero.findNearestEnemy() if enemy: # 用 distanceTo 获取与敌人的距离。 distance = hero.distanceTo(enemy) # 如果距离小于5米... if distance < 5: # ...如果"cleave"技能准备好了,就用cleave干掉他们! if hero.isReady("cleave"): hero.cleave(enemy) # ...否则,仅仅进行普通攻击。 hero.attack(enemy)
agrippa守卫战A
while True: enemy = hero.findNearestEnemy() if enemy: # 用 distanceTo 获取与敌人的距离。 distanceToEnemy = hero.distanceTo(enemy) # 如果距离小于5米... if distanceToEnemy < 5: # ...如果"cleave"技能准备好了,就用cleave干掉他们! if hero.isReady("cleave"): hero.cleave(enemy) # ...否则,仅仅进行普通攻击。 hero.attack(enemy)
agrippa守卫战B
while True: enemy = hero.findNearestEnemy() if enemy: pass # 用你自己的代码替换这行。 # 用 distanceTo 获取与敌人的距离。 distance = hero.distanceTo(enemy) # 如果距离小于5米... if distance < 5: # ...如果"cleave"技能准备好了,就用cleave干掉他们! if hero.isReady("cleave"): hero.cleave(enemy) # ...否则,仅仅进行普通攻击。 hero.attack(enemy)
村庄守卫
2个嵌套的if如果关联关系很近,那我们可以写成一句话,用and连起来!例如此代码中的如果发现了敌人,并且劈斩技能已经准备好。
# 这个函数攻击最近的敌人。def findAndAttackEnemy(): enemy = hero.findNearestEnemy() if enemy: hero.attack(enemy)# 定义一个函数来劈斩敌人(只在劈斩就绪时)def findAndCleaveEnemy(): # 找到最近的敌人: enemy =hero.findNearestEnemy() # 如果敌人存在: if enemy and hero.isReady("cleave"): # 如果"cleave"就绪了: # 是时候使用劈斩了! hero.cleave(enemy)# 在主循环中,巡逻、劈斩和攻击。while True: # 移动到巡逻点,劈斩并攻击。 hero.moveXY(35, 34) findAndCleaveEnemy() findAndAttackEnemy() # 移动到另一点: hero.moveXY(60, 31) # 使用findAndCleaveEnemy函数: findAndCleaveEnemy() # 使用findAndAttackEnemy函数: findAndAttackEnemy()
边地之叉
你需要渐渐的学会定义你自己的函数,传递参数的函数!!并调用相关参数。
# 一大波食人魔正在到来!# 使用 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, 16) # 创建名为 bottomEnemy 的变量,寻找最近敌人。 bottomEnemy = hero.findNearestEnemy() # 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。 checkAndAttack(bottomEnemy)
村庄守护神
你需要渐渐的学会定义你自己的函数!!
# 食人魔矮人来袭!保护镇子!# 定义你自己的函数来对抗敌人!def cleaveOrAttack(): # 在函数中,找到敌人,然后劈斩或是攻击它。 ogre = hero.findNearestEnemy() if ogre: if hero.isReady("cleave"): hero.cleave(ogre) # 否则,攻击食人魔: else: hero.attack(ogre)# 在巡逻点之间移动并调用函数。while True: hero.moveXY(35, 34) # 使用上面定义的cleaveOrAttack函数。 cleaveOrAttack() hero.moveXY(47, 27) # 再次调用函数。 cleaveOrAttack() hero.moveXY(60, 31) # 再次调用函数。 cleaveOrAttack()
造币场
你之前的鞋的速度可能跟不上了,时间是有限的,试着换双速度快的鞋!!
# 差役试图偷取金币# 编写一个函数,在差役盗取金币前将其干掉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()
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月03日 05时15分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Nginx---惊群
2019-03-05
项目中常用的审计类型概述
2019-03-05
(九)实现页面底部购物车的样式
2019-03-05
python-day3 for语句完整使用
2019-03-05
ButterKnife使用问题
2019-03-05
为什么讨厌所谓仿生AI的说法
2019-03-05
ORACLE 客户端工具
2019-03-05
基于LabVIEW的入门指南
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
C++ 函数重载
2019-03-05
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2019-03-05
使用mybatis-generator生成底层
2019-03-05
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2019-03-05
计算输入的一句英文语句中单词数
2019-03-05
lvs+keepalive构建高可用集群
2019-03-05
6 个 Linux 运维典型问题
2019-03-05
取消vim打开文件全是黄色方法
2019-03-05