Sheesh, bu gerçekten dördüncü mü? Hepiniz yaşlılar için, temel zorluk aynı, ancak Java'yı özel bir dil yerine kullanıyoruz. İlgilendiğiniz takdirde işte son üç CodeBot mücadelesi .
CodeBots’un amacı botunuzu mümkün olduğunca viral yapmaktır . Her bot bir Bayrak taşır ve Bayrağının her yerde olduğundan emin olmalısın .
API
Botlar standart bir "protokol" izleyecek ve botlar senkronize olarak aşağıdaki adımlar boyunca ilerleyecektir:
IPAddress selectMessageRecipient()
Bir botun "dost" bir mesaj yollamak istediğini seçmesine izin verir.Message sendMessage()
Bir botun göndereceği mesajın içeriğini seçmesine izin verir.processMessage(IPAddress, Message)
Bir bot aldığı her mesaj için çağrılır.FunctionType selectFunctionToBlock()
bir işlevin geçerli dönüş için üzerine yazılmasını engeller. 7. adıma bakınız.IPAddress selectAttackTarget()
Bir botun DDOS'u kimin istediğini seçmesine izin veriyor Bot aynı anda 3 bot tarafından hedeflenirse, bir DDOS saldırısı başarılı olur. Bir saldırı başarılı olursa, saldırganların her biri 6. ve 7. adımları gerçekleştirebilir.readData(ReadonlyBot)
Bir botun savunmasız botta depolanan verileri okumasını sağlar.FunctionType selectFunctionToReplace()
bu zorluğun bir parçası . Botunuzdan botlarına kopyalamak için 1 işlev (burada listelenen 8) arasından seçim yapabilirsiniz. Ardından, işlevleriniz yerine onların yerine çağrılır . Birden fazla bot aynı işlevi seçerse, rastgele bir başarılı olur.String getFlag()
Oyunun sonunda denir ve sizin gönderiminiz için benzersiz bir dize döndürmelidir. İşleviniz daima aynı dizgeyi döndürmelidir. Oyunun sonunda en çok bayrak bulunan yazı kazanır.
Depolama
3 depolama biçiminiz, bir Adres Defteri , İşlem Kaydı ve Değişkenleriniz var . Bu depolama biçimleri, işlevinizin üzerinde çalıştığı bot için yereldir (yani işleviniz kopyalanırsa, bu nesnelerin her birinin içeriği farklı olacaktır). Bu nesnelerin tümü manuel olarak değiştirilebilir veya silinebilir. Bu nesneleri elde etmek için sınıfınızda bir alıcı vardır (örn. getLog()
).
Adres listesini saklar IPAddress bir ile, her AddressType Adresleri farklı türde sınıflandırmak için izin verir. Adres Defteri her zaman en az 1 adres içerecektir (temizlenirse, rastgele bir adres eklenecektir). Birden fazla IP Adresi almak için Adres Defterinizi silmenize izin verilmez.
Giriş eylemleriyle ilgili bütün yapılan işlemler, hem de verilerin listesini saklar. Ayrıca, tüm başarılı saldırıların geçmişini de içerir (hangi işlevlerin üzerine yazıldığını bilmiyor olsanız da)
Değişkenler nesne bir dize adına ekli dize değişkenleri saklamak için izin verir. Oyunun başlangıcında, Değişkenler , ID
bot tipinize özgü, rastgele oluşturulmuş bir ID içeren tek bir değişken içerecektir .
Ayrıca başka erişim işlevleriniz de vardır:
int getTurnNumber()
geçerli dönüşle bir tamsayı döndürürbool functionsMatch(ReadonlyBot, FunctionType)
ReadonlyBot işlevinin sizinkiyle eşleşip eşleşmediğini görmek için sınamalarIPAddress personalAddress()
IP Adresinizi döndürür
Nasıl uygulanır
- Kodu Github'dan alabilirsiniz.
- Botunuzu
\bots
klasöre ekleyin ve ardından botunuza bir referans ekleyin.controller\CodeBotFactory.java
- Botunuz uzatmalı
codebots.bot.CodeBot
veyacodebots.bots.DefaultCodeBot
- Denetleyiciyi çalıştırmak istiyorsanız Java 8'e ihtiyacınız var.
- Derlemeyi ve ardından çalıştırmayı
/src
kullanarak kodu ( klasörde olduğunuzu varsayarak ) çalıştırabilirsiniz.javac codebots\*.java
java codebots.Main
- Sen olabilir yok herhangi olmayan sabit üye değişkenleri sınıfınızda
- Yansıma izin verilmez.
- Yukarıda listelenen yöntemlerin dışında botlar (aynı veya farklı türlerde) arasında iletişim şekillerine izin verilmez.
- Salak ve / veya İntihar botlarına izin verilir, ancak tüm botlar işlevsel olarak mevcut kayıtlardan farklı olmalıdır.
- Botunuzda rastgelelik istiyorsanız,
getRandom()
- Lütfen kodunuzu verimli tutmaya çalışın. Çok fazla zaman harcadım ve kontrol cihazını hızlı hale getirdim.
Skorlar
105.2501 Expelliarmus!
104.5803 Yardım ediyorum!
104.2746 Ben Kimim?
103.8529 Aptal Bot
103.2028 Replacer
102.7045 Kaos
102.4046 Hermit Bot
102.2849 Swarmer
100.5598 Rastgele bot seni seviyor
99.966 Güven'e güven!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 Sadece dost mahalle postanızı robot teslim edin.
89.4645 boş