Banyak, seperti saya, suka simulasi sepakbola dan banyak yang kecanduan pemrograman. Suatu kali, pada tahun 2004, setelah bermain cukup banyak di FIFU, saya pikir akan menyenangkan untuk menggabungkan dua hobi saya dalam satu permainan di mana para pemain akan dikontrol bukan dengan tangan, tetapi dengan skrip yang ditulis untuk mereka. Semacam
permainan untuk programmer , ala "RoboCup Simulation Soccer", hanya dengan cara mereka sendiri. Saya waktu itu adalah seorang programmer pemula dan sudah menulis beberapa permainan sederhana, tetapi saya tidak dapat sepenuhnya mewujudkan ide saya, karena saya tidak tahu bagaimana cara menulis juru bahasa yang cocok untuk bahasa pemrograman pemain. Ada lebih banyak permainan untuk programmer sekarang, tetapi saya tidak menemukan satu yang saya inginkan, dan setelah bertahun-tahun dan banyak kode tertulis, saya memutuskan untuk kembali ke ide lama saya.
Permainan ternyata seperti yang saya inginkan -
funcball.com .
- Untuk masing-masing dari 4 pemain, kode ditulis dari kondisi dan tindakan, yang dilakukan setiap 50 ms.
- Setiap pemain hanya mengontrol dirinya sendiri dan tidak memiliki akses ke memori orang lain, tetapi dapat memberi mereka sinyal. Memori diimplementasikan oleh flag.
- Semua pemain bergerak dengan kecepatan konstan yang sama, tetapi pemain dengan bola sedikit lebih lambat. Tidak ada penjaga gawang.
- Kode pemain dieksekusi secara acak. Kode yang memperkenalkan bola dari tengah dilakukan terlebih dahulu.
- Kecepatan dan durasi permainan bisa diubah. Dimungkinkan untuk merekam pertandingan.
- Saya mencoba membuat bahasa sejelas mungkin untuk pemula. Menulis fungsi Anda tidak diperlukan, karena built-in memungkinkan Anda memprogram hampir semua perilaku pemain.
- Dimungkinkan untuk bersaing dengan tim lain di situs web permainan.
Sintaks bahasa tradisional:

Ada bentuk penulisan tanpa tanda kurung, lebih umum untuk non-programmer:

Ini adalah contoh lain:

Dalam hal ini, diperiksa bahwa jika bola tidak dengan pemain ketiga, maka jalankan ke kuadrat ke-10 lapangan. Simbol dolar keluar dari skrip.
Nesting didukung dan didorong:

Dalam contoh ini, ada kondisi "player3_opened". Ini adalah fungsi dengan dimasukkannya argumen (3 - pemain nomor) dalam nama, yang menurut saya dapat dimengerti dan dibaca.
Makro yang disebut dapat digunakan dalam kode, alih-alih nilai terkait diganti pada saat runtime. Contoh operan saat pindah ke pemain 4:

[X4 + 50] adalah koordinat X pemain 4 bertambah 50, dan [Y4] adalah koordinat Y-nya. Sebelum menjalankan perintah ini, makro dalam tanda kurung siku akan diganti dengan nilai tertentu, dan itu akan terlihat, misalnya, seperti ini: send_ball: 254.190.
Macro dapat menggunakan fungsi makro bawaan. Contoh, jika jarak dari pemain ke gawang lawan kurang dari 150 piksel, lalu tekan ke gawang:

X dan Y akan digantikan oleh koordinat pemain, dan D (X, Y, 559.188) akan digantikan oleh jarak yang dihitung dari titik ini ke titik dengan koordinat 559.188 (koordinat tujuan). Jika kurang dari 150, maka makro akan diganti dengan Benar (Benar), dan jika tidak, maka dengan Salah (Salah), dan itu akan berubah: Jika (Benar) {beat_on_ ternyata}.
Saya memutuskan untuk meninggalkan lapangan dalam bentuk horizontal yang biasa. Asal adalah standar - sudut kiri atas. Saat memprogram para pemain, kita harus mengasumsikan bahwa mereka mulai di bagian kiri lapangan. Jumlah pemain mereka 1-4, dan yang lainnya 5-8. Saat bermain di sebelah kanan, semua koordinat, angka kuadrat, sudut, dan jumlah pemain tercermin, mis. tim akan bermain persis sama seperti di babak kiri.
Editor memungkinkan Anda untuk tidak menulis semua kode dengan tangan Anda, tetapi untuk memasukkan fungsi yang diperlukan dengan mengklik. Ada bantuan untuk setiap fungsi.

Ketika tim sudah siap, itu dapat diunggah ke server (dilakukan dari editor di dalam game). Setelah itu, dia akan berpartisipasi di
musim reguler. Semua tim yang dimuat akan bermain di antara mereka sendiri, dan hasil serta catatan pertandingan akan dipublikasikan di situs. Seberapa sering kejuaraan akan tergantung pada minat para peserta. Sementara satu set tim untuk kejuaraan pertama.
Di situs ini Anda juga dapat memesan pertandingan kapan saja dengan tim yang dipilih. Tim segera dikirim secara otomatis ke server terpisah, tempat pertandingan dimainkan, dan catatan mereka dikirim kembali, yang kemudian dapat Anda unduh dan tonton.
Jadi, saya mengundang semua orang untuk
bermain ! Saya pikir ada banyak orang yang mungkin tertarik dengan proyek semacam itu, dan saya harap artikel ini akan membantu menemukannya.