Jestem całkiem nowy w całym paradygmacie obiektowego.Próba modelowania za pomocą javascript zorientowanego obiektowo
Próbuję modelować postać w określonej grze, masz różne poziomy, klasy i wiele opcji wyposażenia i takie.
Moim celem w końcu byłoby stworzenie „kredens” jakiegoś gdzie gracze mogą otworzyć witrynę, spróbuj na niektórych wyposaża i zobaczyć jak to wpływać na swoje parametry, ile to będzie kosztować, itp
Mam już zaprogramowane główne części (here), ale to była moja pierwsza praca z html, css i javascript i jest to po prostu wielki bałagan w tej chwili. Chcę zacząć się właściwie tym razem :)
Załóżmy, że mam obiektu dla postaci, które będziemy symulacji:
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
};
};
Mój problem jest taki: Rycerz rozpoczyna się z 1 Obrona i 1 morale, różne frakcje dadzą ci różne bonusy statyczne. Wartości te nie mogą zostać ponownie przydzielone. Gracz zyskuje także kilka punktów statystycznych, które można wydać na różne parametry po wyrównywaniu, a te można ponownie przydzielić.
Co więcej, gracz może wyposażyć niektóre urządzenia, które zwiększają statystykę, a także nie można ich ponownie rozdzielić (tylko po ich usunięciu).
Co wcześniej zrobiłem to to, że stworzyłem całą masę tablic z ich indeksami odpowiadającymi każdemu z parametrów, każda tablica reprezentuje domyślne wzmocnienie statystyk z różnych frakcji, całkowitą statystykę ze sprzętu i statystyki gracza przydzielonego ręcznie. Następnie sumuję każdy z indeksów, aby podać ostateczną tablicę parametrów do wyświetlenia. Gracz może wtedy ponownie przydzielić punkty w trzeciej macierzy, a nie w innych tablicach.
W jaki sposób powinienem wdrożyć to przy użyciu programowania obiektowego?
czytałem się na niektóre z podstawowych pojęć (hermetyzacja, dziedziczenie, polimorfizm), ale są one dość abstrakcyjne i kiedy się do niego, ja naprawdę nie wiem zupełnie co robić: s
-
-
Odpowiedzi
Ten webstie jest dość trudny w użyciu: o
Ok, spróbuję i zobaczę, co mogę dostać od qternion za odpowiedź:
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);
następnie na obiekcie Lord, musiałbym
//this.Faction = 'Knight'
this.Faction = Knight
this.Defense = function(){
return this.Faction.Defense + this.someOtherClass.Defense;
}
będę chcą poprawić powyższe prototypy z użyciem http://javascript.crockford.com/prototypal.html
Dziękuję wszystkim za wszystkie Twoje uwagi :)
'Rycerz rozpoczyna się z 1 Defense' - tak ustawić na 1 w dosłownym obiektu ...' Obrona: 0, '=>' Obrona: 1, ' –
prawo, trzymaj się :) – Sylin
W duchu chęci zwiększenia swoich umiejętności OO Javascript, możesz również chcieć przyjrzeć się temu postowi SO o funkcjach prototypowania: http://stackoverflow.com/questions/12238103/javascript-prototype-vs-general-functions-performance-readability –