游戏角色
*(封裝、繼承、多態)創建三個類,組成一個繼承樹,表示游戲中的角色。
描述如下:
父類:Role。是所有職業的父類。
屬性:name,表示角色的名字。
方法:public int attack(),該方法返回值為角色的攻擊對敵人的傷害。
Role 有兩個子類:
1) 法師 Magicer屬性:魔法等級(范圍為 1 ~ 10)
方法:public int attack(),該方法返回法師的攻擊對敵人造成的傷害值。
法師攻擊傷害值為:魔法等級*魔法基本傷害值(固定為 5)
2) 戰士Soldier
屬性:攻擊傷害值
方法:public int attack(),該方法返回戰士的攻擊對敵人造成的傷害值。
戰士的攻擊傷害值為:其攻擊傷害屬性值
注意:上述的三個類所有屬性都應當作為私有,并提供相應的 get/set 方法。
再設計一個 Team 類,表示一個組隊。
具有如下方法
1) addMember,表示組隊增加一個成員。注意:組隊成員最多為 6 人提示:應當利用一個數組屬性,保存所有成員
2) attackSum,表示組隊所有成員進行攻擊時,對敵人造成的總傷害值省略 get/set 方法后的類圖如下:
根據類圖和描述,創建相應的類。并編寫相應的測試代碼。
遇到的問題:(1)不知怎樣將對象存儲在數組中。解決:將數組類型設置為與將要放置在數組中的對象一樣的類型。
????????????????????? (2)在設置父類對象的引用時,父類對象只能調用子類對象中從父類那里繼承下來的方法或屬性。
代碼:
package com.shichuang.example;//import java.util.Scanner;
class Role{
?private String name;
?public String getName() {
??return name;
?}
?public void setName(String name) {
??this.name = name;
?}
?public int attack(){
??return 0;
?}
}
class Magicer extends Role{
?private int level;//范圍1-10
?public int getLevel() {
??return level;
?}
?public void setLevel(int level) {
??this.level = level;
?}
?public int attack(){
??return level*5;
?}
}
class Soldier extends Role{
?private int hurt;
?public int getHurt() {
??return hurt;
?}
?public void setHurt(int hurt) {
??this.hurt = hurt;
?}
?public int attack(){
??return hurt;
?}
}
class Team{
?static int i = 0;
?static Role member[] = new Role[6];
?void addMember(Role role){
??member[i++] = role;?
?}
?int attackSum(){
??int sum=0;
??for(int j=0; j<i; j++){
???sum += member[j].attack();
??}
??return sum;
?}
}
public class Main17{
?public static void main(String args[]){
?Role role = new Role();
?Soldier soldier = new Soldier();
?role = soldier;
?soldier.setName("少華");
?soldier.setHurt(5);
?System.out.println("戰士" + soldier.getName()+"的攻擊傷害值為:"+soldier.attack());
?
?Magicer magicer = new Magicer();
?role = magicer;
?role.setName("君艷法師");
?magicer.setLevel(7);
?System.out.println("戰士" + magicer.getName()+"的攻擊傷害值為:"+magicer.attack());
?
?Team team = new Team();
?team.addMember(magicer);
?team.addMember(soldier);
?System.out.println("所有成員的傷害總值為:"+team.attackSum());
?}
}
如有可以改進的地方,真誠希望您留言,希望大家一起進步。
總結
- 上一篇: MFC_改变窗口大小,随着鼠标的拖动改变
- 下一篇: iOS ideviceinstaller