CodeCombat代码全记录(Python学习利器)--安息之云山峰(第四章)代码4

    xiaoxiao2022-07-12  146

    花的几何学

    变身画家吧!

    # 你现在有花环! 你可以做: # toggleFlowers(true/false) - 打开或关闭鲜花。 # setFlowerColor("random") - 也可以是 "pink", "red", "blue", "purple", "yellow", or "white"。 # 以下是绘制图形的一些函数: # x,y - 图形的中心 # size - 图形的大小(半径,边长) def drawCircle(x, y, size): angle = 0 hero.toggleFlowers(False) while angle <= Math.PI * 2: newX = x + (size * Math.cos(angle)) newY = y + (size * Math.sin(angle)) hero.moveXY(newX, newY) hero.toggleFlowers(True) angle += 0.2 def drawSquare(x, y, size): hero.toggleFlowers(False) cornerOffset = size / 2 hero.moveXY(x - cornerOffset, y - cornerOffset) hero.toggleFlowers(True) hero.moveXY(x + cornerOffset, y - cornerOffset) hero.moveXY(x + cornerOffset, y + cornerOffset) hero.moveXY(x - cornerOffset, y + cornerOffset) hero.moveXY(x - cornerOffset, y - cornerOffset) redX = {"x": 28, "y": 36} whiteX = {"x": 44, "y": 36} # 选择一种颜色。 hero.setFlowerColor("blue") # 在redX上绘制一个大小为10的圆圈。 drawCircle(28, 36, 10) # 改变颜色! hero.setFlowerColor("yellow") # 在whiteX上绘制一个大小为10的正方形。 drawSquare(44, 36, 10) # 现在尝试绘制任何你想要的! hero.setFlowerColor('pink') drawSquare(35 , 38, 18)

    山花林

    自行作为艺术家展现你的才艺,我们去偷懒使用上一节的画圈函数。我的代码画出来的不美观,大家可自行创造。

    # 这个关卡是为花艺准备的。 # 真正的目标是尝试并获得乐趣! # 如果你画了至少包含1000朵花的画作,那么你将在这个关卡打上"succeed"的烙印。 #控制我们的人物来画圈圈 # toggleFlowers(true/false) - 打开或关闭鲜花。 # setFlowerColor("random") - 也可以是 "pink", "red", "blue", "purple", "yellow", or "white"。 def drawCircle(x, y, size): angle = 0 hero.toggleFlowers(False) while angle <= Math.PI * 2: newX = x + (size * Math.cos(angle)) newY = y + (size * Math.sin(angle)) hero.moveXY(newX, newY) hero.toggleFlowers(True) angle += 0.2 while True: hero.setFlowerColor("random") drawCircle(88, 63, 5) drawCircle(87, 62, 5) drawCircle(86, 61, 5) drawCircle(85, 60, 5) drawCircle(84, 59, 5)

    猎手和猎物

    已我的暴脾气我真不想招那破士兵去打敌人!!怎么也低我亲自上阵。

    # 食人魔正试图除掉你的驯鹿! # 当召唤士兵进攻时,让弓箭手回来。 def pickUpCoin(): # 收集硬币。 coin = hero.findNearestItem() if coin: hero.moveXY(coin.pos.x, coin.pos.y) def summonTroops(): # 如果你有黄金就召唤士兵。 if hero.gold >= hero.costOf("soldier"): hero.summon("soldier") # 这个函数有一个名为士兵的参数。 # 参数就像变量一样。 # 调用函数时确定参数的值。 def commandSoldier(soldier): # 士兵要攻击敌人。 #soldiers = hero.findFriends() soldiers = hero.findByType("soldier") for soldier in soldiers: enemy = soldier.findNearestEnemy() if enemy: hero.command(soldier, "attack", enemy) # 编写一个命令弓箭手的函数来告诉你的弓箭手怎么做! # 它应该有一个参数将表示在被调用时传递给函数的射手。 # 弓箭手应该只攻击距离25米以内的敌人,否则原地待命。 def commandArcher(archer): archers = hero.findByType("archer") for archer in archers: enemy = archer.findNearestEnemy() if enemy and archer.distanceTo(enemy) < 25: hero.command(archer, "attack", enemy) else: hero.command(archer, "move", archer.pos) while True: pickUpCoin() summonTroops() friends = hero.findFriends() for friend in friends: if friend.type == "soldier": # 这位朋友将被分配给commandSoldier函数中的士兵变量 commandSoldier(friend) elif friend.type == "archer": # 务必指挥你的弓箭手。 commandArcher(friend)

    图书馆谋士

    # Hushbaum已被食人魔伏击! # 她正在忙着医治她的士兵,你应该命令他们去战斗! # 如果食人魔认为他们可以攻击到Hushbaum或弓箭手,那么他们会派出更多的部队,所以将他们放在圈子里面! # 士兵们围成一圈防守起来。 def commandSoldier(soldier, soldierIndex, numSoldiers): angle = Math.PI * 2 * soldierIndex / numSoldiers defendPos = {"x": 41, "y": 40} defendPos.x += 10 * Math.cos(angle) defendPos.y += 10 * Math.sin(angle) hero.command(soldier, "defend", defendPos); # 找到最强大的目标(生命值最高) # 该函数返回一些东西! 当你调用函数时,你会得到一些回报。 def findStrongestTarget(): mostHealth = 0 bestTarget = None enemies = hero.findEnemies() # 找出哪个敌人的生命值最高,并将bestTarget设置为该敌人。 for enemy in enemies: if enemy and enemy.health > mostHealth: mostHealth = enemy.health bestTarget = enemy #return bestTarget # 如果有大食人魔的话,只关注弓箭手的火力。 if bestTarget and bestTarget.health > 15: return bestTarget else: return None # 如果最强大的目标拥有超过15的生命值,则攻击该目标。 否则,攻击最近的目标。 def commandArcher(archer): #archers = hero.findByType("archer") #archer = hero.findNearest(archers) nearest = archer.findNearestEnemy() #archerTarget = findStrongestTarget() if archerTarget: hero.command(archer, "attack", archerTarget) elif nearest: hero.command(archer, "attack", nearest) archerTarget = None while True: # 如果射手目标被击败或不存在,那就找一个新的。 if not archerTarget or archerTarget.health <= 0: # 将archerTarget设置为findStrongestTarget()返回的目标 archerTarget = findStrongestTarget() friends = hero.findFriends() soldiers = hero.findByType("soldier") # 创建一个包含弓箭手的变量。 archers = hero.findByType("archer") for i in range(len(soldiers)): soldier = soldiers[i] commandSoldier(soldier, i, len(soldiers)); # 使用commandArcher()命令你的弓箭手 for i in range(len(archers)): archer = archers[i] commandArcher(archer)

    我们中间的间谍

    # 内门可以撑很长时间。 # 然而,其中一个农民是食人魔的间谍! # 有一个提示!间谍的名字中有一个字母是"z"。 # 这个函数可以检查单词中的特定字母。 # 一个字符串只是一个数组! 像数组一样循环它。 def letterInWord(word, letter): for i in range(len(word)): character = word[i] # 如果字符等于字母,则返回 True if character == letter: return True # 因为字母不在单词里,所以返回 False return False spyLetter = "z" friends = hero.findFriends() for friend in friends: friendName = friend.id if letterInWord(friendName, spyLetter): # 揭露间谍! hero.say(friendName + " is a spy!") else: hero.say(friendName + " is a friend.")
    最新回复(0)