一個控制檯類小遊戲


 * 運用三大特徵 封裝 繼承 多態

 * 以及包 與訪問權限的控制相關知識 完成一個控制檯類小遊戲

//人分三類   普通人  中忍  上忍

 

//普通人類
public class Person {
	public String name; //名字
	Person()
	{
		
	}
	Person(String name)
	{
		this.name = name;
	}
}


//中忍類
public class kongFuPseson extends Person{
	
	public int blood=1000; //記錄角色血量 在角色包需要調用 所以必須用protected或public修飾
	kongFuPseson()
	{
		
	}
	kongFuPseson(String name)
	{
		this.name = name;
	}
	//普通招
	public void commonKill(kongFuPseson p)//被打的武林中人
	{
		p.blood-=50;   //被打的人血量減少
	}
	//殺招
	public void bestKill(kongFuPseson p)
	{
		p.blood-=150;
	}
	
}

//絕招
public interface secretKill {
	public void secortKill(kongFuPseson p);//接口內全部抽象方法 抽象方法 沒有方法體 默認pubilc abstract修飾

}

//上忍

public class kongFuMaster extends kongFuPseson implements secretKill{
	public void secortKill(kongFuPseson p)
	{
		p.blood-=300;
	}

}
//創建角色 鳴人
public class mingRen extends kongFuMaster{
	//在其他包中訪問  創建對象需要調用構造函數  所以需要public修飾
	public mingRen(String name)
	{
		this.name = name;
				}
	//複寫父類的方法   同時用super()調用父類的方法 去血
	public void secortKill(kongFuPseson p) {
		super.secortKill(p);
		System.out.println(this.name+"使用絕招仙法·尾獸玉幹掉了"+p.name+300+"點血量!");
	}

	public void commonKill(kongFuPseson p) {
		super.commonKill(p);
		System.out.println(this.name+"使用基本忍術多重影分身術幹掉了"+p.name+50+"點血量!");
	}

	public void bestKill(kongFuPseson p) {
		// TODO Auto-generated method stub
		super.bestKill(p);
		System.out.println(this.name+"使用殺招超大玉螺旋多連丸幹掉了"+p.name+150+"點血量!");
	}
}


//佐助
public class zuoZu extends kongFuMaster{
	//在其他包中訪問  創建對象需要調用構造函數  所以需要public修飾
	public zuoZu(String name)
	{
		this.name = name;
				}
	//複寫父類的方法   同時用super()調用父類的方法去血
	public void secortKill(kongFuPseson p) {
		super.secortKill(p);
		System.out.println(this.name+"使用絕招血繼限界須佐能乎幹掉了"+p.name+300+"點血量!");
	}

	public void commonKill(kongFuPseson p) {
		super.commonKill(p);
		System.out.println(this.name+"使用基本忍術千鳥流乾掉了"+p.name+50+"點血量!");
	}
	public void bestKill(kongFuPseson p) {
		// TODO Auto-generated method stub
		super.bestKill(p);
		System.out.println(this.name+"使用殺招天照幹掉了"+p.name+150+"點血量!");
	}

}



public class showTime {
	public static Scanner in = new Scanner(System.in);
	public static int chioce;  //接收用戶的選擇
	public static kongFuMaster player; //玩家
	public static kongFuMaster computer; //電腦
	//判斷遊戲什麼時候結束的方法 歲的血先沒
	public static boolean finish()
	{
		boolean f=true;
		if(player.blood<=0)
			f=false;
		
		if(computer.blood<=0)
			f=false;
		return f;
	}
	//遊戲pk方法
	public static void begin() 
	{  //隨機生成3以內的整數0,1,2 分別表示普通 殺招 絕招
		int n=1;//1默認玩家先出招
		do
		{
			int i =(int)(Math.random()*10)%3;//Math.random()隨機生成0到1間的小數
			switch(i) //角色隨機出招
			{
			case 0:
				if(n==1) //true默認玩家先出招
					player.commonKill(computer);
				else
					computer.commonKill(player);
				break;
			case 1:
				if(n==1)
					player.bestKill(computer);
				else
					computer.bestKill(player);
				break;
			case 2:
				if(n==1)
					player.secortKill(computer);
				else
					computer.secortKill(player);
			}
			n*=-1;//flag=false; //角色輪流出招
		}while(finish());//分號不可以漏掉	
	}
	//遊戲結束  顯示
	public static void	voice()
	{
		if(player.blood<=0)
			System.out.println("君子報仇十年不晚,後會有期");
		else
			System.out.println("不要羨慕哥,哥只是傳說");
	}
	
	//顯示遊戲開始窗口 選擇角色
	public static void window() {
	System.out.println("============歡迎進入火影忍者傳==============");	
	System.out.println("請選擇遊戲角色:1 鳴人	2 佐助");
    chioce = in.nextInt();
    if(chioce==1)
    	System.out.println("您選擇的是:鳴人");
    else
    	System.out.println("您選擇的是:佐助");
	}
	//遊戲角色初始化
	public static void roles()
	{
		if(chioce==1)
		{
			player =new mingRen("鳴人");
			computer =new zuoZu("佐助");
		}
		else
		{
			player =new zuoZu("佐助");
			computer =new mingRen("鳴人");
		}
	}
	
	
	public static void main(String[] args) {
		int c;
		do
		{
		window();//顯示遊戲開始界面
		roles();//遊戲角色初始化
		begin();//開始遊戲
		voice();//遊戲結束
		System.out.println("**************************");
		System.out.println("是否還想繼續?是》請選 1	否》請選 2");
		c = in.nextInt();
		}while(c==1);
	}

}

============歡迎進入火影忍者傳==============
請選擇遊戲角色:1 鳴人 2 佐助
1
您選擇的是:鳴人
鳴人使用殺招超大玉螺旋多連丸幹掉了佐助150點血量!
佐助使用絕招血繼限界須佐能乎幹掉了鳴人300點血量!
鳴人使用基本忍術多重影分身術幹掉了佐助50點血量!
佐助使用基本忍術千鳥流乾掉了鳴人50點血量!
鳴人使用殺招超大玉螺旋多連丸幹掉了佐助150點血量!
佐助使用殺招天照幹掉了鳴人150點血量!
鳴人使用絕招仙法·尾獸玉幹掉了佐助300點血量!
佐助使用殺招天照幹掉了鳴人150點血量!
鳴人使用殺招超大玉螺旋多連丸幹掉了佐助150點血量!
佐助使用殺招天照幹掉了鳴人150點血量!
鳴人使用殺招超大玉螺旋多連丸幹掉了佐助150點血量!
佐助使用絕招血繼限界須佐能乎幹掉了鳴人300點血量!
君子報仇十年不晚,後會有期
**************************
是否還想繼續?是》請選 1 否》請選 2



發佈了30 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章