Saya baru di stackedange gamedev ini tetapi sebelumnya telah menggunakan matematika dan situs cs.
Jadi, saya dalam kompetisi untuk menciptakan AI untuk ular yang akan bersaing dengan empat ular lain dalam 5 menit putaran di mana aturannya sangat mirip dengan permainan ular Nokia tradisional kecuali bahwa ada lima ular, papan adalah 30x30 dan ada sejumlah kendala kecil di lapangan.
Seperti permainan Nokia, ular Anda tumbuh ketika Anda mencapai buah dan jika Anda menabrak diri sendiri, ular lain atau dinding Anda mati. Gim ini berjalan dengan jeda 30ms antara gerakan dan server mengirimkan status gim baru setiap 50 ms yang harus dianalisis oleh kode dan apa yang tidak, dan menampilkan langkah selanjutnya.
Pemenangnya adalah ular yang memiliki panjang terpanjang di setiap titik dalam permainan. Pemutus dasi ditentukan dengan membunuh.
Sejauh ini apa yang telah saya lakukan adalah menerapkan pencarian grafik A * dari setiap ular untuk menentukan apakah ular saya paling dekat dengan apel dan jika ya, itu berlaku untuk apel. Kalau tidak, saya membuat algoritma kecil yang rapi untuk menentukan area papan yang paling kosong, yang untuk ular saya, untuk mengantisipasi apel berikutnya.
Selain itu, saya memiliki beberapa pengecekan kemampuan bertahan kecil untuk memastikan ular saya tidak masuk ke dalam perangkap yang tidak bisa keluar dan jika memang macet, saya punya sesuatu untuk memberinya kesempatan yang lebih baik untuk keluar.
...
Ngomong-ngomong, saya sudah menguji ular saya di server uji dan itu cukup baik. Secara umum, strategi saya hanya mengejar apel ketika itu adalah hal yang pasti dan menemukan ruang ketika itu tidak membuatnya tumbuh lebih cepat daripada ular lain (beberapa ular melakukan hal yang sama tetapi sering hanya pergi ke tengah atau sudut) kadang-kadang menang permainan-permainan percobaan ini tetapi lebih sering dikalahkan oleh ular yang sama yang tampaknya memiliki keunggulan untuk bertahan hidup (ular saya tumbuh lebih cepat tetapi kemudian mati entah bagaimana dan ular lain ini hanya berjalan lamban dan menang dengan konsistensi.
Jadi saya bertanya-tanya tentang ide-ide yang harus ada yang mencoba dan memperbaiki ular saya. Atau mungkin ide pada pendekatan baru untuk diambil. Fungsi dan kelas saya bagus sehingga perubahan yang mungkin tampak drastis seharusnya tidak terlalu buruk. Saya mendorong semua ide.
Adakah pikiran?
Ular harus menyesuaikan strateginya dengan panjangnya saat ini.
Ular yang sangat panjang dapat menggunakan tubuhnya untuk memagari lawan. Ini berarti bahwa itu harus membuat segel dengan dinding.
Jika ular tersebut melakukan perjalanan ke timur, dengan sebuah apel di timur lautnya, ia harus melakukan perjalanan jauh ke dinding sebelum berbelok ke utara, sehingga kemungkinan rute untuk ular lain sangat terbatas.
Ular dengan kepala C ini, harus berbelok ke utara pada e9, bukan pada e8, sehingga setiap lawan di bawahnya, akan terperangkap, dan tidak dapat memakan apel apa pun yang muncul di atas garis 'e'.
Semakin besar area yang bisa Anda potong dan semakin lama Anda bisa memegangnya, semakin baik.
sumber