1. 程式人生 > >用java類和物件寫一個簡單的回合制對戰遊戲

用java類和物件寫一個簡單的回合制對戰遊戲

一、什麼是物件,什麼是類

類比現實生活,任何一個具體的事物都可以稱為物件,比如某臺電腦,某本書,某個人……而類就是根據物件相似的特徵和功能進行分類,物件是具體的,類是抽象的。

二、類的基本格式

public class 類名 {
//定義屬性
訪問修飾符  資料型別  屬性名;
//定義方法
訪問修飾符    返回值資料型別  方法名(資料型別  引數名,...){
}
}

三、例項化物件和呼叫方法的基本格式

例項化物件:

        類名  物件名 = new 構造方法名(引數值,...);
類名  物件名 = new 類名(引數值,...);

呼叫屬性和方法的格式:
物件名.屬性名

物件名.方法名(引數值,...)

四、構造方法

格式:

訪問修飾符  構造方法名(資料型別 引數名,...){

}

用途:1.例項化物件;2.給屬性設定初始值。(java預設提供一個無參的構造方法)

五、this關鍵字

當引數名和屬性名一致時,Java會使用就近原則,優先使用離其最近的引數,把引數賦給引數和屬性沒有任何關係;
這種情況下就需要使用this來做區分,加上"this."的表示屬性,沒有加的則表示引數。
this(引數值,...);表示呼叫對應引數的構造方法

例項:共有三個角色進行對戰,其中兩人為挑戰者,一人為boss,兩位挑戰者先決出勝負,勝者再與boss對戰。

先寫一個角色類。

public class Character {

//設定角色屬性
public String name;
public int maxhp;
public int nowhp;
public int atk;
public boolean win;
//建立一個構造方法,用來例項化物件
public Character(String name,int maxhp,int atk){
this.name = name;
this.maxhp =maxhp;
this.atk = atk;
}
//角色的攻擊方法
public void attack(Character one){
//當前血量>0才能攻擊
if(nowhp>0){
one.nowhp -= atk;
System.out.println(name+"正在攻擊"+one.name);
System.out.println(one.name+"的剩餘血量為:"+one.nowhp);
}
if(one.nowhp<=0){
System.out.println(name+"擊敗了"+one.name);
win = true;//獲得勝利
nowhp = maxhp;//恢復血量
}
}
//a倍傷害的攻擊方法
public void attack(Character one,int a){
if(nowhp>0){
one.nowhp -= atk*a;
System.out.println(name+"正在攻擊"+one.name);
System.out.println(one.name+"的剩餘血量為:"+one.nowhp);
}
if(one.nowhp<=0){
System.out.println(name+"擊敗了"+one.name);
win = true;
nowhp = maxhp;
}
}

}

再寫一個對戰類

public class Battle {
public static void main(String args[]){
//例項化物件
Character Aoteman = new Character("kaiwen",800,15);
Character Xiaoguaishou = new Character("zhaohuan",500,20);
Character Boss = new Character("jiuxiao",404,99);
//初始化血量
Aoteman.nowhp = Aoteman.maxhp;
Xiaoguaishou.nowhp = Xiaoguaishou.maxhp;
Boss.nowhp = Boss.maxhp;
//兩方互相攻擊,直到一方血量<=0
while(Aoteman.nowhp>0 && Xiaoguaishou.nowhp>0){
Aoteman.attack(Xiaoguaishou);
Xiaoguaishou.attack(Aoteman);
}
//勝利者與boss對戰
if(Aoteman.win){
while(Aoteman.nowhp>0 && Boss.nowhp>0){
Aoteman.attack(Boss);
Boss.attack(Aoteman,2);
}
}

if(Xiaoguaishou.win){
while(Xiaoguaishou.nowhp>0 && Boss.nowhp>0){
Xiaoguaishou.attack(Boss);
Boss.attack(Xiaoguaishou,2);
}
}
}
}