题目:
// 幸运轮盘:◆
// 地雷:★
// 暂停:■
// 时空隧道:〓
// 普通:∷
// 玩家1和2的士兵分别用“ Α 和 Β ”来标识
// 如果Α与Β在同一个位置上时,那我们用“@@”来标识!
// 1踩到幸运轮盘:可请选择下面两项进行操作【1】:交换位置 【2】:进行轰炸(对方回退6步)
// 2踩到地雷 将会被打回起点!
// 3踩到暂停对方可以进行连续走两次
// 4踩到时空隧道 前进10步
//踩到对方,对方将退回起点
// 谁先到达终点谁取得最后的胜利。
int[] map = new int[100]; //对战地图
int[] luckyTurn = {6, 23, 40, 55, 69, 83}; //幸运轮盘
int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94}; //地雷位置
int[] pause = {9, 27, 60, 93}; //暂停
int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90}; //时空隧道
实现图:
代码如下
Map类
public class Map {
int player1; int player2;
int[]map=new int[100];
int[] luckyTurn = {6, 23, 40, 55, 69, 83}; //幸运轮盘
int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94};//地雷位置
int[] pause = {9, 27, 60, 93};//暂停
int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90};//时空隧道
public void cmap(){
int i = 0;
for(i = 0; i < luckyTurn.length; i++){//地图上设置幸运轮盘
map[luckyTurn[i]] = 1;
}
for(i = 0;i<landMine.length;i++){//地图上设置地雷
map[landMine[i]] = 2;
}
for(i = 0;i < pause.length; i++){//地图上设置暂停
map[pause[i]] = 3;
}
for(i = 0;i < timeTunnel.length;i++)//地图上设置时空隧道
map[timeTunnel[i]] = 4;
}
public String getGraph(int i, int index, int player1, int player2){
String graph = "";
if(index==player1&&index==player2){//两人重合时图形为@@
graph="@@";
}else if(index==player1){
graph="A";
}else if(index==player2){
graph="B";
}else{
switch(i){
case 1:
graph="◆";
break;
case 2:
graph="★";
break;
case 3:
graph="■";
break;
case 4:
graph="〓";
break;
case 0:
graph="::";
break;
}
}
return graph;
}
public void showLine1(int start, int end, int player1, int player2){
for(int i=start;i<end;i++){
System.out.print(getGraph(map[i], i,player1, player2));
}
}
public void showLine2(int start, int end, int player1, int player2){
for(int i = end; i >= start; i-- ){
System.out.print(getGraph(map[i], i,player1, player2));
}
}
public void showRLine(int start, int end, int player1, int player2){
for(int i = start; i< end; i++){
for(int j =29; j > 0; j--){
System.out.print("**");
}
System.out.print(getGraph(map[i], i,player1, player2));
System.out.println();
}
}
public void showLLine(int start, int end, int player1, int player2){
//添加代码
for(int i=start;i<end;i++){
System.out.println(getGraph(map[i], i,player1, player2));
}
}
public void showmap(int player1, int player2){
showLine1(0,30,player1,player2);
System.out.println();
showRLine(30,35,player1,player2);
showLine2(35,64,player1,player2);
System.out.println();
showLLine(66,69,player1,player2);
showLine1(69,99,player1,player2);
}
}
功能类:
import java.util.Scanner;
public class Game {
int player1;
int player2;
Map map;
int num4;
static int flag1=0;
String gostop[]=new String[2];
Scanner input=new Scanner(System.in);
String name;
String name1;
int num1,num2;
public void init(){
map=new Map();
map.cmap();
// Map pp=new Map();
// map.showmap(0, 0);
player1=0;
player2=0;
gostop[0]="go";
gostop[1]="go";
}
public void init1(){
init();
System.out.println("~~~~~~~~~~~~~~~~~~~~两人对战飞行棋~~~~~~~~~~~~~~~~~~~~");
System.out.println("请选择角色: 1,戴高乐 2,艾森豪威尔 3,麦克阿瑟 4,巴顿");
//do{
System.out.println("玩家1选择人物");
num1=input.nextInt();
//}while(num1==1 && num2==2);
// do{
System.out.println("玩家2选择人物");
num2=input.nextInt();
switch(num1){
case 1:name="1,戴高乐";break;
case 2:name="2,艾森豪威尔";break;
case 3:name="3,麦克阿瑟";break;
case 4:name="4,巴顿";break;
}
switch(num2){
case 1:name1="1,戴高乐";break;
case 2:name1="2,艾森豪威尔";break;
case 3:name1="3,麦克阿瑟";break;
case 4:name1="4,巴顿";break;
}
start();
}
public void start(){
System.out.println("*****************************************");
System.out.println("\t\t游戏开始");
System.out.println("*****************************************");
System.out.println("\n^_^"+name+":A");
System.out.println("\n^_^"+name1+":B");
System.out.println("图例:幸运轮盘:◆ 地雷:★ 暂停:■ 时空隧道:〓 普通:∷");
map.showmap(player1,player2);
int temp;
point:while (player1<99&&player2<99){
if(gostop[0].equals("go")){
temp= throwSezi();
System.out.println("\n****************");
player1 = getto(1, player1, temp);
//System.out.println("mmmmm"+player1);
//System.out.println("\n玩家1总步数: "+ player1);
System.out.println("\n:"+name+"投了"+temp+"步");
System.out.println("****************\n");
//flag1=player1;
//System.out.println("fff"+flag1);
if(player1 == 99||player1>99){
break point;
}
map.showmap(player1, player2);
}else{
System.out.println("\n" + name+ "停止一次!\n");
gostop[0] ="go";
}
if(gostop[1].equals("go")){
temp= throwSezi1();
System.out.println("\n****************");
// System.out.println("骰子数: "+ temp);
player2 = getto(2, player2, temp);
//System.out.println("\n玩家2总步数: "+ player2);
System.out.println("\n:"+name1+"投了"+temp+"步");
System.out.println("****************\n");
//player2+=player2;
map.showmap(player1, player2);
//System.out.println("玩家2步数"+player2);
if(player2 >=99){
break point;
}
}else{
System.out.println("\n" + name1+ "停止一次!\n");
gostop[1] ="go";
}
}
if(player2==99||player2>99){
result( );
} if(player1==99||player1>99){
result( );
}
}
public int throwSezi(){
int temp = 0;
System.out.print("\n"+name+",请按下回车键开掷骰子:");
input.nextLine();
temp = (int)(Math.random()*6+1);
System.out.print(temp);
return temp;
}
public int throwSezi1(){
int temp = 0;
System.out.print("\n"+name1+",请按下回车键开掷骰子:");
input.nextLine();
temp = (int)(Math.random()*6+1);
System.out.print(temp);
return temp;
}
public int getto(int num3,int position,int temp){
int flag=0;
position=position+temp;
if(position >= 99){
return 99;
}
switch(map.map[position]){
case 0: //走到普通格
if(num3 == 1 && player2 == position){ //玩家1与玩家2相遇
//踩到对方,对方回到原点
player2 =0;
System.out.println("碰撞了");
}
if (num3 == 2 && player1 == position){ //玩家2与玩家2相遇
//踩到对方,对方回到原点
player1 = 0;
System.out.println("碰撞了");
}
break;
case 1: //幸运轮盘1.交换位置 2.进行轰炸
System.out.println("\n恭喜你进入幸运轮盘");
System.out.println("【1】:交换位置 【2】:进行轰炸(对方回退6步)");
if(num3==1)
{
int operate=input.nextInt();
switch(operate){
case 1:flag=player1;
player1=player2;
player2=flag;break;
case 2: if(player2-6>0){
player2-=6;
}else{
player2=0;
}
}
}
if(num3==2)
{
int operate=input.nextInt();
switch(operate){
case 1:flag=player1;
player1=player2;
player2=flag;break;
case 2: player1-=6;
}
}
break;
case 2: //踩到地雷,回到temp步
position = temp;
System.out.println("踩到地雷");
break;
case 3: //设置下次暂停掷骰子
gostop[num3-1]= "off";
System.out.println("要暂停一局了。");
break;
case 4: //时空隧:隧道,加走10步
position = position + 10;
System.out.println("进入时空隧道");
break;
}
if(position < 0){
return 0;
}else if(position > 99){
return 99;
}else{
return position;
}
}
public void result(){
if(player1 > player2){
System.out.println("\n\n\n\n");
System.out.print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
System.out.println("$\t恭喜!玩家1获得了胜利!\t$");
System.out.print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
}else{
System.out.println("\n\n\n\n");
System.out.print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
System.out.println("$\t恭喜!玩家2获得了胜利!\t$");
System.out.print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
}
}
/*public int march(){
System.out.println(name+",请按下回车键开掷骰子");
input.nextLine();
int step=(int)(Math.random()*6+1);
System.out.println(name+"投了"+step+"步");
return step;
}*/
public static void main(String[] args) {
Game person=new Game();
person.init1();
}
}