เกมผจญภัยที่พัฒนาขึ้นโดยใช้ vue.js;

git clone https://github.com/bastarder/Endless.git
cd Endless
npm install
npm run devหากคุณเป็นเหมือนฉันนักเรียนเช่นการพัฒนาส่วนหน้าต้องทนทุกข์ทรมานจากโครงการที่ไม่ได้ฝึกฝนหรือคุณเป็นช็อตใหญ่อยู่แล้วคุณอาจเล่นเกมเล็ก ๆ กับฉันได้ ระบบการต่อสู้ที่ซับซ้อนที่สุดในเกมนี้เสร็จสมบูรณ์โดยทั่วไปและมีฟังก์ชั่นที่ค่อนข้างง่ายที่จะให้คุณออกกำลังกายที่ดี
นี่เป็นเกมผจญภัยที่เรียบง่ายและฉันก็หวังว่าจะออกกำลังกายได้ดีขึ้นในระหว่างกระบวนการเขียน
ฉันไม่ค่อยดีในการออกแบบข้อมูลและการออกแบบ UI หากคุณรู้สึกว่าคุณยินดีที่จะช่วยเหลือเมื่อคุณว่างคุณสามารถติดต่อฉันได้
QQ:85257684 , Wechat: I85257
ระบบการต่อสู้ในเกมใช้โหมด技能冷却ส่งหนึ่งทักษะไปยังหนึ่งเป้าหมายในแต่ละครั้งและการคำนวณผลกระทบของการกระทำเดียวเป็นตรรกะการต่อสู้
ก่อนอื่นตรรกะทั่วไป: (fight.js)
เมื่อ技能被释放จะได้รับความสำคัญในการป้อนวิธีนี้ วิธีนี้ยอมรับพารามิเตอร์ 3 ตัว,技能对象,攻击方และ被攻击方คุณสามารถปรับแต่งได้ตามสามฝ่ายเหล่านี้เพื่อพิจารณาว่าทักษะนี้สามารถเปิดตัวได้หรือไม่
เมื่อทักษะถูกกำหนดให้สามารถเปิดตัวได้สำเร็จทักษะจะเข้าสู่คูลดาวน์
แยกสถานะของ type : 1 จากผู้โจมตีและแยกสถานะของ type : 2 จากผู้โจมตี;
type : 1 คือสถานะทั้งหมดที่สามารถส่งผลกระทบต่อทักษะนี้และควรสร้างขึ้นตามกฎนี้เมื่อปรับแต่งสถานะไม่เช่นนั้นจะไม่ได้รับการยอมรับ
type : 2 คือสถานะทั้งหมดที่สามารถส่งผลกระทบต่อการเปลี่ยนแปลงที่เกิดขึ้นกับศัตรูด้วยทักษะนี้และควรสร้างขึ้นตามกฎนี้เมื่อปรับแต่งสถานะไม่เช่นนั้นจะไม่ได้รับการยอมรับ
แยกและผสานเหตุการณ์ในทักษะและวัตถุรัฐเรียงลำดับตามลำดับความสำคัญ;
วัตถุแอ็คชั่นทักษะคำนวณจากทุกรัฐและเอฟเฟกต์การดำเนินการทักษะและจัดเรียงตามน้ำหนัก
กฎสำหรับน้ำหนักเบื้องต้น
1-10 เลเยอร์แอ็คชั่นต้องกำหนดค่าน้ำหนักในช่วงนี้สำหรับเหตุการณ์ที่เกี่ยวข้องกับเงื่อนไขเช่น暴击วิกฤต,命中,闪避ฯลฯ ;11-89 เลเยอร์ปกติเอฟเฟกต์ธรรมดาเช่นความเสียหายที่เกิดจากทักษะการเพิ่มสถานะการกำจัดการปรับปรุง ฯลฯ ส่วนใหญ่อยู่ในชั้นปกติ>90 ในระดับ 90 ผลสุดท้ายของทักษะนี้ภายใต้โบนัสที่เป็นที่รู้จักทั้งหมด (เช่นทำให้เกิดความเสียหายการฟื้นตัวสุขภาพ ฯลฯ ) หากสถานะของคุณจำเป็นต้องทำให้最终加成เช่นเพิ่มขึ้น 50% ในความเสียหายขั้นสุดท้ายเหตุการณ์นี้จะต้องกำหนดในระดับ 90 หลังจากกำหนดผลการคำนวณ9999 น้ำหนักทั้งหมดไม่ควรเกิน 9999 เมื่อคำนวณเลเยอร์นี้วัตถุการกระทำจะถูกแปลงเป็นพารามิเตอร์ที่สามารถดำเนินการโดยตรงโดยอินเตอร์เฟส unit และจะไม่เปลี่ยนแปลง;หลังจากสร้างวัตถุแอ็คชั่นแล้วให้พิจารณาว่าการโจมตีนั้นถูกต้องหรือไม่ (เช่นต้องชนะ, พลาด, ฯลฯ PS: ต้องชนะจะต้องได้รับมากกว่า 100%MISS);
หลังจากยืนยันว่ามันถูกต้องวัตถุประสงค์ของการกระทำจะถูกส่งไปยัง攻击者และ被攻击者ที่จะจัดการกับ;
ณ จุดนี้ทักษะจะถูกปล่อยออกมาอย่างเต็มที่และแต่ละทักษะจะถูกปล่อยออกมาคือ 1s ซึ่งหมายความว่าหลังจากปล่อยทักษะทักษะทั้งหมดจะได้รับคูลดาวน์ 1 วินาที (ถ้าเวลาคูลดาวน์ทักษะน้อยกว่า 1 วินาทีมันจะถูกบังคับให้เพิ่มเป็น 1 วินาที);
การเปิดตัวทักษะสิ้นสุดลง หากหนึ่งในพรรคที่ถูกโจมตีและพรรคที่ถูกโจมตีจะตายมันจะกลับมาเป็นเท็จ
การคำนวณการบริโภค
สูตรที่ใช้ในปัจจุบันคือ: (ระดับพื้นฐาน * จำนวนฐาน) * (ระดับความแข็งแรง + 1) * พารามิเตอร์เกรด
การคำนวณโอกาส
ความน่าจะเป็นได้รับการแก้ไข: [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]
การคำนวณแอ็ตทริบิวต์แอมพลิจูด
การประมวลผลหลังจากความล้มเหลวของการเสริมสร้างความเข้มแข็ง
กระบวนการทั่วไป: ตัดสินเงื่อนไขเบื้องต้น -> ตัดสินความน่าจะเป็นของการเสริมสร้างความเข้มแข็ง -> คำนวณแอตทริบิวต์ใหม่
ในแผนที่เราสามารถกระตุ้นเหตุการณ์เพื่อให้ได้เอฟเฟกต์เฉพาะ ขณะนี้มีสองเหตุการณ์ในตัว:
เหตุการณ์การต่อสู้ : เมื่อฮีโร่เข้าสู่กริดเหตุการณ์นี้เขาจะใช้วัตถุเหตุการณ์เพื่อสร้างเหตุการณ์การต่อสู้และข้ามไปยังอินเทอร์เฟซการต่อสู้ เมื่อการต่อสู้สิ้นสุดลงเขาจะกลับไปที่แผนที่
เหตุการณ์บทสนทนา : เมื่อฮีโร่เข้าสู่กริดเหตุการณ์นี้เขาจะใช้วัตถุเหตุการณ์เพื่อสร้างเหตุการณ์บทสนทนาและมีปฏิสัมพันธ์กับบทสนทนากับฮีโร่กิจกรรมสาขาการแลกเปลี่ยนรายการ ฯลฯ ;
กฎการกำหนดเหตุการณ์:
1. 事件将在判定允许被移动后,直接执行;
2. 在执行阶段可捕获的参数有: 当前格子对象,目标格子对象,英雄对象
3. 事件必须为一个可执行的函数;
4. 详细可以参考内置事件(event-class.js)
ที่นี่เราอ้างตัวอย่างเพื่ออธิบายกฎนิยามของวัตถุทักษะ
ข้อมูล (skill-data.js, state-data.js), ฟอร์มสตริงทั้งหมดจะถูกแปลงเป็นฟังก์ชั่นการดำเนินการ战斗技能释放,计算行动对象时
ตัวอย่าง
{
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],
},
},
| สำคัญ | ค่า | DSC |
|---|---|---|
| รหัสประจำตัว | ตัวเลข | ตัวตนที่เป็นเอกลักษณ์ของทักษะ |
| ชื่อ | สาย | ชื่อของทักษะ |
| ฉลาก | [สตริง] | แท็กทักษะ |
| เวลาเริ่มต้น | ตัวเลข | เวลาคูลดาวน์ทักษะหน่วยมิลลิวินาที |
| จำกัด | [สตริงหรือฟังก์ชั่น] | เงื่อนไขเบื้องต้นสำหรับการเปิดตัวทักษะ เมื่อแยกวิเคราะห์เป็นฟังก์ชั่นมันสามารถเข้าถึงพารามิเตอร์ 3技能攻击者และ被攻击者เมื่อฟังก์ชั่นส่งคืนจริงกฎนี้จะถูกส่งผ่าน กฎความละเอียดของสตริง: [对象]{属性名1} 标识符{值} , ตัวระบุสนับสนุน > < >= <= nothas has ค่าสุดท้ายของนิพจน์จะถูกตัดสินว่าเป็นจริงและเท็จ |
| รายการ | [สตริงหรือฟังก์ชั่น] | รายการเหตุการณ์สามารถเป็นฟังก์ชั่นที่ยอมรับพารามิเตอร์ 3 ตัว,行动对象แอ็คชั่น, ผู้โจมตี,攻击者,被攻击者, กฎการแยกวิเคราะห์แบบฟอร์มสตริง [权重]参数名@{前置条件语句}#参数名@事件@事件参数ควรใช้หลายรายการ ; แยกและรายการสุดท้ายไม่จำเป็นต้องเพิ่มตัวคั่น |
| รัฐ | การทำงาน | สถานะต่อเนื่องฟังก์ชั่นนี้จะถูกดำเนินการเมื่อเพิ่มสถานะลงในวัตถุ ในฟังก์ชั่นนี้หน่วยที่ดำเนินการสามารถเข้าถึงได้และการประมวลผลบางอย่างเสร็จสิ้น |
| พลัง | วัตถุ | การปรับปรุงแอตทริบิวต์ที่นำโดยสถานะการวิเคราะห์ค่าอาร์เรย์ [值, 类型: 0:基础值1:基础百分2:高级值3:高级百分] , สูตรการคำนวณแอตทริบิวต์ ((默认+ 基础值) * (1 + 基础百分) + 高级值) * (1 + 高级百分) |
ขอแสดงความยินดีตอนนี้คุณสามารถสร้างทักษะของคุณเองได้
// 装备
{
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 : '很常见的东西,或许能用来做一些东西'
},
| สำคัญ | ค่า | DSC |
|---|---|---|
| ระดับ | ตัวเลข | ระดับอุปกรณ์ |
| ระดับ | ตัวเลข | เกรดของอุปกรณ์คือ白0 ,绿1 ,蓝2 ,紫3 ,橙4 |
| อุปกรณ์ | ตัวเลข | ประเภทอุปกรณ์ประเภท武器0 ,护肩1 ,鞋子2 ,腰带3 ,上衣4 , 4,绑腿5 ,戒指6 ,项链7 ,手镯8 , |
| ติดตั้ง | วัตถุ | ค่าของพารามิเตอร์แอตทริบิวต์ของอุปกรณ์เหมือนกับ powerup ของ状态 |
| กระชับ | ตัวเลข | ระดับความแข็งแกร่ง |
| intpowerup | วัตถุ | บัฟที่นำมาจากการปรับปรุงคือ $atk และส่วนที่เหลือของชุดเกราะคือ $dmgDown (ลดความเสียหายเปอร์เซ็นต์) |
| กอง | บูลีน | เป็นไปได้ไหมที่จะซ้อนทับ |
| ราคา | ตัวเลข | ค่าของรายการ |
| ใช้ | วัตถุ | ผลกระทบของรายการสามารถใช้ defaultTime :冷却时间restrict 前置条件列表,接受函数为单个条件,this指向使用者effect 造成的效果列表,接受函数为单个事件,this指向使用者 |
| แล้วล่ะ? คุณพบว่าคุณยังไม่สามารถสร้างอุปกรณ์ของคุณเองได้ ~ มันไม่สำคัญ แต่เป็นเพราะฉันไม่ได้แสดงออกมาอย่างดี ~ |