Saya ingin membuat parser aturan umum untuk sistem RPG gaya pena dan kertas. Suatu aturan biasanya melibatkan 1 hingga N entitas 1 hingga N peran dadu dan menghitung nilai berdasarkan beberapa atribut entitas.
Sebagai contoh:
Pemain memiliki STR 18, senjatanya yang dilengkapi saat ini memberinya bonus +1 STR tetapi malus dari DEX -1. Ia menyerang entitas monster dan logika game sekarang diperlukan untuk menjalankan serangkaian aturan atau tindakan:
Pemain melempar dadu, jika ia mendapatkan misalnya 8 atau lebih (nilai serangan dasar yang ia harus lewati adalah salah satu atribut dasarnya!) Serangannya berhasil. Monster itu kemudian melempar dadu untuk menghitung jika serangan melewati baju besinya. Jika ya kerusakan diambil jika bukan serangan itu diblokir.
Selain itu aturan matematika sederhana juga dapat memiliki kendala seperti menerapkan hanya untuk kelas pengguna tertentu (misalnya prajurit vs penyihir) atau atribut lainnya. Jadi ini tidak hanya terbatas pada operasi matematika.
Jika Anda terbiasa dengan sistem RPG seperti Dungeon dan Dragons, Anda akan tahu apa yang saya lakukan.
Masalah saya sekarang adalah bahwa saya tidak memiliki petunjuk bagaimana tepatnya membangun ini dengan cara terbaik. Saya ingin orang-orang dapat mengatur segala jenis aturan dan kemudian hanya melakukan tindakan seperti memilih pemain dan monster dan menjalankan tindakan (seperangkat aturan seperti serangan).
Saya kurang meminta bantuan dengan sisi database tetapi lebih lanjut tentang cara membuat struktur dan parser agar aturan saya fleksibel. Omong-omong, pilihan untuk ini adalah php.
Edit I:
Biarkan saya memperbaiki tujuan saya: Saya ingin membuat antarmuka yang ramah pengguna (yang tidak mengharuskan seseorang untuk belajar bahasa pemrograman) untuk membangun aturan permainan yang lebih atau kurang kompleks. Alasan sederhananya: Penggunaan pribadi untuk tidak perlu mengingat semua aturan sepanjang waktu, kita tidak bermain sesering itu dan merupakan penghenti untuk melihatnya setiap kali. Juga: Sepertinya tugas yang menyenangkan untuk dilakukan dan belajar sesuatu. :)
Apa yang saya coba sejauh ini: Hanya memikirkan sebuah konsep daripada membuang-buang waktu membangun arsitektur yang salah. Sejauh ini saya memiliki ide untuk memungkinkan pengguna untuk membuat atribut sebanyak yang mereka inginkan dan kemudian menetapkan atribut sebanyak yang mereka inginkan untuk semua jenis entitas. Entitas dapat menjadi pemain, monster, item, apa saja. Sekarang ketika menghitung sesuatu data tersedia untuk parser aturan sehingga aturan parser harus dapat melakukan hal-hal seperti jika Player.base_attack + dadu (1x6)> Monster.armor_check lalu Monster.health - 1; Pertanyaannya di sini adalah tentang cara membuat parser itu.
Edit II:
Berikut adalah contoh nilai yang cukup mendasar tetapi untuk menghitungnya dengan benar ada banyak hal dan variabel yang perlu dipertimbangkan:
Bonus Serangan Dasar (Jangka) Bonus serangan dasar Anda (biasanya disebut sebagai BAB oleh komunitas d20) adalah bonus serangan gulungan yang berasal dari kelas dan level karakter. Bonus serangan dasar meningkat pada tingkat yang berbeda untuk kelas karakter yang berbeda. Seorang karakter mendapat serangan kedua per putaran ketika bonus serangan dasarnya mencapai +6, yang ketiga dengan bonus serangan dasar +11 atau lebih tinggi, dan yang keempat dengan bonus serangan dasar +16 atau lebih tinggi. Bonus serangan basis diperoleh dari kelas yang berbeda, seperti untuk karakter multikelas, stack. Bonus serangan basis karakter tidak memberikan serangan lagi setelah mencapai +16, tidak boleh kurang dari +0, dan tidak meningkat karena level kelas setelah level karakter mencapai 20. Bonus serangan dasar minimum diperlukan untuk prestasi tertentu.
Anda dapat membacanya di sini http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term) termasuk tautan ke kelas dan prestasi yang memiliki lagi aturan mereka sendiri untuk menghitung nilai yang diperlukan untuk serangan dasar.
Saya mulai berpikir bahwa menjaganya se generik mungkin juga akan membuat sulit untuk menyelesaikan aturan parser yang baik.
Func
yang menginisialisasi status program berdasarkan argumen sebagai kunci ke kamus. Terkejut saya tidak pernah menemukan posting itu dari Yegge sebelumnya, sangat keren, terima kasih telah menunjukkannya.