Kami tidak buruk, tetapi ada banyak bug. Pengembangan kecerdasan buatan untuk game "Hoki" dalam ~ 7 jam.
Awalnya, artikel itu direncanakan tentang strategi para peserta, tentang apa yang mereka berhasil lakukan dalam waktu kompetisi dan apakah mereka senang dengan pekerjaan yang dilakukan, tetapi, setelah mewawancarai delapan finalis, menjadi jelas bahwa tidak ada yang akan datang dari itu dan bahwa itu mendesak untuk mengubah arah.
Faktanya adalah bahwa kami menerima maksimal 6 kata untuk pertanyaan yang menarik minat kami, dan kemudian kami segera mendengar
ketidakpuasan tentang bug yang ditemui peserta. Hanya satu orang yang menulis:
Saya tidak ingin menulis sesuatu yang negatif, saya pikir ini tidak benar, dan penyelenggara sendiri harus bersedih. Karena itu, saya akan mengatakan bahwa ide penugasan ini cukup menarik, walaupun saya pribadi tidak terlalu menyukai format kompetisi ini (Anna Prozorova).
Dari judul artikel, jelas bahwa kami tidak memenangkan apa pun. Dan ya, itu adalah "kita." Selama hari-hari kompetisi, saya mendapatkan banyak teman baik, termasuk Anna (
odrus ), yang merupakan rekan penulis artikel ini. Juga pada saat terakhir kami berbicara dengan Leo (
zadamantiy ) dan dengan izinnya kami menggambarkan partisipasi di final.
Secara pribadi, saya adalah anggota dari gerakan "A Complaint Free World", tetapi saya akan menggantung gelang saya di sisi lain dan akan mengeluh, walaupun dalam bentuk komik, karena, di sisi lain,
ini adalah kondisi kompetisi dan Anda harus menjadi spesialis yang baik untuk menang dan Atasi kekurangannya! Kami tidak memiliki keluhan, sebaliknya - terima kasih banyak!
Di bawah potongan, selain untuk menggambarkan aturan permainan, aturan kompetisi dan bug yang ditemukan, kami akan berbagi dengan Anda tiang tembok kami, apa yang kami temui secara pribadi dan bagaimana kami memecahkan masalah ini atau itu, bagaimana kami mempersiapkan kompetisi. Mungkin di suatu tempat Anda mengenali diri sendiri jika Anda berpartisipasi dalam kompetisi semacam itu.
Tujuan artikel ini adalah untuk mengumpulkan kontes yang gagal dari para peserta dan penyelenggara, untuk memotong mereka di hidung Anda dan tidak pernah menginjak menyapu yang sama lagi. Kami berharap artikel ini akan meningkatkan level kontes berikutnya.
Pendahuluan
Beberapa kata tentang kami
Ilya
Peserta tahunan Piala AI Rusia dan Piala Mini AI sejak 2017. Saya juga mengikuti Codingame dan Halite. Saya tidak memiliki prestasi khusus, tetapi saya belajar banyak dari orang lain. Bagi saya, hal utama bukanlah partisipasi, bukan kemenangan, tetapi untuk memberikan 100% dan akhirnya mengatakan: "Saya melakukan semua yang saya bisa, mewujudkan semua yang saya inginkan, menerapkan semua yang saya tahu." Saya tidak tahu bahasa pemrograman Java. Bagi saya, ini sudah merupakan praktik umum dari kompetisi ke kompetisi untuk sepenuhnya mempelajari tumpukan teknologi baru.
Anna
Seorang siswa sederhana dengan sedikit pengalaman dalam memecahkan masalah algoritmik, tetapi tanpa banyak pengalaman dalam berpartisipasi dalam olimpiade dan kontes serupa. Secara khusus, di IT-Planet, saya memutuskan untuk berpartisipasi untuk menguji pengetahuan dan kemampuan saya, mendapatkan pengalaman, berkomunikasi dengan orang-orang yang menarik. Dia belajar bahasa pemrograman Java di universitas, tetapi tidak memiliki pengalaman praktis dengan itu untuk waktu yang lama.
Singa
Dia berpartisipasi dalam semua jenis pilihan ICPC, hackathon seperti "Build University 20.35" dan "Digital Breakthrough". Ya, hal-hal kecil di beberapa olimpiade universitas.
Oleh karena itu, universitas kami biasanya mengirim banyak peserta ke kontes untuk sql, tetapi tahun ini tidak. Saya ditawari untuk berpartisipasi di Jawa, saya harus berurusan dengan bahasa baru untuk diri saya sendiri dalam waktu yang cukup singkat bersamaan dengan sesi. Di It-planet sebelum ini tidak berpartisipasi.
Deskripsi Persaingan
Posisi umum
IT-Planet adalah kompetisi untuk siswa dan profesional muda dari bidang TI, yang tujuannya adalah untuk mengidentifikasi dan mendukung orang-orang yang cakap. Diadakan setiap tahun sejak 2007. Partisipasi di dalamnya adalah kesempatan untuk membuktikan diri.
Nominasi “Java Programming” membantu untuk menemukan aplikasi praktis dari pengetahuan yang diperoleh dalam proses pembelajaran.
Tahap kualifikasi pertama adalah in absentia dan merupakan tes online untuk siswa dari lembaga pendidikan terdaftar. Pertanyaannya cukup rumit dan menarik, tetapi jujur saja, mayoritas berisi kode yang bisa dibaca dan dijalankan kembali.
Tahap kualifikasi kedua, seperti yang pertama, adalah absen. Ini bertujuan untuk memecahkan masalah pemrograman olahraga. Dua hari diberikan untuk menyelesaikan 10 masalah, yang memungkinkan persiapan secara menyeluruh untuk menyelesaikan masalah tertentu, untuk mempelajari algoritma / pendekatan. Namun, tidak ada yang mengatasi semua tugas. Kondisi beberapa tugas berubah selama kontes. Ada sekolah di ujian.
Final internasional penuh waktu. Itu perlu untuk menulis AI untuk game "Ice Hockey". ~ 7 jam diberikan. Perkiraan karena kurangnya "lampu hijau" dari awal dan tidak bisa dimengerti dengan makan siang. Waktunya terasa karet dan penonton tidak menutup, tetapi lebih pada itu di bawah.
Tugas
Tugas ini dikembangkan oleh spesialis SimbirSoft LLC. Di bawah ini adalah isi file .pdf (dengan revisi minimal untuk artikel) yang diterima setiap peserta.
TugasDeskripsi tugasDi suatu tempat di negara yang misterius, semua penghuninya adalah robot kecil, ada 2 tim untuk bermain hoki. Kedua tim memiliki pelatih robot pribadi mereka sendiri, yang terus-menerus memantau permainan dan memberi tahu semua pemain ke mana mereka harus pergi. Semuanya akan baik-baik saja, tetapi pemain robot hanya memahami tindakan sederhana seperti pergi, memukul keping, pergi ke titik yang ditentukan oleh pelatih.
Anda harus menjadi pelatih untuk tim pemain merah. Tim biru akan bermain melawan Anda, yang dikendalikan oleh algoritma yang sudah berhasil mengalahkan tim lain. Di lapangan pada saat yang sama 2 tim bermain. Tim ini terdiri dari 4 pemain: striker, 2 pemain bertahan dan penjaga gawang.
Tugas Anda adalah menulis algoritma untuk mengelola bot merah. Untuk mengontrol karakter Anda akan memiliki 3 metode, yang dijelaskan di bawah ini. Ada juga metode yang menerima informasi tentang semua pemain di lapangan dan koordinat keping.
Keterbatasan gimKiper hanya bisa mencapai tengah lapangan dari gawang. Pembela dan penyerang dapat naik di seluruh lapangan, kecuali area kiper (setengah lingkaran merah di dekat gawang).
Deskripsi struktur aplikasiAplikasi ini disajikan sebagai klien dan server. Server akan dikemas ke dalam file jar, dan diluncurkan di latar belakang. Server berisi semua logika dasar pergerakan karakter dan keping, menyimpan informasi tentang semua karakter, keping, waktu dan skor.
Ketika aplikasi dimulai, klien membuat koneksi dengan server, dan, dengan frekuensi yang diberikan, menerima data dari server. Dia juga bertanggung jawab untuk menampilkan semua karakter, tujuan dan keping di bidang hoki.
Semua kode program harus ditulis dalam kelas Algoritm dalam folder algoritm di aplikasi klien (semua perubahan pada file lain tidak akan diperhitungkan).
Metode berikut hadir di kelas ini:
- move (playerType, x, y) - Metode untuk memindahkan pemain ke titik tertentu di peta.
- kick (playerType) - Metode untuk memukul keping oleh pemain tertentu.
- turn (playerType, angle) - Metode untuk memutar pemain tertentu.
- getInfo () - Dapatkan informasi tentang semua pemain dan pucks di peta.
Ada juga level variabel statis, yang bertanggung jawab atas tingkat kompleksitas algoritma. Level berikut akan tersedia untuk peserta dalam Olimpiade:
- tim biru berdiri;
- tim biru berjalan secara acak melintasi lapangan;
- tim biru bermain sesuai dengan "algoritma yang lemah";
- tim biru bermain sesuai dengan algoritma canggih (untuk pengujian internal).
Semua metode yang menerima tipe pemain hanya berfungsi untuk pemain tim merah.
Variabel playerType adalah turunan dari kelas PlayerType, dan berisi
nilai-nilai seperti kiper, bek1, bek2, striker.
Di kelas Playground, nilai konstan game ditulis (misalnya, lini tengah, zona penjaga gawang, dll.).
Metode getInfo () mengembalikan objek dari kelas GameInfo.
Perbaikan- Jika Anda mengirim metode pemindahan beberapa kali, maka titik akhir di mana karakter yang perlu dijangkau akan berubah (oleh karena itu, jika Anda perlu mencapai titik akhir, Anda harus menunggu sampai karakter mencapai itu sebelum mengirimnya ke titik lain).
- Metode tendangan hanya dapat digunakan untuk pemain yang memiliki keping.
- Metode belokan mengambil sudut, sedangkan untuk sisi bawah bidang, sudut mengambil nilai dari 0 (melihat ke arah gawang musuh) ke 180 (melihat ke gawang sendiri), dan untuk setengah lingkaran atas, sudut mengambil nilai dari 0 hingga -180.

Kriteria evaluasi
Juga diambil dari file .pdf. Hanya kode dari kelas Algoritm yang akan digunakan. Algoritma masing-masing peserta akan dijalankan terhadap semua tingkat kesulitan pada gilirannya. Menurut hasil lari, poin akan ditetapkan untuk hasil pertandingan, dan poin untuk peluang yang diterapkan dalam algoritma juga akan diberikan.
Daftar kriteria- Serangan ke gawang harus dilakukan dari sudut yang berbeda. Misalnya: tepat di depan pemain, kiper musuh - serangan ke gawang harus dilakukan secara miring.
- Pemain mengoper bola ke pemain hoki gratis untuk melakukan serangan ke gawang.
- Lulus harus diberikan hanya dalam kasus-kasus ketika pemain tidak dapat melakukan serangan sendiri (semua sudut untuk menyerang gawang ditutup).
- Pass hanya harus diberikan kepada pemain yang bebas untuk pass. Pemain hoki dengan tujuan terbuka untuk menyerang adalah prioritas.
- Jika serangan tidak memungkinkan, tim harus mundur dan berkumpul kembali.
- Tambah. Poin jika mereka berangkat melalui transfer.
- Tambah. Poin jika Anda menggunakan kiper untuk menyusun kembali.
- Di pertahanan, kemampuan untuk meneruskan ke pemain lawan yang lain harus diblokir.
- Tim pemain menganut strategi. Sebagai contoh: 1 bek selalu menjaga sedikit lebih jauh, dalam kasus serangan balik musuh.
- Algoritma memperhitungkan papan skor. Misalnya: bermain lebih agresif jika kalah dan sebaliknya lebih hati-hati dalam situasi kemenangan; dengan hasil imbang meningkatkan agresi menjelang akhir pertandingan.
Poin penalti akan diberikan untuk:
- Pemain mencetak gol di gawangnya sendiri.
- Pemain hoki saling memblokir. (jangan biarkan satu sama lain lewat).
- Sengaja memblokir game. Sebagai contoh: dorong keping ke keping sampai akhir permainan.
Tubuh utama
Persiapan untuk kompetisi
Ilya
Awalnya, mereka menulis bahwa di final akan ada "Pengembangan industri". Saya mengharapkan kerja normal dengan basis, pengembangan GUI. Aplikasi untuk sesuatu akuntansi, misalnya. Dengan setengah kesedihan, aku setuju untuk final, karena aku tidak terlalu senang dengan apa yang harus kulakukan. Namun, pada 17 September, sebuah surat tiba dengan aturan untuk mengadakan final, dan berikut ini dilaporkan di sana: "Ada permainan 2D komputer" Hoki "di mana bot komputer bermain menurut beberapa algoritma. Hal ini diperlukan untuk mengimplementasikan suatu algoritma dalam bahasa pemrograman Java yang sesuai dengan karakter para peserta akan bertindak “(ditulis di situs bahwa tugas dapat diubah). Saya langsung ingat Piala AI Rusia 2014 di kepala saya. Saya senang dan menyadari bahwa tidak sia-sia saya setuju untuk ambil bagian.
Hal pertama yang saya lakukan sekali lagi adalah membaca artikel
pemenang . Secara umum, saya ingat apa yang ada di sana, tetapi tidak semua momen jelas. Kemudian saya pergi ke
situs web kontes dan membaca peraturan. Saya berhenti karena hal ini, karena setiap amandemen aturan dapat sepenuhnya mengubah keseluruhan permainan. Saya tidak tahu berapa banyak fisikawan dalam permainan mereka, saya tidak tahu bagaimana pemilihan pukulan dan keping, dll. Permainan bisa sangat disederhanakan, bahkan sudut pun tidak diperlukan. Jadi saya mulai menunggu ...
Menunggu dan menunggu! Pada sore hari tanggal 27 September datang surat tentang webinar! 28 September pukul 19.00. Itu adalah hari dan waktu yang sempurna bagi saya. Namun ... Namun, 4 jam sebelum peluncuran dijadwalkan, surat lain tiba dengan transfer ke 17:00! Surat transfer datang satu jam sebelum memulai ... Saya terbang sebaik mungkin dan terlambat sekitar 15 menit (saya tidak berharap bahwa Flash Player masih harus diinstal).
Di webinar dia mengajukan pertanyaan dan mendapat gambaran umum tentang permainan. Ada cukup data, bahkan untuk menulis saya sendiri dan benar-benar mempersiapkan. Namun, sampai yang terakhir tidak jelas bagaimana pukulan itu terjadi, para pengembang tidak mengungkapkan beberapa poin, dan di beberapa tempat mereka sendiri belum memutuskan sampai akhir.
Setelah menuliskan semua yang paling berharga, saya pergi untuk berbicara dengan anggota aktif RAIC yang akrab. Halo dan terima kasih
m0rtido ,
DragoonXen ,
oreshn1k . Setelah menguraikan situasi, menjadi jelas bahwa perlu untuk hardcode ifa dan tidak dapat berbicara tentang simulasi dunia selama waktu seperti itu.
oreshn1k membagikan buku pengeboman "Programming Game AI by Example", bab keempat yang membahas tentang desain AI untuk sepakbola. Saya sangat menyukai buku itu sehingga saya memutuskan untuk melukis sendiri seluruh strategi yang akan saya tulis di kompetisi, dan benar-benar lupa tentang batas waktu. Apa yang akan saya tulis tidak cocok untuk kontes ini ...
Persiapan saya yang sia-sia sudah tersedia di
quire (rapi, sudah ada 168 tugas. Di beberapa tempat dengan deskripsi). Tidak ada gunanya untuk kompetisi ini, tetapi secara umum itu adalah sistematisasi yang sangat baik dari pengetahuan yang diperoleh dari buku ini. Saya juga berpikir tentang mensimulasikan keping untuk mencari tahu lokasinya setelah beberapa saat, menemukan sudut yang tepat untuk tembakan ke gawang, logika mentransfer keping antara pemain dan banyak hal menarik.
Saya sudah menulis di atas bahwa tanpa petunjuk bagaimana menulis di Jawa, oleh karena itu, selain strategi, saya mulai mempelajari sintaks bahasa. Ini dibantu oleh situs luar biasa, yang telah saya gunakan lebih dari yang pertama -
Belajar X dalam Y menit . Setelah memasuki IntelliJ IDEA, saya menyadari bahwa menulis di atasnya persis sama dengan menulis di C #.
Dengan persiapan seperti itu, saya pergi ke Moskow.
Anna
Ketika saya belajar tentang tema final, hal pertama yang saya putuskan untuk diulang adalah geoma. Dan untuk membuatnya lebih menyenangkan dan lebih, saya melakukan semuanya dengan
Memproses : Saya melihat contoh dari pengembang yang terkait dengan pergerakan, menghitung sudut, kecepatan dan akselerasi, dan kemudian berlatih pada sketsa kecil saya.
Saya memutuskan untuk tidak membuang waktu untuk menyegarkan kembali seluk-beluk Jawa, karena, menurut saya, tugas itu melibatkan keterampilan dalam strategi menulis dan pengetahuan matematika. Jadi saya memutuskan untuk membaca
artikel tentang pemenang RAIC 2014 . Artikel itu menarik, tetapi tidak terlalu berguna khususnya untuk kontes ini, karena fisika dapat berbeda secara radikal, dan lebih sedikit waktu akan diberikan.
Webinar dari para pengembang itu menarik dan bermanfaat, memberikan gambaran keseluruhan game. Tetapi, sayangnya, saya tidak dapat menontonnya sepenuhnya, karena siaran dilakukan menggunakan Flash dan laptop saya memutuskan pada saat itu juga untuk bermain dengan layar biru kematian.
Sebagai hasilnya, tepat sebelum final, saya tidak memiliki strategi yang berhasil di muka: sulit untuk merencanakan sesuatu ketika rincian fisika permainan tidak diungkapkan. Ada pemikiran tentang apa yang perlu diperhatikan pertama-tama, metode tambahan apa yang harus ditulis segera, tetapi tidak lebih. Saya memutuskan bahwa hal utama sebelum penutup adalah untuk bersantai, cukup tidur dan datang ke sana dalam suasana hati yang baik.
Singa
[Disiapkan] Sekitar 16-20 jam. Oleh karena itu, saya mempertimbangkan geometri, yang sayangnya tidak banyak bertentangan. Formula dan perhitungan yang sudah disiapkan sebelumnya, menguji semuanya. Saya menghargai area di mana Anda dapat mencetak sesuai dengan kondisi yang diberikan oleh penyelenggara di webinar, kemudian menulis emulator dari beberapa tindakan dan mendapatkan seperti apa area tersebut ketika secara langsung mensimulasikan tembakan dari titik yang berbeda dan strategi penjaga gawang yang optimal. Akibatnya, hampir tidak ada yang berguna dan saya harus menulis kruk pada kruk.

Distribusi waktu
Ilya
Saya selalu memiliki masalah dengan distribusi waktu di kompetisi dan olimpiade. Saya menginjak menyapu untuk ketiga kalinya. Setelah yang pertama dia berkata bahwa dia tidak akan pernah membiarkan ini. Sekali lagi, dia duduk di satu tugas, untuk waktu yang lama tidak beralih ke yang lain.
Menghabiskan banyak waktu, seluruh bagian pertama dari kompetisi sebelum makan siang, pada implementasi semua jenis pembungkus untuk pemain tim, kelas negara, pesan di antara mereka, peran internal. Secara umum, saya melanjutkan tugas-tugas yang telah saya buat sebelum kompetisi benar-benar melupakan saran dari peserta yang berpengalaman tentang hardcode jika dan metode tambahan. Dia hanya menulis tanpa memikirkan waktu.
Saya sadar saat makan malam. Saya mengerti bahwa setengah dari kompetisi telah berakhir, dan saya harus bekerja selama 10 jam lagi sehingga setidaknya sesuatu mulai bergerak. Diputuskan untuk meninggalkan semua yang ada dan mulai dari awal. Ini adalah jam-jam terakhir yang menarik dari kontes, ketika saya berhenti merasa sedih dan terkikik dengan perilaku bot saya. Sangat cepat mulai beralih dari satu tugas ke tugas. Dia tidak pergi ke sana - dia beralih ke yang lain, lalu dia kembali. Hanya ada satu keinginan - untuk mencetak setidaknya entah bagaimana, setidaknya sesuatu. Oleh karena itu, itu benar-benar dilupakan tentang kebersihan kode dan OOP, komentar menarik ditinggalkan di beberapa tempat.
Anna
Pertama, saya memutuskan untuk mencari tahu bagaimana metode dasar dalam permainan umumnya bekerja: pergerakan pemain hoki, penangkapan keping, berputar dan melewati. Saya menghabiskan sekitar satu jam untuk ini. Saya juga mempelajari data dan metode yang dimiliki para pemain hoki dan keping. Kemudian saya memutuskan bahwa akan menyenangkan untuk belajar bagaimana menemukan sudut antara dua objek (khususnya, antara pemain hoki dan keping). Saya mengalami kesulitan besar dengan ini: pada awalnya saya menemukan metode Math.atan2 untuk waktu yang lama, dan kemudian saya mencoba untuk mengubah data yang diterima menjadi sistem sudut pengembang. Dengan semua ini, saya tersiksa sebelum makan malam dan sangat kesal karena saya menghabiskan banyak waktu untuk satu tugas kecil, meskipun pada saat yang sama saya bisa menulis strategi untuk setidaknya tingkat pertama.
Setelah makan siang, saya memutuskan untuk mengalokasikan waktu lebih rasional. Cepat menyelesaikan metode dengan menentukan sudut, lalu menulis strategi untuk tingkat pertama. Kemudian dia dengan lancar beralih ke strategi untuk tingkat kedua, yang dia terapkan pada akhirnya untuk yang ketiga. Sebenarnya, ini dan tetap pada cara pemain hoki saya bertingkah aneh, saya lakukan sampai akhir final. Kode itu ternyata mengerikan, tidak bisa dibaca, dengan banyak ifs dan copy-paste, tetapi kurang lebih berhasil dengan tugasnya: pemain hoki saya mencetak gol.
Singa
Untuk waktu yang ditentukan (7 jam, yang sangat kecil untuk kompetisi seperti itu), ia membuat algoritma sederhana yang mampu secara konsisten memenangkan 1-2 level dengan skor penghancuran. Dan kemudian, tergantung pada kejadian acak dengan level ke-3, algoritma mengeluarkan skor dari 0-2 menjadi 6-0. Sayangnya, tidak mungkin untuk melihat level keempat. Pada saat yang sama, saya yakin bahwa selama waktu ini Anda dapat menulis opsi yang jauh lebih baik, tetapi untuk ini Anda perlu memahami bagaimana semacam perputaran sebenarnya bekerja, tetapi di sini penyelenggara mengangkat bahu, mengatakan bahwa kami tidak mengerti mengapa demikian.Sebagian besar waktu yang dibutuhkan untuk mencari tahu bagaimana dan apa yang berhasil dalam proyek ini terutama marah karena tidak berfungsi. Equals () dan dua bidang .TypeOfPlayer dan .PlayerType, yang mengembalikan hal-hal yang sama sekali berbeda. Ya, ada beberapa perilaku aneh dari pemain yang benar-benar tidak bisa dijelaskan oleh penyelenggara (dan kami tidak tahu mengapa karakter Anda naik ke sini dengan punggungnya untuk satu-satunya tim yang diberikan, dan ternyata sudah disebutkan :)). Kemudian, pada beberapa titik, ternyata proyek tersebut memiliki konstanta untuk ukuran objek permainan yang berbeda dan posisi mereka, yang, tampaknya, seharusnya berada di bahan referensi dari awal, tetapi tidak, pada akhirnya, itu menghabiskan waktu untuk menghitungnya dengan tangan.Tiang tembok kami
Ilya
Anna
- Seperti Ilya, saya tidak dapat mengalokasikan waktu dengan benar di awal: Saya menghabiskan banyak waktu untuk tugas yang kecil, meskipun bermanfaat, tetapi saya harus mengajar pemain hoki untuk mencetak gol.
- Dia menghabiskan banyak waktu karena dia lupa tanda tangan dari metode Math.atan2: pertama datang y, dan kemudian x. Saya melakukan yang sebaliknya.
- Saat menulis metode yang menentukan apakah ada pemain hoki musuh di bentangan tertentu, saya membuat beberapa kesalahan, karena itu para pemain hoki terkadang menolak untuk pindah ke mana pun.
- Secara keseluruhan, kompetisi tidak dianggap cukup serius. Seseorang dapat mempersiapkan lebih teliti dan menjadi lebih rajin dan penuh perhatian di akhir.
Singa
- Dua jam pertama dalam log iterated secara acak kedua kali atas perintah sekutu, bukan kedua kalinya pada perintah bot.
Penyelenggara Shoals
- Sedikit data untuk menulis strategi yang kuat dan nyaman. Semua yang diberikan kepada kami adalah empat metode untuk mengendalikan dan memposisikan pemain di lapangan. Ya, keping itu juga punya pemiliknya. Dari konstanta, pusat lapangan, penjaga gawang dan area gawang dapat diakses. Terima kasih untuk ini, tetapi bagi kami tampaknya daftar nilai berikut ini hanya perlu. Kami baru saja kruk mereka!
- Kecepatan pemain (setiap peran memiliki kecepatannya sendiri), pucks;
- Informasi tentang memperlambat keping;
- Memulai posisi pemain;
- Ukuran pemain, pucks;
- Di webinar, pengembang mengatakan dengan jelas bahwa tidak akan ada cara untuk mendapatkan kode sumber server. Tentang beberapa pengepak, dikatakan bahwa .exe akan terpeleset. Kata "kebingungan" tidak muncul, tetapi mengisyaratkan. Faktanya, kami mendapatkan .jar, yang terurai dalam beberapa detik dan tidak hanya konstanta dan logika dengan fisika permainan yang tidak dimiliki oleh para peserta, tetapi juga kode sumber mereka untuk bot tingkat 3 yang bermain melawan kami. Sayangnya, saya menyadari hal ini pada saat saya tiba di rumah, dan mendengar tentang dekompilasi setelah kontes dari para peserta. Mereka mengatakan bagaimana seseorang menggunakannya selama final. Jika ini benar, maka itu sangat tidak menyenangkan. Pada saat-saat seperti itu, Anda mulai menyesal bahwa yang tepat adalah segalanya.
Tetapi dalam kasus ini, itu tidak terlalu jujur (Alexander Polishchuk boba-alex ).
Mereka melakukannya dengan baik, karena tidak ada larangan dalam peraturan, tetapi mereka memutuskan untuk tidak melalui obfuscator, jadi itu adalah bagian dari Olimpiade (Maxim Pyankov maxzxwd ).

- Pemain hoki bisa menghilang secara acak dari lapangan dan tidak muncul sampai akhir pertandingan. Anda bisa mendorong pemain ke area gawang.
- Saat memanggil metode move (), pemain hoki bisa saja berbalik ke arah yang salah. Karena itu, ini bisa menjadi seperti "moonwalk".
- Metode turn () menyebarkan pemain yang terlihat lebih lambat daripada metode move () ke titik tertentu (ada belokan otomatis ke arah yang benar). Ini terjadi, sebagai suatu peraturan, dalam konflik dengan pemain hoki lainnya. Perbandingan dua metode:
- Sudut refleksi buruk. Kecepatan tinggi setelah memantul ke samping (video melambat 4 kali). Mesin cuci tidak perlu, meskipun dia ada di gawang.
Sebagai perbandingan, contoh lulus pada sudut kanan, di mana semuanya bagus dengan kecepatan dan ada perlambatan.
- Penyerang tim musuh berdiri lebih dekat ke tengah lapangan dan segera mencegat keping di awal putaran (keping yang tidak di tengah tekstur lapangan juga normal).

- Pembatasan "kiper hanya bisa mencapai tengah lapangan dari gawang" hanya berlaku untuk tim kami, tidak ada aturan seperti itu untuk musuh.
- Agar pemain hoki dapat melakukan tindakan apa pun, Anda harus terlebih dahulu menerapkan metode move () ke salah satu dari mereka;
- Penyelenggara dalam kode strategi meninggalkan batas waktu, mempengaruhi frekuensi menerima data baru. Jika Anda hanya menghapus kode ini, semuanya membeku. Banyak yang tidak mengerti tujuannya, dan tidak ada penjelasan dari panitia. Dalam aturan juga, bagian kode ini tidak muncul. Banyak dari mereka duduk dalam genangan air.
- Sejumlah besar peserta memiliki masalah dalam membangun dan mengubah tingkat strategi (ternyata, tidak banyak orang yang tahu cara bekerja dengan maven'om).
- Di webinar, panitia mengatakan bahwa Java akan menggunakan versi 8, tetapi pada akhirnya, proyek tersebut membutuhkan minimum Java 11.
- Anna: setelah saya duduk di komputer yang berfungsi, ada masalah dengan build karena spasi tambahan dalam kode yang merusak nama variabel. Tidak kritis, tetapi tidak terlalu baik.
- Pada beberapa komputer, awalnya tidak ada file tugas atau Internet, dan dependensi dimuat untuk waktu yang lama.
- Ada lebih banyak peserta dari yang diharapkan. Itu terjadi karena beberapa jenis tambahan. Oleh karena itu, seseorang ~ 13 mencari-cari komputer (beberapa mengeluarkan laptop mereka) dan memulai proyek dari awal.
- Makan siang tidak diatur secara ketat. Mereka tidak memberikan waktu tertentu untuk makan, mereka tidak menutup audiensi. Orang yang kelaparan mendapat satu jam ekstra untuk dijual.
- Di atas, dalam uraian kontes, ada subjudul dengan kriteria evaluasi. Masalah mereka adalah apa yang dikatakan tentang poin-poin itu, tetapi tidak ditulis berapa banyak dan untuk apa. Sebagai hasilnya, kami mendapatkan opacity dan kurangnya pemahaman umum tentang apa yang harus dilakukan untuk menang.
Mungkin akan sulit untuk membandingkan peserta yang mendekati level, karena tidak ada penugasan poin yang jelas untuk fitur, hanya ada daftar. Peserta dapat menerapkan fitur yang berbeda, tetapi dari semua yang sama itu perlu untuk membandingkan entah bagaimana (Romawi).
Kesimpulan
Kesimpulan
Secara umum, jika Anda berhenti menganggap finale terlalu serius, itu menyenangkan, menarik, dan sangat lengket. Ya, saya harus menghabiskan waktu tidak menulis strategi, tetapi untuk mengatasi bug pengembang. Tetapi ketika Anda beradaptasi dan mulai bermain sesuai aturan mereka, Anda bahkan mulai mendapatkan kesenangan dari prosesnya. Tentu saja, saya ingin para pengembang mengambil pendekatan yang lebih bertanggung jawab untuk tugas ini dan menyelesaikan masalah ini tanpa menyediakan bahan baku yang belum selesai kepada para peserta akhir.
Juga patut dicatat bahwa para pemenang final ini adalah orang-orang hebat: dalam kondisi yang sulit dan tak terduga, mereka dapat berkumpul, memikirkan semuanya dan mengeluarkan solusi berkualitas tinggi. Menghormati anak laki-laki seperti itu.
Ucapan Terima Kasih
Pertama-tama, saya ingin mengucapkan terima kasih kepada para peserta yang membantu dalam menulis artikel dan setuju untuk menjawab pertanyaan kami. Sayangnya, karena perubahan arah, banyak material tidak diperlukan.
Terima kasih kepada Anna (
odrus ), Leo (
zadamantiy ), Alexander (
boba-alex ), Maxim (
maxzxwd ), Ivan, Roman, Anna, Donat, Alexander.
Saya juga ingin mengucapkan terima kasih kepada penyelenggara kontes IT-Planet itu sendiri, penyelenggara kontes pemrograman SimbirSoft Java final, dan terutama pengembang Edward, yang hadir di final dan membantu peserta dengan masalah pembangunan, dapat mengklarifikasi saat-saat tidak jelas dalam logika permainan.
Terima kasih atas kenyataan bahwa kompetisi tidak menendang sama sekali, seperti yang mereka lakukan dengan sisharp (Alexander).
Gagasan final itu bagus, babak kualifikasi juga (Ivan).
PS
Saat menulis artikel, foto dari kontes dan protokol tiba, yang berarti bahwa sekarang kita dapat mengumumkan tempat kita!
Ilya paling banyak berkokok - 28-32 dari 33
Anna - 16
Leo - 14
Terima kasih telah membaca hingga di sini!