sheesh, apakah ini benar-benar yang ke-4? Untuk Anda semua yang sudah tua, tantangan intinya sama, tetapi kami menggunakan Java alih-alih bahasa khusus. Berikut adalah tiga tantangan CodeBot terakhir , jika Anda tertarik.
Tujuan dari CodeBots adalah membuat bot Anda menjadi virus semaksimal mungkin . Setiap bot membawa Bendera, dan Anda perlu memastikan bahwa Bendera Anda ada di mana - mana .
API
Bot akan mengikuti "protokol" standar, dan bot maju melalui langkah-langkah berikut secara serempak:
IPAddress selectMessageRecipient()
memungkinkan bot untuk memilih kepada siapa dia ingin mengirim pesan "ramah".Message sendMessage()
memungkinkan bot untuk memilih konten pesan yang akan dia kirim.processMessage(IPAddress, Message)
dipanggil untuk setiap pesan yang diterima bot.FunctionType selectFunctionToBlock()
memblokir fungsi agar tidak ditimpa untuk giliran saat ini. Lihat langkah 7.IPAddress selectAttackTarget()
memungkinkan bot untuk memilih siapa yang dia inginkan untuk DDOS. Serangan DDOS berhasil jika bot ditargetkan oleh 3 bot pada saat yang sama. Jika serangan berhasil, maka masing-masing penyerang dapat melakukan langkah 6 dan 7.readData(ReadonlyBot)
memungkinkan bot membaca data yang disimpan di bot rentan.FunctionType selectFunctionToReplace()
adalah inti dari tantangan ini . Anda diperbolehkan memilih 1 fungsi (dari 8 yang tercantum di sini) untuk menyalin dari bot Anda ke bot mereka. Kemudian, fungsi Anda akan dipanggil, bukan fungsi mereka . Jika beberapa bot memilih fungsi yang sama, yang acak akan berhasil.String getFlag()
dipanggil di akhir permainan, dan harus mengembalikan string yang unik ke kiriman Anda. Fungsi Anda harus selalu mengembalikan string yang sama. Pengajuan dengan bendera terbanyak di akhir pertandingan akan menang.
Penyimpanan
Anda memiliki 3 bentuk penyimpanan, Buku Alamat , Log , dan Variabel . Bentuk-bentuk penyimpanan ini bersifat lokal untuk bot yang digunakan oleh fungsi Anda (jadi jika fungsi Anda disalin, konten dari masing-masing objek ini akan berbeda). Semua objek ini dapat secara manual dimodifikasi atau dihapus. Untuk mendapatkan objek-objek ini, Anda memiliki pengambil di kelas Anda (misalnya getLog()
).
The AddressBook menyimpan daftar IPAddress , masing-masing dengan AddressType , yang memungkinkan Anda untuk mengklasifikasikan berbagai jenis alamat. AddressBook akan selalu mengandung setidaknya 1 alamat (jika dihapus, yang acak akan ditambahkan). Mengosongkan Buku Alamat Anda untuk mendapatkan beberapa Alamat IP tidak diizinkan.
The Log menyimpan daftar semua tindakan yang diambil, serta data tentang tindakan. Ini juga mencakup riwayat semua serangan yang berhasil (meskipun Anda tidak tahu fungsi mana yang ditimpa)
The Variabel objek memungkinkan Anda untuk menyimpan variabel string yang melekat pada nama string yang. Pada permulaan game, Variabel akan berisi satu variabel ID
,, yang berisi ID yang dibuat secara acak yang unik untuk jenis bot Anda.
Anda juga memiliki fungsi akses lain:
int getTurnNumber()
mengembalikan bilangan bulat dengan belokan saat inibool functionsMatch(ReadonlyBot, FunctionType)
tes untuk melihat apakah fungsi ReadonlyBot cocok dengan AndaIPAddress personalAddress()
mengembalikan Alamat IP Anda
Bagaimana cara mengimplementasikannya
- Anda dapat memperoleh kode dari Github
- Tambahkan bot Anda ke
\bots
folder, lalu tambahkan referensi ke bot Anda dicontroller\CodeBotFactory.java
- Bot Anda harus diperluas
codebots.bot.CodeBot
ataucodebots.bots.DefaultCodeBot
- Anda perlu Java 8 jika Anda ingin menjalankan controller.
- Anda dapat menjalankan kode (dengan asumsi Anda berada di
/src
folder) gunakanjavac codebots\*.java
untuk mengkompilasi, kemudianjava codebots.Main
untuk menjalankan. - Anda mungkin tidak memiliki setiap variabel anggota non-konstan di kelas Anda
- Refleksi tidak diperbolehkan.
- Bentuk komunikasi antara bot (dari jenis yang sama atau berbeda) di luar metode yang tercantum di atas tidak diperbolehkan.
- Bot bisu dan / atau bunuh diri diizinkan, tetapi semua bot harus berbeda secara fungsional dari entri yang ada.
- Jika Anda ingin keacakan dalam bot Anda, gunakan
getRandom()
- Cobalah menjaga agar kode Anda tetap efisien. Saya telah menghabiskan banyak waktu membuat profil dan membuat controller cepat.
Skor
105.2501 Expelliarmus!
104.5803 Saya Membantu!
104.2746 Siapakah Aku?
103.8529 Dumb Bot
103.2028 Replacer
102.7045 Chaos
102.4046 Hermit Bot
102.2849 Swarmer
100.5598 Bot acak mencintaimu
99.966 Percaya pada Kepercayaan!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 Hanya robot pengirim surat ramah lingkungan Anda.
89.4645 null