/**
* @(#)飞行棋
*
*
* @author 王宜君
* @version 1.00 2009/12/18
*/
import java.util.*;
public class ChessGame
{
static String [] map=new String[100];//游戏地图
static int [] rae={5,15,27,36,44,55,67,75,85,95};//雷的位置
static int [] star={8,25,40,65,92};//星号的位置
static Scanner input=new Scanner(System.in);//创建一个静态输入对象
static int player=0;//玩家
static int locationA=0,locationB=0,temp=0;//玩家的位置变量
public static void main(String[] args)throws Exception
{
init();//地图的函数初始化
drawMap();//画地图
do
{
init();//地图的函数初始化
locationA=locationA+getRandom(1);//改变A玩家位置
if(locationA>=99)
break;
map[locationA]="甲";
rule(1);//规则
drawMap();//甲玩家摇色重画地图
locationB=locationB+getRandom(2);//改变B玩家位置
if(locationB>=99)
break;
map[locationB]="乙";
rule(2);//规则
drawMap();//乙玩家摇色重画地图
}while(locationA<100&&locationB<100);
if(locationA>=99)//甲玩家赢了
{
System.out.println ("恭喜你,甲玩家赢了。");
init();//地图的函数初始化
drawMap();//甲玩家摇色重画地图
}
if(locationB>=99)//乙玩家赢了
{
System.out.println ("恭喜你,乙玩家赢了。");
init();//地图的函数初始化
drawMap();//乙玩家摇色重画地图
}
}
/**
*初始化地图
*
*
*/
public static void init()
{
int i,j,k;
for(i=0;i<100;i++)//控制位置总数量
{
map[i]="::";
for(j=0;j<10;j++)//控制雷的位置
{
if(rae[j]==i)
{
map[i]="雷";//雷
}
}
for(k=0;k<5;k++)//控制幸运星的位置
{
if(star[k]==i)
{
map[i]="★";//幸运星*
}
}
if(locationA>=99)
{
map[99]="甲";
}
else if(locationB>=99)
{
map[99]="乙";
}
else
{
map[99]="终";
}
}
}//初始化
/**
*
*打印对战地图
*
*/
public static void drawMap()
{
int i,j=0,k;
for(i=0;i<30;i++)//控制地图前30个位置
{
printMapRow(i);
}
System.out.println ("");
for(i=30;i<35;i++)//控制地图31~35位置
{
for(j=0;j<58;j++)//控制31~35位置空格
{
System.out.print(" ");
}
printMapCol(i);
}
for(i=64;i>=35;i--)//控制地图36~65位置
{
printMapRow(i);
}
System.out.println ("");
for(i=65;i<70;i++)//控制地图66~70位置
{
printMapCol(i);
}
for(i=70;i<100;i++)//控制地图70~100位置
{
printMapRow(i);
}
}//画地图
/**
*打印地图的横行
*
*/
public static void printMapRow(int i)//打印地图的横行
{
if(locationA==locationB && locationA==0 && i==0 )
{
System.out.print("始");
}
else if(i==locationA)
System.out.print("甲");
else if(i==locationB)
System.out.print("乙");
else
System.out.print(map[i]);
}//打印地图的横行
/**
*打印地图的数列
*
*
*/
public static void printMapCol(int i)
{
if(locationA==locationB && locationA==0 && i==0 )
{
System.out.print("@@");
}
else if(i==locationA)
System.out.println("甲");
else if(i==locationB)
System.out.println("乙");
else
System.out.println (map[i]);
}//打印地图的数列
/**
*产生随机数
*
*
*/
public static int getRandom(int player)
{
if(player==1)//玩家甲
{
System.out.print("\n请A玩家摇色(按任意键摇色):");
}
else if(player==2)//玩家乙
{
System.out.print("\n请B玩家摇色(按任意键摇色):");
}
String str=input.next();
char ch= str.charAt(0);//取字符串的第一个数
int num=(int)(Math.random()*((int)ch)+100)%6+1;//根据输入的字符产生随机摇色
System.out.println("摇色色子点数:"+num);
return num;
}//产生随机数
/**
*规则
*
*
*/
public static void rule(int player)
{
if(player==1)//玩家甲
{
if(locationA==locationB&&locationA>0)//被踩玩家的回到原点
{
System.out.println ("甲踩到乙:乙回原点。");
locationB=0;
}
for(int i=0;i<10;i++)//玩家甲踩到雷后退5步
{
if(locationA==rae[i])
{
System.out.println ("甲踩雷,后退五步。");
map[locationA]="雷";
locationA-=5;
if(locationA==locationB&&locationA>0)//被踩玩家的回到原点
{
System.out.println ("甲踩到乙:乙回原点。");
locationB=0;
}
}
}
for(int j=0;j<5;j++)//玩家甲踩到幸运星,前进五步
{
if(locationA==star[j])
{
System.out.println ("甲踩到幸运星,前进5步。");
map[locationA]="★";
locationA+=5;
}
}
}
else if(player==2)//玩家乙
{
if(locationA==locationB&&locationB>0)//被踩玩家的回到原点
{
System.out.println ("乙踩到甲:甲回原点。");
locationA=0;
}
for(int i=0;i<10;i++)//玩家乙踩到雷后退5步
{
if(locationB==rae[i])
{
System.out.println ("乙踩雷,后退5步。");
map[locationB]="雷";
locationB-=5;
if(locationB==locationA)
{
System.out.println ("乙踩到甲:甲回原点。");
locationA=0;
}
}
}
for(int j=0;j<5;j++)//玩家乙踩到幸运星,前进五步
{
if(locationB==star[j])
{
System.out.println ("乙踩到幸运星,前进5步");
map[locationB]="★";
locationB+=5;
}
}
}
}//规则
}
* @(#)飞行棋
*
*
* @author 王宜君
* @version 1.00 2009/12/18
*/
import java.util.*;
public class ChessGame
{
static String [] map=new String[100];//游戏地图
static int [] rae={5,15,27,36,44,55,67,75,85,95};//雷的位置
static int [] star={8,25,40,65,92};//星号的位置
static Scanner input=new Scanner(System.in);//创建一个静态输入对象
static int player=0;//玩家
static int locationA=0,locationB=0,temp=0;//玩家的位置变量
public static void main(String[] args)throws Exception
{
init();//地图的函数初始化
drawMap();//画地图
do
{
init();//地图的函数初始化
locationA=locationA+getRandom(1);//改变A玩家位置
if(locationA>=99)
break;
map[locationA]="甲";
rule(1);//规则
drawMap();//甲玩家摇色重画地图
locationB=locationB+getRandom(2);//改变B玩家位置
if(locationB>=99)
break;
map[locationB]="乙";
rule(2);//规则
drawMap();//乙玩家摇色重画地图
}while(locationA<100&&locationB<100);
if(locationA>=99)//甲玩家赢了
{
System.out.println ("恭喜你,甲玩家赢了。");
init();//地图的函数初始化
drawMap();//甲玩家摇色重画地图
}
if(locationB>=99)//乙玩家赢了
{
System.out.println ("恭喜你,乙玩家赢了。");
init();//地图的函数初始化
drawMap();//乙玩家摇色重画地图
}
}
/**
*初始化地图
*
*
*/
public static void init()
{
int i,j,k;
for(i=0;i<100;i++)//控制位置总数量
{
map[i]="::";
for(j=0;j<10;j++)//控制雷的位置
{
if(rae[j]==i)
{
map[i]="雷";//雷
}
}
for(k=0;k<5;k++)//控制幸运星的位置
{
if(star[k]==i)
{
map[i]="★";//幸运星*
}
}
if(locationA>=99)
{
map[99]="甲";
}
else if(locationB>=99)
{
map[99]="乙";
}
else
{
map[99]="终";
}
}
}//初始化
/**
*
*打印对战地图
*
*/
public static void drawMap()
{
int i,j=0,k;
for(i=0;i<30;i++)//控制地图前30个位置
{
printMapRow(i);
}
System.out.println ("");
for(i=30;i<35;i++)//控制地图31~35位置
{
for(j=0;j<58;j++)//控制31~35位置空格
{
System.out.print(" ");
}
printMapCol(i);
}
for(i=64;i>=35;i--)//控制地图36~65位置
{
printMapRow(i);
}
System.out.println ("");
for(i=65;i<70;i++)//控制地图66~70位置
{
printMapCol(i);
}
for(i=70;i<100;i++)//控制地图70~100位置
{
printMapRow(i);
}
}//画地图
/**
*打印地图的横行
*
*/
public static void printMapRow(int i)//打印地图的横行
{
if(locationA==locationB && locationA==0 && i==0 )
{
System.out.print("始");
}
else if(i==locationA)
System.out.print("甲");
else if(i==locationB)
System.out.print("乙");
else
System.out.print(map[i]);
}//打印地图的横行
/**
*打印地图的数列
*
*
*/
public static void printMapCol(int i)
{
if(locationA==locationB && locationA==0 && i==0 )
{
System.out.print("@@");
}
else if(i==locationA)
System.out.println("甲");
else if(i==locationB)
System.out.println("乙");
else
System.out.println (map[i]);
}//打印地图的数列
/**
*产生随机数
*
*
*/
public static int getRandom(int player)
{
if(player==1)//玩家甲
{
System.out.print("\n请A玩家摇色(按任意键摇色):");
}
else if(player==2)//玩家乙
{
System.out.print("\n请B玩家摇色(按任意键摇色):");
}
String str=input.next();
char ch= str.charAt(0);//取字符串的第一个数
int num=(int)(Math.random()*((int)ch)+100)%6+1;//根据输入的字符产生随机摇色
System.out.println("摇色色子点数:"+num);
return num;
}//产生随机数
/**
*规则
*
*
*/
public static void rule(int player)
{
if(player==1)//玩家甲
{
if(locationA==locationB&&locationA>0)//被踩玩家的回到原点
{
System.out.println ("甲踩到乙:乙回原点。");
locationB=0;
}
for(int i=0;i<10;i++)//玩家甲踩到雷后退5步
{
if(locationA==rae[i])
{
System.out.println ("甲踩雷,后退五步。");
map[locationA]="雷";
locationA-=5;
if(locationA==locationB&&locationA>0)//被踩玩家的回到原点
{
System.out.println ("甲踩到乙:乙回原点。");
locationB=0;
}
}
}
for(int j=0;j<5;j++)//玩家甲踩到幸运星,前进五步
{
if(locationA==star[j])
{
System.out.println ("甲踩到幸运星,前进5步。");
map[locationA]="★";
locationA+=5;
}
}
}
else if(player==2)//玩家乙
{
if(locationA==locationB&&locationB>0)//被踩玩家的回到原点
{
System.out.println ("乙踩到甲:甲回原点。");
locationA=0;
}
for(int i=0;i<10;i++)//玩家乙踩到雷后退5步
{
if(locationB==rae[i])
{
System.out.println ("乙踩雷,后退5步。");
map[locationB]="雷";
locationB-=5;
if(locationB==locationA)
{
System.out.println ("乙踩到甲:甲回原点。");
locationA=0;
}
}
}
for(int j=0;j<5;j++)//玩家乙踩到幸运星,前进五步
{
if(locationB==star[j])
{
System.out.println ("乙踩到幸运星,前进5步");
map[locationB]="★";
locationB+=5;
}
}
}
}//规则
}