Цели:
Сохраните хотя бы одну вышку неповреждённой.
Награда:
Уровень0:
Осада Сарвена, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
def pickUpCoin(): coins = self.findItems() coinItem1=1 maxWeight = 0 MaxCoin =0 while coinItem1<=len(coins): coin1 =coins[coinItem1] if coin1 and coin1.value>1: coinItem2=1 Weight = 0 while coinItem2<=len(coins): coin2 = coins[coinItem2] if coin2: dis = Math.sqrt((coin1.pos.x - coin2.pos.x)**2+(coin1.pos.y-coin2.pos.y)**2) if dis>0: Weight +=coin2.value/dis coinItem2+=1 #Weight /= self.distanceTo(coin1) if Weight>maxWeight: maxWeight=Weight MaxCoin = coin1 coinItem1+=1 if MaxCoin!=0: #self.say(MaxCoin.type) self.moveXY(MaxCoin.pos.x, MaxCoin.pos.y) index=0; loop: if self.gold<40: pickUpCoin() else: #self.say(self.pos.y) if self.pos.y>64: self.moveXY(84, 78) self.moveXY(87, 78) self.moveXY(84, 78) else if self.pos.y>36: self.moveXY(84, 51) self.moveXY(87, 51) self.moveXY(84, 51) else: self.moveXY(84, 22) self.moveXY(87, 22) self.moveXY(84, 22) |
Python:
Прошёл этим кодом второй уровень2, выдаёт ошибку из за большого кол-ва вычислений, но своё дело успевает сделать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
def pickUpCoin(): coins = self.findItems() coinItem1=1 maxWeight = 0 MaxCoin =0 while coinItem1<=len(coins): coin1 =coins[coinItem1] if coin1: coinItem2=1 Weight = 0 while coinItem2<=len(coins): coin2 = coins[coinItem2] if coin2: dis = Math.sqrt((coin1.pos.x - coin2.pos.x)**2+(coin1.pos.y-coin2.pos.y)**2) if dis>0: Weight +=coin2.value/dis coinItem2+=1 Weight /= self.distanceTo(coin1) if Weight>maxWeight: maxWeight=Weight MaxCoin = coin1 coinItem1+=1 if MaxCoin!=0: #self.say(MaxCoin.type) self.moveXY(MaxCoin.pos.x, MaxCoin.pos.y) index=0; loop: if self.gold<40: pickUpCoin() else: #self.say(self.pos.y) if self.pos.y>64: self.moveXY(84, 78) self.moveXY(87, 78) self.moveXY(84, 78) else: if self.pos.y>36: self.moveXY(84, 51) self.moveXY(87, 51) self.moveXY(84, 51) else: self.moveXY(84, 22) self.moveXY(87, 22) self.moveXY(84, 22) |
Комментарии: