के साथ मॉडल करने का प्रयास कर रहा हूं, मैं पूरी ऑब्जेक्ट उन्मुख प्रतिमान के लिए बिल्कुल नया हूं।ऑब्जेक्ट उन्मुख जावास्क्रिप्ट
मैं एक निश्चित गेम में एक चरित्र को मॉडल करने की कोशिश कर रहा हूं, आपके पास विभिन्न स्तर, कक्षाएं और कई सारे उपकरण विकल्प हैं और ऐसे।
अंत में मेरा लक्ष्य, एक किसी प्रकार जहां खिलाड़ियों साइट को खोलने सकता है की "ड्रेसर" बनाने के कुछ सज्जित पर कोशिश करते हैं और देखें कि यह कैसे अपने मापदंडों को प्रभावित है, यह कितना खर्च आएगा होगा, आदि
मेरे पास पहले से ही मुख्य भाग प्रोग्राम किए गए हैं (here), लेकिन यह एचटीएमएल, सीएसएस और जावास्क्रिप्ट के साथ मेरा पहला काम था और यह फिलहाल सिर्फ एक बड़ी गड़बड़ है। मैं ठीक से इस बार शुरू करना चाहते हैं :)
मान लीजिए मैं चरित्र के लिए एक वस्तु है कि हम अनुकरण किया जाएगा: एक नाइट के साथ बाहर शुरू होता है:
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
};
};
मेरे समस्या यह है 1 रक्षा और 1 मनोबल, विभिन्न गुट आपको अलग-अलग स्टेट बूस्ट देंगे। इन मानों को पुन: आवंटित नहीं किया जा सकता है। एक खिलाड़ी को स्तर पर विभिन्न मानकों पर खर्च करने के लिए कुछ स्टेट पॉइंट प्राप्त होते हैं और इन्हें फिर से आवंटित किया जा सकता है।
इसके अलावा, एक खिलाड़ी कुछ उपकरणों को लैस कर सकता है जो स्टेट बूस्ट देते हैं, और इन्हें भी पुन: आवंटित नहीं किया जा सकता है (केवल इसे असमान करके)।
जो मैंने पहले किया है वह यह है कि मैंने प्रत्येक पैरामीटर के अनुरूप अपने सूचकांक के साथ सरणी का पूरा समूह बनाया, प्रत्येक सरणी अलग-अलग गुटों से डिफ़ॉल्ट स्टेट बूस्ट का प्रतिनिधित्व करती है, उपकरणों से कुल स्टेट बूस्ट, और मैन्युअल रूप से आवंटित खिलाड़ी आंकड़े। मैं फिर प्रदर्शित करने के लिए पैरामीटर की अंतिम सरणी देने के लिए प्रत्येक सूचकांक को जोड़ता हूं। एक खिलाड़ी फिर तीसरी सरणी में अंक को फिर से आवंटित कर सकता है, और कोई अन्य सरणी नहीं।
ऑब्जेक्ट उन्मुख प्रोग्रामिंग का उपयोग करके इसे कार्यान्वित करने के बारे में मुझे कैसे जाना चाहिए?
मैं मूलभूत अवधारणाओं (कैप्सूलीकरण, विरासत, बहुरूपता) में से कुछ पर पढ़ा है, लेकिन वे नहीं बल्कि सार कर रहे हैं और जब मैं यह करने के लिए नीचे लाने के लिए, मैं वास्तव में नहीं पता है क्या करना काफी क्या: रों
-
-
प्रतिक्रियाएँ
01 , ओ
ठीक है, मैं कोशिश करते हैं और देखते हैं मैं qternion के जवाब से क्या प्राप्त कर सकते हैं करेंगे:
यह webstie उपयोग करने के लिए काफी कठिन है
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);
तब प्रभु वस्तु पर
, मैं होता
//this.Faction = 'Knight'
this.Faction = Knight
this.Defense = function(){
return this.Faction.Defense + this.someOtherClass.Defense;
}
मैं http://javascript.crockford.com/prototypal.html
का उपयोग कर प्रोटोटाइप के साथ ऊपर में सुधार करने के लिए देख रहे होंगेआपके सभी योगदानों के लिए सभी को धन्यवाद :)
'एक नाइट 1 Defense' के साथ बाहर शुरू होता है - इसलिए आपकी वस्तु शाब्दिक में 1 के लिए सेट ...' रक्षा: 0, '=>' रक्षा: 1, ' –
दाएं, लटकाएं :) – Sylin
अपने जावास्क्रिप्ट ओओ कौशल को बढ़ाने की इच्छा रखने की भावना में, आप प्रोटोटाइप कार्यों के बारे में इस SO पोस्ट को भी देखना चाहेंगे: http://stackoverflow.com/questions/12238103/जावास्क्रिप्ट-प्रोटोटाइप-बनाम-सामान्य-कार्य-प्रदर्शन-पठनीयता –