Tôi khá mới đối với toàn bộ mô hình hướng đối tượng.Đang cố gắng lập mô hình với javascript hướng đối tượng
Tôi đang cố gắng lập mô hình nhân vật trong một trò chơi nhất định, bạn có các cấp độ, lớp học khác nhau và rất nhiều lựa chọn thiết bị và như vậy.
Mục tiêu của tôi cuối cùng là tạo một "tủ quần áo" ở một số nơi mà người chơi có thể mở trang web, thử một số trang bị và xem nó ảnh hưởng như thế nào đến thông số của họ, chi phí, v.v ...
Tôi đã có các phần chính được lập trình (here), nhưng đó là tác phẩm đầu tiên của tôi với html, css và javascript và nó chỉ là một mớ hỗn độn lớn vào lúc này. Tôi muốn bắt đầu ra đúng thời gian này :)
Giả sử tôi có một đối tượng cho nhân vật mà chúng ta sẽ được mô phỏng:
var Lord = function(){
this.Level = 1;
this.Gender = 'Male';
this.Faction = 'Knight';
this.Attack = 0;
this.Defense = 1;
this.SpellPower = 0;
this.Knowledge = 0;
this.Luck = 0;
this.Morale = 1;
this.Initiative = 0;
this.addParameter = function(Parameter, amount){
this[Parameter] += amount;
};
this.changeLevelTo = function(Level){
this.Level = Level;
};
this.changeGenderTo = function(Gender){
this.Gender = Gender;
};
this.changeFactionTo = function(Faction){
this.Faction = Faction;
//adjust default stats based on new faction
};
};
Vấn đề của tôi là thế này: Một hiệp sĩ bắt đầu với 1 Quốc phòng và 1 tinh thần, các phe phái khác nhau sẽ cung cấp cho bạn các chỉ số tăng khác nhau. Các giá trị này không thể được phân bổ lại. Một người chơi cũng nhận được một số điểm stat để chi tiêu cho các thông số khác nhau khi san lấp mặt bằng và chúng có thể được phân bổ lại.
Hơn nữa, người chơi có thể trang bị một số thiết bị cho phép tăng chỉ số và không thể tái phân bổ các chỉ số này (chỉ bằng cách bỏ chọn nó). Những gì tôi đã thực hiện trước đây là tôi đã tạo ra một loạt các mảng với chỉ số tương ứng với mỗi tham số, mỗi mảng đại diện cho tăng chỉ số mặc định từ các phe phái khác nhau, tăng tổng số từ thiết bị và thống kê trình phát được phân bổ thủ công. Sau đó tôi tổng hợp từng chỉ mục để cung cấp cho tôi một mảng thông số cuối cùng để hiển thị. Sau đó, người chơi chỉ có thể phân bổ lại các điểm trong mảng thứ 3 và không phải bất kỳ mảng nào khác.
Tôi nên thực hiện điều này bằng cách sử dụng lập trình hướng đối tượng như thế nào?
Tôi đã đọc trên một số khái niệm cơ bản (đóng gói, thừa kế, đa hình) nhưng họ là khá trừu tượng và khi tôi nhận được xuống để nó, tôi không thực sự biết khá phải làm gì: s
-
-
Responses
webstie này là khá khó để sử dụng: o
Ok, tôi sẽ cố gắng và xem những gì tôi có thể nhận được từ câu trả lời qternion của:
var Faction = function(atk, def, sp, kn, luk, mor, ini){
this.Attack = atk;
this.Defense = def;
this.SpellPower = sp;
this.Knowledge = kn;
this.Luck = luk;
this.Morale = mor;
this.Initiative = ini;
}
var Knight = new Faction(0,1,0,0,0,1,0);
var Wizard = new Faction(0,0,0,1,0,1,0);
Sau đó trên đối tượng Chúa, tôi sẽ phải
//this.Faction = 'Knight'
this.Faction = Knight
this.Defense = function(){
return this.Faction.Defense + this.someOtherClass.Defense;
}
tôi sẽ tìm cách để cải thiện trên với nguyên mẫu sử dụng http://javascript.crockford.com/prototypal.html
Cảm ơn tất cả mọi người vì tất cả những đóng góp của bạn :)
'Một hiệp sĩ bắt đầu với 1 Defense' - vì vậy thiết lập này đến 1 trong đối tượng của bạn theo nghĩa đen ... 'Defense: 0,' => ' Defense: 1, ' –
right, hang on :) – Sylin
Với tinh thần muốn tăng kỹ năng OO Javascript của bạn, bạn cũng có thể xem bài viết SO này về các chức năng tạo mẫu: http://stackoverflow.com/questions/12238103/javascript-prototype-vs-general-functions-performance-dễ đọc –