* 运用三大特征 封装 继承 多态
* 以及包 与访问权限的控制相关知识 完成一个控制台类小游戏
//人分三类 普通人 中忍 上忍
//普通人类
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