java控制台飞行棋小程序

题目:
// 幸运轮盘:◆
// 地雷:★
// 暂停:■
// 时空隧道:〓
// 普通:∷
// 玩家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();
		}
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值