第6关:华容道小程序
任务描述
本关任务:获取键盘输入的棋子姓名和移动方向,移动相应的棋子到相应的位置。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现获取键盘输入的棋子姓名和移动方向,移动相应的棋子到相应的位置的功能,具体要求如下:
-
在 Test 类中的主方法中,为棋盘中的每个棋子实例化一个对象,并传入其相应的位置(甲乙丙丁都为士兵),这些位置是指它们在二维数组中所在位置;
-
定义一个 while 循环,在循环中首先输出棋盘状态信息;
-
然后获取键盘输入的要移动棋子的名称,获取移动的方法,匹配到该棋子,判断该棋子是否可以移动,如果不可以,请输出:“无法移动,指令错误”,如果可以,移动该武将到相应位置上;
-
最后如果曹操被移动到出口位置(也就是最后一行的中间)时,输出:“你获胜了”,然后退出系统。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
测试输入:
张飞
下
赵云
下
马超
下
...
预期输出:
|马黄甲乙|
|超忠丙丁|
|赵张关羽|
|云飞曹操|
| 曹操|
请输入需要移动的棋子:
请输入移动方向(上,下,左,右):
|马黄甲乙|
|超忠丙丁|
|赵 关羽|
|云张曹操|
| 飞曹操|
请输入需要移动的棋子:
请输入移动方向(上,下,左,右):
|马黄甲乙|
|超忠丙丁|
| 关羽|
|赵张曹操|
|云飞曹操|
请输入需要移动的棋子:
请输入移动方向(上,下,左,右):
| 黄甲乙|
|马忠丙丁|
|超 关羽|
|赵张曹操|
|云飞曹操|
请输入需要移动的棋子:
...
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 为棋盘中的每个棋子实例化一个对象,并将棋子所在位置传入
ChessBoard cb=new ChessBoard();
Chess cc=new King(2,3);
Chess hz=new General(1,0);
Chess zy=new General(0,2);
Chess zf=new General(1,2);
Chess mc=new General(0,0);
Chess gy=new Commander(2,2);
Chess jia=new Soldier(2,0);
Chess yi=new Soldier(3,0);
Chess bin=new Soldier(2,1);
Chess din=new Soldier(3,1);
Scanner input=new Scanner(System.in);
String name;
String direction;
// 定义 while 循环
while(true){
// 输出棋盘状态信息
System.out.print(cb);
// 获取键盘输入的棋子名称和移动方向
System.out.println("请输入需要移动的棋子:");
name=input.next();
System.out.println("请输入移动方向(上,下,左,右):");
direction=input.next();
// 匹配到对应的棋子后判断是否可以移动
if(name.equals("曹操")){
if(!cc.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("黄忠")){
if(!hz.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("赵云")){
if(!zy.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("张飞")){
if(!zf.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("马超")){
if(!mc.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("关羽")){
if(!gy.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("甲")){
if(!jia.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("乙")){
if(!yi.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("丙")){
if(!bin.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else if(name.equals("丁")){
if(!din.move(cb,direction)){
System.out.println("无法移动,指令错误");
}
}
else{
System.out.println("查无此人");
}
// 如果曹操被移动到了出口位置是,输出:你获胜了,结束游戏
if(cb.tate[4][1]=="曹"&&cb.tate[4][2]=="操"){
System.out.println("你获胜了");
break;
}
}
/********** End **********/
}
}