Bu zorluk sona erdi. Yarışmacıların final puanlarını görmek için buraya tıklayın.
Bu mücadelede, her gönderim bir bottur. Her bot bir Javascript işlevi olmalıdır. Altın en yüksek toplamı elde etmek için botlar savaşacak. Altın yetiştirilebilir veya başka botların öldürülmesinden kazanılabilir ve şifa, saldırı, koruma ve çiftçiliği geliştirmek için kullanılır.
Amaç:
1000 dönüşe kadar birkaç tur (sadece bir bot bırakıldığında biter), toplam değeri en yüksek olan bot (elde edilen tüm altınların toplamı) kazanır.
Dönüşler:
Her sırayla, hayatta olan her bot (> 0 HP) bir defa çalıştırılır. Aşağıdakilerden biri olabilecek bir hamle döndürür:
- İyileştirme: HP'yi Kazandı
- Saldırı: HP'yi başka bir bottan kaldırır
- Kalkan: Daha sonraki saldırılara karşı savunur
- Stun: Başka bir botun sıradaki sırasını atlar
- Çiftlik: HP pahasına altın kazanır
- Yükseltme: Bazı hareketleri daha iyi hale getirin
Tüm botlar harekete geçmeden hareketlerini geri getireceklerdir, bu yüzden sersemletmek, iyileşmek, saldırmak, kalkan vb. Bu sırada hareket eden botları etkilemeyecektir. Örneğin, Bot A, Bot B'yi sersemletirse ve Bot B, A dönüşünden sonra sırayla, Bot B yine aynı sırayla hareket eder ve sersemletici bir sonraki dönüşde gerçekleşir.
Savaş, Çiftçilik ve Yükseltme:
Her botta maksimum 100 HP ve 0 ile 99 arasında atanmış bir UID bulunur. Bu UID her turdan sonra değişir ve botlar birbirlerini nasıl takip eder.
İyileştirme, seviyesine göre belirlenen bir HP miktarı ekleyerek en basit hamlelerden biridir (5 HP'de başlar). Bir bot 100 HP'yi geçemez.
Botuna UID'sine saldırmak, olası bir hamledir ve 0 HP'de 5 HP'lik bir hasar verir. Botlar ayrıca UID'leri kullanan sonraki sıralarını atlayarak da sersemletilebilir.
Robotlar, sınırsız olan ilave HP korumasına sahiptir. Bu koruyucu HP, diğer botların doğrudan saldırılarından aldığı hasarı emer ve ekranlama yoluyla eklenir. 0 düzeyinde, ekranlama 5 kalkan HP ekler.
Çiftçilik, 0 HP seviyesinde 2 HP karşılığında 5 altın kazanacak. Bu 2 HP korumalı olamaz. Altın için tek kullanım (kazanmanın ötesinde) hamleleri yükseltmektir. İyileştirme, saldırma ve koruma 5 HP taban değerine sahiptir ve çiftçilik 5 altından başlar. Bu hamlelerin her biri, 0 ile başlayan bireysel seviyelere sahiptir. Bu formüller, L'nin seviye olduğu bir hamlenin HP veya altındaki değerini belirleyecektir:
- şifa:
L + 5
- saldırmak:
1.25L + 5
- koruyucu:
1.5L + 5
- çiftçilik:
2L + 5
Herhangi bir hamlenin yükseltilmesinin maliyeti belirli bir seviye için aynıdır ve 2.5L² + 2.5L + 10
L'nin geçerli seviye olduğu yerde belirlenir . Bir bot bu fonksiyonu cost(currentLevel)
belirlemek için kısayol olarak kullanabilir .
Botlar 25 altınla başlar ve bu sayede ya iki hamle seviye 1’e, biri de seviye 2’ye hızlı bir şekilde yükseltilir. Bir botu öldürmek, toplam değerinin yarısı kadar altın verir, yuvarlanır ve iki bot aynı sırayla başka birini öldürürse, ikisi de ödülü alır.
Giriş çıkış:
Kontrol cihazı ile iletişim kurmak için, fonksiyonun dönüş değeri taşıma bilgisi göndermek için kullanılır. Bunlardan biri iade edilmelidir:
- İyileşmek:
heal()
- saldır:
attack(uid)
- kalkan:
shield()
- stun:
stun(uid)
- Çiftlik:
farm()
- Yükselt:
upgrade("heal" / "attack" / "shield" / "farm")
Bir dönüşü atlamak (hiçbir şey yapmamak), hiçbir şey döndürmek veya sahte bir değer döndürmek için.
Mevcut dönüş numarasını almak için (1'den başlar), kullanın turn()
.
İşlevinizin argümanları botunuz hakkında bilgi, diğer botların kullanıcı kimlikleri ve kayıt arası depolama içerecektir. İlk bağımsız değişken aşağıdaki özelliklere sahip bir amacıdır: uid
, hp
, gold
ve shield
. Bunlar botunuzun şu anki bilgilerinin kopyaları. Bir yuvalanmış nesne de vardır levels
seviyesi numaraları ile, heal
, attack
, shield
, ve farm
.
İkinci bağımsız değişken bir özelliklerini içeren bir nesne olarak biçimlendirilmiş seninkinden dışındaki tüm canlı botlar karıştırılmış bir dizi olduğu uid
, hp
(artı kalkan), worth
ve attack
(saldırı düzeyi). Üçüncü argüman, dönüş arası depolama için kullanılabilecek boş bir nesnedir.
Örnek Botlar:
Bu bot saldırı seviyesini 5. seviyeye yükseltene kadar artacak, sonra ölene (veya kazanana kadar) her dönüşe rastgele bir bot atacak. İyileşme / koruma eksikliği nedeniyle çok etkili değil.
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
Bu botun iki modu var: saldırgan ve savunmacı. Rastgele bir bot sersemletir veya savunma modundayken iyileşir ve saldırgan moddayken de saldırıya ya da kalkan olur. Mümkün olduğunca saldırılarını yükseltmeye çalışacaktır.
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
Kurallar:
- Standart Loopholes yasak
- Botlar kapsamları dışında herhangi bir değişken okuyamaz, değiştiremez veya ekleyemez, hile yapmaya çalışamaz ve denetleyici tarafından tanımlanmış veya DOM işlevlerini çağırmayabilir
- Dönüş değeri sahte olmalı veya yukarıdaki işlev çıktılarından biri olmalı
- Botlar belirli bir botu hedef alacak şekilde tasarlanmamalı, ortak stratejilerden yararlanmak için tasarlanmalıdır.
- Botlar kendilerine saldıramayabilir (@Ness tarafından yapılan bir yorum nedeniyle keşfedildi)
- Botlar, makul bir şekilde ayrı girdiler olarak kabul edilebilecek diğer botlardan yeterince farklı olmalıdır.
- Takımlaşmaya artık izin verilmiyor
- Kontrolör burada bulunabilir
- Sohbet odası
Yeni Denetleyici Hata Ayıklama:
Dosyayı kullanarak, bir botun özelliğinin gold-battle-log.js
değerini 0 (günlük kaydı yok), 1 (günlük hareketi) veya 2 (günlük hareketi, hp, altın, düzey vb.) Olarak ayarlayabilirsiniz.debug
botData
Meydan okuma 9 Ağustos Cuma günü saat 17.00 UTC'de sona eriyor
[closed]
ve sonuçta sıradan izleyicilerin düşük kalitedeki veya konuyla ilgisiz olduklarını varsaydıkları için zorlukları okumayı atlamaları muhtemel.