一个控制台类小游戏


 * 运用三大特征 封装 继承 多态

 * 以及包 与访问权限的控制相关知识 完成一个控制台类小游戏

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

 

//普通人类
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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值