主機(jī)網(wǎng)全新上線,買空間、服務(wù)器就上主機(jī)網(wǎng),安全有保障!CNIDC.COM
看到很多做ASP.NET開發(fā)的JS水平都很差,所以想寫一個(gè)面向?qū)ο蟮腏avaScript系列,希望對JS新手有所幫助。不知道能否堅(jiān)持下去。今天從類(非靜態(tài)類)及類的繼承開始。我用游戲中的角色(玩家,怪物)來做示例。
首先是角色類,具有基本屬性 Name,HP,PhysicalDamage和基本方法PhysicalAttack
以下為引用的內(nèi)容:
//角色 //類名:Role function Role(name, hp, pd) { this.Name = name; //屬性-名字 this.HP = hp; //屬性-生命 this.PhysicalDamage = pd; //屬性-物理攻擊力 //方法-物理攻擊(r:被攻擊目標(biāo)) this.PhysicalAttack = function(r) { alert(this.Name + " 物理攻擊 " + r.Name + "\r\n HP - " + this.PhysicalDamage); r.HP = r.HP - this.PhysicalDamage; } } var feifei = new Role("飛飛", 1000, 100);//實(shí)例化出一個(gè)人物 var rabbit = new Role("兔子", 400, 50); //實(shí)例化出一個(gè)怪物 feifei.PhysicalAttack(rabbit); //發(fā)起物理攻擊 alert("兔子當(dāng)前HP:" + rabbit.HP);
|
由于Role類不能滿足需要,我們新建兩個(gè)類Player,Monster繼承Role
以下為引用的內(nèi)容:
//普通怪物 繼承 Role function Monster(name, hp, pd) { Role.apply(this, arguments); //通過apply實(shí)現(xiàn)繼承,強(qiáng)大的apply使Monster具備了Role的所有屬性與方法,apply和call是個(gè)神奇的東西,大家有興趣自己谷歌。 } //玩家 繼承 Role function Player(name, hp, mp, pd, md, exp) { Role.apply(this, new Array(name, hp, pd)); //通過apply實(shí)現(xiàn)繼承,并傳參賦值 this.MP = mp; //屬性-魔法值 this.MagicDamage = md; //屬性-魔法攻擊力 this.Exp = exp; //屬性-經(jīng)驗(yàn)值 //方法-魔法攻擊(r:被攻擊目標(biāo)) this.MagicAttack = function(r) { if (this.MP > 9) { alert(this.Name + " 魔法攻擊 " + r.Name + "\r\n HP - " + this.PhysicalDamage + "\r\n MP - 10 , Exp + 10"); r.HP = r.HP - this.MagicDamage; this.MP -= 10; this.Exp += 10; } else alert("魔法值不夠"); }; //這里重寫 PhysicalAttack 方法,很不方便!不知道有好的方法沒??? this.PhysicalAttack = function(r) { alert(this.Name + " 物理攻擊 " + r.Name + "\r\n HP - " + this.PhysicalDamage + "\r\n Exp + 10"); r.HP = r.HP - this.PhysicalDamage; this.Exp += 10; }; } var xiaoxiao = new Player("小小", 10000, 500, 200, 100,0); var dog = new Monster("狗狗", 600, 20); xiaoxiao.PhysicalAttack(dog); xiaoxiao.MagicAttack(dog); alert("狗狗當(dāng)前HP:" + dog.HP); alert("小小當(dāng)前Exp:" + xiaoxiao.Exp);
|
代碼中做了詳細(xì)的注釋,就不在廢話。