Permainan petualangan yang dikembangkan menggunakan vue.js;

git clone https://github.com/bastarder/Endless.git
cd Endless
npm install
npm run devJika Anda seperti saya, seorang siswa, seperti pengembangan front-end, menderita proyek yang tidak berlatih, atau Anda sudah menjadi bidikan besar, Anda mungkin juga menyelesaikan permainan sekecil itu dengan saya. Sistem tempur paling kompleks dalam game ini pada dasarnya telah selesai, dan ada beberapa fungsi yang relatif mudah tersisa untuk memberi Anda latihan yang baik.
Ini adalah permainan petualangan sederhana, dan saya juga berharap untuk mendapatkan latihan yang lebih baik selama proses penulisan;
Saya benar -benar tidak pandai desain data dan desain UI. Jika Anda merasa bahwa Anda bersedia membantu saat Anda bebas, Anda dapat menghubungi saya;
QQ:85257684 , Wechat: I85257
Sistem tempur dalam permainan menggunakan mode技能冷却, mengirimkan satu keterampilan ke satu target pada satu waktu, dan menghitung efek dari satu tindakan sebagai logika tempur.
Pertama -tama, logika umum: (fight.js)
Ketika技能被释放, akan diberikan prioritas untuk memasukkan metode ini. Metode ini menerima 3 parameter,技能对象,攻击方, dan被攻击方. Anda dapat menyesuaikannya berdasarkan ketiga pihak ini untuk menentukan apakah keterampilan ini dapat dirilis;
Ketika keterampilan bertekad untuk dapat berhasil dirilis, keterampilan akan memasuki cooldown;
Ekstrak keadaan type : 1 dari penyerang, dan ekstrak keadaan type : 2 dari penyerang;
type : 1 adalah semua negara bagian yang dapat memengaruhi keterampilan ini, dan harus dibuat sesuai dengan aturan ini ketika menyesuaikan negara, jika tidak, ia tidak akan dikenali;
type : 2 adalah semua negara yang dapat mempengaruhi perubahan yang disebabkan oleh musuh dengan keterampilan ini, dan harus dibuat sesuai dengan aturan ini ketika menyesuaikan negara, jika tidak, ia tidak akan dikenali;
Mengekstrak dan menggabungkan peristiwa dalam keterampilan dan objek negara, mengurutkan berdasarkan prioritas;
Objek tindakan keterampilan dihitung dari semua negara bagian dan efek aksi keterampilan dan diurutkan sesuai dengan bobot;
Aturan untuk bobot sementara
1-10 Lapisan Tindakan, nilai bobot perlu didefinisikan dalam kisaran ini untuk peristiwa yang terkait dengan prasyarat seperti暴击kritis,命中,闪避dll.;11-89 Lapisan normal, efek biasa, seperti kerusakan yang disebabkan oleh keterampilan, penambahan status, penghapusan, pembaruan, dll., Sebagian besar dari mereka berada di lapisan normal;>90 Di level 90 , hasil akhir dari keterampilan ini di bawah semua bonus yang dapat dikenali (seperti menyebabkan kerusakan, memulihkan kesehatan, dll.). Jika status Anda perlu menyebabkan最终加成, seperti peningkatan 50% dalam kerusakan akhir, maka peristiwa ini harus ditentukan pada level ke -90, setelah hasil perhitungan ditentukan;9999 , semua bobot tidak boleh melebihi 9999. Saat menghitung lapisan ini, objek tindakan akan dikonversi menjadi parameter yang dapat dieksekusi secara langsung oleh antarmuka unit dan tidak akan diubah;Setelah objek tindakan dihasilkan, tentukan apakah serangan itu valid (seperti yang harus dimenangkan, Miss, dll. PS: Must-win akan lebih disukai lebih dari 100%miss);
Setelah mengkonfirmasi bahwa itu valid, objek tindakan akan diproksi kepada攻击者dan被攻击者untuk berurusan dengan;
Pada titik ini, keterampilan sepenuhnya dirilis, dan setiap keterampilan dirilis adalah 1s , yang berarti bahwa setelah melepaskan keterampilan, semua keterampilan akan menerima cooldown 1 detik (jika keterampilan cooldown waktu kurang dari 1 detik, itu akan dipaksa untuk meningkat menjadi 1 detik);
Rilis keterampilan berakhir. Jika salah satu partai penyerang dan partai yang diserang mati, ia kembali salah
Perhitungan konsumsi
Rumus yang saat ini digunakan adalah: (level * jumlah dasar) * (Level Kekuatan + 1) * Parameter Grade
Perhitungan peluang
Probabilitas ditetapkan: [1, 1, 1, 0,95, 0,9, 0,8, 0,75, 0,62, 0,54, 0,41, 0,33, 0,28, 0,2, 0,17, 0,13, 0,1, 0,04, 0,03, 0,01, 0,01]
Perhitungan amplitudo atribut
Memproses setelah kegagalan penguatan
Proses Umum: Menilai prasyarat -> menilai probabilitas penguatan -> menghitung ulang atribut
Di peta, kita selalu dapat memicu peristiwa untuk mendapatkan efek spesifik. Saat ini ada dua acara bawaan:
Acara Pertempuran : Ketika pahlawan memasuki kisi acara ini, ia akan menggunakan objek acara untuk membuat acara pertempuran dan melompat ke antarmuka pertempuran. Ketika pertempuran selesai, dia akan kembali ke peta;
Acara Dialog : Ketika pahlawan memasuki kisi acara ini, ia akan menggunakan objek acara untuk membuat acara dialog, dan memiliki beberapa interaksi dialog dengan pahlawan, acara cabang, pertukaran item, dll.;
Aturan Definisi Acara:
1. 事件将在判定允许被移动后,直接执行;
2. 在执行阶段可捕获的参数有: 当前格子对象,目标格子对象,英雄对象
3. 事件必须为一个可执行的函数;
4. 详细可以参考内置事件(event-class.js)
Di sini, kami mengutip contoh untuk menjelaskan aturan definisi objek keterampilan;
Data (Skill-Data.js, State-Data.js), semua formulir string akan dikonversi menjadi fungsi yang dapat dieksekusi战斗技能释放,计算行动对象时;
contoh
{
id: 1000002,
name: '净化',
dsc : '净化中毒效果~',
label : ['测试2','伤害2'],
defaultTime : 3000,
restrict : [
"[attacker]{$mp} >= {60}",
"[attacker]{$hp} <= {250}",
"[attacker]{$skills} nothas {1000003,1000001}",
"[attacker]{$status} has {2000001}",
"[skill]{coolTime} > {0}",
function(skill, attacker, enemy){
return true;
}
],
eventList : [
`[1]enemy@changeHp@attacker.$atk`,
`[2]attacker@changeHp@2`,
`[3]
action@{action.state.isCritical === true};
attacker@{attacker.$hp > (attacker.$hp * 0.5)}
#
enemy@changeState@[{ id: 2000001, state: "ADD" }];
enemy@changeHp@attacker.$atk
`
,
`[4]action@{action.state.isCritical = true}`,
],
// 当为状态时还可以添加下面2个属性;
stateEvent : function(hero) {
var self = this;
var duration = 5;
var per = 1;
var current = 1;
self.stateEventTimer = setInterval(function(){
hero.changeHp(-30);
current +=1;
if(current > 5){
clearInterval(self.stateEventTimer);
hero.removeList('$status',self);
}
}, per * 1000);
this.actived = true;
},
powerUp : {
$maxHp : [0,0,0,0],
},
},
| kunci | nilai | DSC |
|---|---|---|
| pengenal | Nomor | Identifikasi unik dari suatu keterampilan |
| nama | Rangkaian | Nama keterampilan |
| label | [Rangkaian] | Tag keterampilan |
| waktu default | Nomor | Waktu cooldown keterampilan, unit milidetik |
| membatasi | [String atau Fungsi] | Prasyarat untuk rilis keterampilan. Saat mem -parsing sebagai fungsi, ia dapat mengakses 3 parameter,技能,攻击者, dan被攻击者. Ketika fungsi kembali benar, aturan ini dilewati. Aturan Resolusi String: [对象]{属性名1} 标识符{值} , Supports Identifier > < >= <= nothas has , nilai akhir dari ekspresi akan dinilai benar dan salah |
| daftar acara | [String atau Fungsi] | Daftar acara dapat berupa fungsi, yang menerima 3 parameter,行动对象, penyerang,攻击者,被攻击者, aturan parsing bentuk string [权重]参数名@{前置条件语句}#参数名@事件@事件参数, beberapa item harus digunakan ; terpisah, dan entri akhir tidak perlu menambahkan pemisah |
| StateEvent | fungsi | Keadaan kontinu, fungsi ini akan dieksekusi ketika suatu negara ditambahkan ke objek. Dalam fungsi ini, unit yang ditindaklanjuti dapat diakses dan beberapa pemrosesan dilakukan. |
| powerup | obyek | Peningkatan atribut yang dibawa oleh keadaan, analisis nilai array, [值, 类型: 0:基础值1:基础百分2:高级值3:高级百分] , Formula Perhitungan Atribut ((默认+ 基础值) * (1 + 基础百分) + 高级值) * (1 + 高级百分) |
Selamat, Anda sekarang dapat menciptakan keterampilan Anda sendiri
// 装备
{
id: 30000012,
name: '精致的铁剑',
level: 1,
grade: 1,
equipType : 0,
label: [
'武器'
],
intensify : 1,
intPowerUp : {
$atk: 123
},
equip : {
$def: 2,
$atk: 15,
$maxHp : 5,
$maxMp : 5,
},
dsc : '用野草编制的手镯'
}
// 物品
{
id: 3000001,
name: '野草',
pile : true,
price : 10,
use : {
defaultTime : 1000,
restrict :[
function(){
return this.$hp > 500;
}
],
effect :[
function(){
this.changeHp(30);
}
]
},
label : [
'材料'
],
dsc : '很常见的东西,或许能用来做一些东西'
},
| kunci | nilai | DSC |
|---|---|---|
| tingkat | Nomor | Tingkat peralatan |
| nilai | Nomor | Tingkat peralatan白0 ,绿1 ,蓝2 ,紫3 ,橙4 |
| EquipType | Nomor | Jenis Peralatan武器0 ,护肩1 ,鞋子2 ,腰带3 ,上衣4 ,绑腿5 ,戒指6 ,项链7 ,手镯8 , |
| melengkapi | obyek | Nilai parameter atribut peralatan sama dengan powerup状态. |
| Mengintensifkan | Nomor | Tingkat penguatan |
| intpowerup | Obyek | Penggemar yang dibawa oleh peningkatannya adalah $atk , dan sisa baju besi adalah $dmgDown (Pengurangan Kerusakan Persen) |
| tumpukan | Boolean | Apakah mungkin untuk melampaui |
| harga | Nomor | Nilai item |
| Menggunakan | obyek | Efek item dapat digunakan defaultTime :冷却时间, restrict 前置条件列表,接受函数为单个条件,this指向使用者, effect 造成的效果列表,接受函数为单个事件,this指向使用者 |
| Bagaimana dengan itu? Pernahkah Anda mengetahui bahwa Anda masih tidak dapat membuat peralatan sendiri ~ tidak masalah, itu karena saya tidak mengekspresikannya dengan baik ~ |