一个极其简化的控制台回合游戏
来源:互联网 发布:斯基德莫尔学院 知乎 编辑:程序博客网 时间:2024/05/22 16:10
首先定义一个接口类:
interface Fightable
{public final double MAX=20;//提示血液值
void win();//描述战斗者获胜后的行为
int injure(int x);//描述战斗者受伤后的行为 血量减少,并且血量过低提示
}
然后定义一个非抽象的类Warrior 实现这个接口
class Warrior implements Fightable
{
String name;
int experience=0;//战士获胜后经验值会增加
int level=1;
int blood=200;//战斗者的血液值 受伤后血液值会减少x
public int injure(int x)
{
blood=blood-x;
System.out.println(name+"血量值减少"+x);
if(blood<=MAX)
{
System.out.println(name+"血量过低");
}
return blood;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public int getExperience()
{
return experience;
}
public void setBlood(int blood)
{
this.experience=experience;
}
public int getBlood()
{
return blood;
}
public void win()
//获胜之后增加经验值,达到100 升级 当前经验值清零
{
experience+=20;
System.out.println(name+"获胜!经验值加20");
if(experience>100)
{
System.out.println(name+"经验值达到等级上限,升级!");
experience=0;
level+=1;
}
System.out.println(name+"当前等级"+level);
}
}
BloodWarrior 继承于 Warrior并且重写了win( ) 和injure 方法
class BloodWarrior extends Warrior
{
public int injure(int x)
{
blood=blood-x;
System.out.println(name+"血量值减少"+x);
if(blood<=(MAX/2))
{
System.out.println(name+"血量过低");
}
return blood;
}
public void win()
{
experience+=40;
System.out.println(name+"获胜!经验值加40");
if(experience>100)
{
System.out.println(name+"经验值达到等级上限,升级!");
experience=0;
level+=1;
}
System.out.println(name+"当前等级"+level);
}
}
创建一个测试类,类的主要工作是创建两个随机的战士类(BloodWarrior Warrior ) 的对象 ,并且给他们命名,然后进入战斗环节 Winner_Test
import java.util.*;
class TestWarrior
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("是否进入游戏(是 t 否 f)?");
String m=sc.next();
char n=m.charAt(0);
if(n=='f')
return;
else{
Warrior w;
Warrior bw;
int a=(int)(Math.random()*10+1);
int b=(int)(Math.random()*10+1);
if(a<=5)
{
w=new Warrior();
}
else
w=new BloodWarrior();
if(b<=5)
bw=new BloodWarrior();
else
bw=new Warrior();
System.out.println("输入第一位选手的名字");
String name1=sc.next();
w.setName(name1);
System.out.println("输入第二位选手的名字");
String name2=sc.next();
bw.setName(name2);
Winner_Test.winner(w,bw);//进入比赛
}
}
}
创建Winner_Test 类对两个战士 战况进行描述,谁攻击了谁, 谁掉血了 谁赢了
import java.util.*;
class Winner_Test
{
public static void winner(Warrior f1,Warrior f2)
{
Random rd=new Random();
int bloodw=f1.blood;
int bloodb=f2.blood;
int i=1;
for(int k=0;;k++)
{
System.out.println("第"+(k+1)+"场比赛");
for(int j=0;;j++)
{
System.out.println("第"+(j+1)+"回合");
int a=rd.nextInt(6);
int b=rd.nextInt(6);
if(a>b)
{
int x=rd.nextInt(30);
System.out.println(f2.name + "攻击,并造成了"+x+"点伤害");
bloodw=f1.injure(x);
System.out.println(f1.name + "当前血量值为"+f1.blood);
if(f1.blood<=0)
{
System.out.println();
f2.win();
f1.blood=200;
f2.blood=200;
break;
}
System.out.println("\r\n-------------------------\r\n");
}
if(b>=a)
{
int x=rd.nextInt(30);
System.out.println(f1.name + "攻击,并造成了"+x+"点伤害");
bloodb=f2.injure(x);
System.out.println(f2.name + "当前血量值为"+f2.blood);
if(f2.blood<=0)
{
System.out.println();
f1.win();
f2.blood=200;
f1.blood=200;
break;
}
System.out.println("\r\n-------------------------\r\n");
}
boolean gg=jixu();//继续比赛的判断
if(!gg)
break;
}
boolean b=jixu();//继续比赛的判断
if(!b)
break;
System.out.println("\r\n\r\n\r\n");
}
}
//是否进行比赛的判断,返回布尔值 是 TRUE 否 FALSE
public static boolean jixu()
{
Scanner sc=new Scanner(System.in);
System.out.println("是否继续比赛(是 t 否 f)?");
String m=sc.next();
char n=m.charAt(0);
if(n=='t')
return true;
else
return false;
}
}
- 一个极其简化的控制台回合游戏
- 一个控制台的猜拳游戏
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 记录: 游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
- [入门教程]使用Cocos2d-html5游戏引擎编写一个简单的游戏 第一回合: 搭建开发环境
- 一个高度简化的游戏主循环
- 回合制游戏指令的执行机制
- 极其轻松的一个星期
- 一个游戏控制台的基本程序
- Unity3D游戏开发之回合制游戏原型的实现
- JZOJ4973. 回合游戏
- OpenGL-光源位置的控制
- 物联网、云计算、大数据、人工智能
- 使用SpringBoot之logback与logstash集成问题
- python高级特性
- Widows与linux关于隐形文件和非隐形文件の对比
- 一个极其简化的控制台回合游戏
- Oracle树形表和递归查询
- iOS 横竖屏旋转处理
- Android四大组件之BroadcastReceiver简介
- list.subList
- 关于Spring中工厂Bean
- Android数据存储方式
- Tensorflow深度学习之八:再探CNN解决mnist手写数字识别问题
- html禁止手机端缩放