棋士飞行棋—简单编码

来源:互联网 发布:影楼网络推广方案 编辑:程序博客网 时间:2024/05/03 09:39

package s1java.xmal1;

/**

  *定义类“”

 */

public class Person 

{

String name;//类的属性,玩家的姓名;

   int lenght = 0; //类的属性,已经走的长度

}

 

 

 

package s1java.xmal1;

import java.util.*;

public class Game {

Person[] p = new Person[2];       //两个玩家,创建数组p[];包含了两个元素;

int personindex = 0;                   //当前是哪个玩家正在玩(索引)

int count = 0;                             //对战的次数

String[] chess = new String[100];  //棋盘数组

int stopindex = -1;                     //谁被暂停了1次

/**

* 初始化最初的棋盘(OldChess)

*/

public void initial()

{

//从数组"chess[]"中先假定棋盘都为∷;

for (int i = 0; i < chess.length; i++) 

{   

chess[i] = "∷";

}

//定义棋盘数组中,暂停的位置;

int[] pause = {9, 27, 60, 93};

for (int i = 0; i < pause.length; i++) 

{

chess[pause[i]] = "停";

}

//定义棋盘数组中,幸运盘符的位置;

int[] luck = {6, 23, 40, 55, 69, 83}; 

for (int i = 0; i < luck.length; i++) 

{

chess[luck[i]] = "幸";

}

//定义棋盘数组中,地雷的位置;

int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94};

for (int i = 0; i < landMine.length; i++) 

{

chess[landMine[i]] = "雷";

}

//定义棋盘数组中,时空隧道的位置;

int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90};

for (int i = 0; i < timeTunnel.length; i++) 

{

chess[timeTunnel[i]] = "洞";

}

}

/**

* 显示新棋盘(NewChess)

*/

public void showchess()

{

String[] newchess = new String[100];   //创建数组"NEWCHESS",并且分配100个空间;

for (int i = 0; i < chess.length; i++) //循环的查找chess[]数组,将chess[]数组中的所有元素的值赋于newchess[]数组;

{

newchess[i] = chess[i];

}

//添加A到棋盘

newchess[p[0].lenght] = "A"; 

//添加b到棋盘

newchess[p[1].lenght] = "B";

//如果AB重合棋盘则显示"◎";

if (p[0].lenght == p[1].lenght) 

{

newchess[p[0].lenght] = "◎";

}

//输出第一条横线0~29;

for (int i = 0; i < 30; i++) 

{

System.out.print(newchess[i]);

}

System.out.println();

//输出右竖线30~34

for (int i = 30; i <= 34; i++) 

{

for (int j = 1; j <= 29; j++) 

{

System.out.print(" ");

}

System.out.println(newchess[i]);

}

//输出第二条横线35~64

for (int i = 64; i >= 35; i--) 

{

System.out.print(newchess[i]);

}

System.out.println();//注意,此处不换行的话第二行会多出一格

//输出左竖线65~69

for (int i = 65; i <=69 ; i++) 

{

System.out.println(newchess[i]);

}

//输出最后一行70~99

for (int i = 70; i <= 99; i++) 

{

System.out.print(newchess[i]);

}

System.out.println();

System.out.println();

}

/**

* 开始游戏

*/

public void start()

{

System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

 

System.out.println("※※                                                                                                                                            ※※");

 

System.out.println("※※                                                                                                                                            ※※");

 

System.out.println("※※                                      骑        士        飞        行         棋                                            ※※");

 

System.out.println("※※                                                                                                                                            ※※");

 

System.out.println("※※                                                                                                                                            ※※");

 

System.out.println("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※/n/n/n");

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~两        人        对        战~~~~~~~~~~~~~~~~~~~~~/n");

System.out.println("请选择角色:1:孙悟空  2:猪八戒  3:沙僧  4:唐僧");

Scanner input = new Scanner(System.in);

System.out.print("请玩家A选择角色:");

int player1 = input.nextInt();

int player2;

do 

{

System.out.print("请玩家B选择角色:");

player2 = input.nextInt();

} while (player1 == player2);     //不允许重复角色名;

p[0] = new Person();              //创建玩家A;

p[0].name = getRoleName(player1); //获取玩家A的名称,注意,此处获取的名字是调用了方法"getRoleName(Player1)";

p[1] = new Person();          //创建玩家B

p[1].name = getRoleName(player2); //获取玩家B的名称

System.out.println("/n----------游戏准备开始----------");

System.out.println("A玩家是:" + p[0].name);

System.out.println("B玩家是:" + p[1].name + "/n/n");

System.out.println("以下是棋盘/n/n");

showchess();//显示棋盘

personindex = 0;//设置A先走

run();//对战开始

}

/**

*  获取玩家的名称

*/

public String getRoleName(int player)

{

switch (player) 

{

case 1:

return "孙悟空";

case 2:

return "猪八戒";

case 3:

return "沙僧";

case 4:

return "唐僧";

default:

return " ";

}

}

/**

* 开始游戏

*/

public void run()

{

//创建死循环的条件

while(true)

{

count++;//对战次数;

Scanner input = new Scanner(System.in);

System.out.println("现在是" + p[personindex].name + "走,请按任意键继续...");//输出玩家A先走;

input.next();

int random = (int)(Math.random()*6+1);//产生一个1~6的随机数

System.out.println("骰子数目" + random);//骰子骰动的值(上面随机1~6之间的数目);

//检查游戏是否结束

if ((p[personindex].lenght + random) >= 99)

{

System.out.println("/n/n" + p[personindex].name + "获取,对战次数" + count + "次");

break;

}

//是否遇到关卡

int lenght = p[personindex].lenght + random;//骰子骰动后玩家的新位置的值赋给变量lenght;(注意,此处的p[personindex].lenght的初始值是0,)

String str = chess[lenght];//此处是将上面玩家的位置(下标)转换成棋子中对应的元素并将此元素的值赋给变量str;

/*如果新棋盘中的元素等于原棋盘中停的元素*/

if (str.equals("停"))

{

System.out.println("暂停一次!/n");//系统输出暂停一次

p[personindex].lenght = lenght;//将棋盘中暂停位置下标号赋给当前玩家的位置;

stopindex = personindex;            //当前玩被暂停一次

}

/*进入幸运盘符,选择交换位置或轰炸对方退回6步*/

else if (str.equals("幸"))

{

System.out.println("恭喜!您己进入幸运盘符,请选择操作:1.交换位置;2.轰对方退回6步");

int choice = input.nextInt();

if (choice == 1) 

{

System.out.println("您选择了交换位置");

int temp = p[personindex].lenght;//保存当前玩家的位置;

p[personindex].lenght = p[antherPerson()].lenght;//将另一玩家的位置的值赋给当前玩家;

p[antherPerson()].lenght = temp;//将当前玩家的位置的值赋给另一玩家;

}

else 

{

System.out.println("您选择了轰对方返回6步");

p[antherPerson()].lenght -= 6;

if (p[antherPerson()].lenght <= 0)//如果另一个玩家的值在被对方轰完之后的值小于或等于0,程序将判断另一玩家的值为0位置; 

{

p[antherPerson()].lenght = 0;

}

}

}

/*如果当前玩家遇着地雷,退回6步,忽略再次遇到的关卡*/

else if (str.equals("雷")) 

{

System.out.println("呵呵,您进入了雷区,退回6步");

p[personindex].lenght -= 6;

if (p[personindex].lenght <= 0) 

{

p[personindex].lenght = 0;

}

}

/*如果玩家遇着隧道,当前玩家向前加走十步,忽略再次遇到的关卡*/ 

else if (str.equals("洞")) 

{

System.out.println("恭喜您,进入幸运洞中" + p[personindex].name + "您的位置将前进10步");

p[personindex].lenght = lenght + 10;

if (p[personindex].lenght >=100) 

{

System.out.println("/n/n" + p[personindex].name + "取胜,对战次数" + count);

break;

}

}

/*如果当前玩家骰骰子的过程中没有遇到上面所有的关卡,就将当前玩家骰动的位置再赋给当前玩家*/

else 

{

p[personindex].lenght = lenght;

}

//设置下一轮是另一玩家

int index = antherPerson();//获取另一玩家的索引;

if (stopindex != index) //如果另一玩家被暂停,则不改变索引;

   personindex = index;

else 

stopindex = -1;//取消暂停

System.out.println("玩家" + p[personindex].name + "的位置" + (p[personindex].lenght+1));

System.out.println("玩家" + p[antherPerson()].name + "的位置" + (p[antherPerson()].lenght+1));

showchess();//显示新棋盘;

}

}

/**

* 获得另一玩家的索引

*/

public int antherPerson()

{

if (personindex == 0)

{

return 1;

}

else 

{

return 0;

}

}

 

}