剛學java  要弄一個4連棋
要跟下圖一樣  完全不懂
內容:
Make sure you understand how to play the Four in a Line game. For simplicity, we use the letter ‘1’ represent the disc of player1 and ‘2’ represent the disc of player1.
Your program shows a seven-column, six-row vertically-suspended grid and use 0 to present the space of the grid and ask players to select a column to input their discs.

解决方案 »

  1.   

    最关键的一点就是判断输赢
    算法:
    每下一粒字,判断 左 右 上 下 左上 右上 左下 右下 8个方向 
    你也可以判断四个。我给你一段我的判断输赢的方法实现(我的是5子棋)我把当前下的那里子的位置给保存下来了  是就currX和currY
    //判断是否有赢家
    private boolean haveWinner(){
    int x;
    int y;
    int sum;
      //判断左,右
    sum=0;
    y=currY;
    while(y > 1 && cb[currX][--y] == cb[currX][currY])
    {
    ++sum;
    }
    y=currY;
    while(y < cb[0].length-1 && cb[currX][++y] == cb[currX][currY])
    {
    ++sum;
    }
    if(sum>=4)
    return true; //判断上下
    x=currX;
    sum=0;
    while(x > 1 && cb[--x][currY] == cb[currX][currY])
    {
    ++sum;
    }
    x=currX;
    while(x < cb.length-1 && cb[++x][currY] == cb[currX][currY])
    {
    ++sum;
    }
    if(sum>=4)
    return true; //判断右下,左上
    x=currX;
    y=currY;
    sum=0;
    while(x > 1 && y > 1 && cb[--x][--y] == cb[currX][currY])
    {
    ++sum;
    }
    x=currX;
    y=currY;
    while(x < cb.length-1 && y < cb[0].length-1 && cb[++x][++y] == cb[currX][currY])
    {
    ++sum;
    }
    if(sum>=4)
    return true; //判断右上,左下
    x=currX;
    y=currY;
    sum=0;
    while(x > 1 && y < cb[0].length-1 && cb[--x][++y] == cb[currX][currY])
    {
    ++sum;
    }
    x=currX;
    y=currY;
    while(x < cb.length-1 && y > 1 && cb[++x][--y] == cb[currX][currY])
    {
    ++sum;
    }
    if(sum>=4)
    return true;
    //没人赢
    return false;
    }
      

  2.   

    import java.util.*;  // import class util
    public class IPgame {
         public static void main( String args[] ) {
          int array[][]={ {0,0,0,0,0,0,0},
                          {0,0,0,0,0,0,0},
                          {0,0,0,0,0,0,0},
                          {0,0,0,0,0,0,0},
                          {0,0,0,0,0,0,0},
                          {0,0,0,0,0,0,0}};
           int winer;
           int x=0;
           int play1,play2;
           Scanner sc = new Scanner(System.in);
    do{
            drawBroad(array); //call array
            System.out.print("player 1 type a column (0-6) or 9 to quit current game:");
            play1 = sc.nextInt();// player 1 input unmber
            {
            if(play1 == 0&&array[0][0]==0)// column 0
            array[0][0]=1;        else if (play1 == 0&&array[1][0]==0)
            array[1][0]=1;
           
            else if (play1 == 0&&array[2][0]==0)
            array[2][0]=1;
         
            else if (play1 == 0&&array[3][0]==0)
            array[3][0]=1;
            
            else if (play1 == 0&&array[4][0]==0)
            array[4][0]=1;
           
            else if (play1 == 0&&array[5][0]==0)
            array[5][0]=1;
            else if (play1 == 0&&array[5][0]!=0)
            System.out.print("please enter again, this Column is full! ");  
            else if(play1 == 1&&array[0][1]==0)// column 1
            array[0][1]=1;
            else if (play1 == 1&&array[1][1]==0)
            array[1][1]=1;
            else if (play1 == 1&&array[2][1]==0)
            array[2][1]=1;
            else if (play1 == 1&&array[3][1]==0)
            array[3][1]=1;
            else if (play1 == 1&&array[4][1]==0)
            array[4][1]=1;
            else if (play1 == 1&&array[5][1]==0)
            array[5][1]=1; 
            else if (play1 == 1&&array[5][1]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play1 == 2&&array[0][2]==0)// cloumn 2
            array[0][2]=1;
            else if (play1 == 2&&array[1][2]==0)
            array[1][2]=1;
            else if (play1 == 2&&array[2][2]==0)
            array[2][2]=1;
            else if (play1 == 2&&array[3][2]==0)
            array[3][2]=1;
            else if (play1 == 2&&array[4][2]==0)
            array[4][2]=1;
            else if (play1 == 2&&array[5][2]==0)
            array[5][2]=1;  
            else if (play1 == 2&&array[5][2]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play1 == 3&&array[0][3]==0)// cloumn 3
            array[0][3]=1;
            else if (play1 == 3&&array[1][3]==0)
            array[1][3]=1;
            else if (play1 == 3&&array[2][3]==0)
            array[2][3]=1;
            else if (play1 == 3&&array[3][3]==0)
            array[3][3]=1;
            else if (play1 == 3&&array[4][3]==0)
            array[4][3]=1;
            else if (play1 == 3&&array[5][3]==0)
            array[5][3]=1;
            else if (play1 == 3&&array[5][3]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play1 == 4&&array[0][4]==0)// cloumn 4
            array[0][4]=1;
            else if (play1 == 4&&array[1][4]==0)
            array[1][4]=1;
            else if (play1 == 4&&array[2][4]==0)
            array[2][4]=1;
            else if (play1 == 4&&array[3][4]==0)
            array[3][4]=1;
            else if (play1 == 4&&array[4][4]==0)
            array[4][4]=1;
            else if (play1 == 4&&array[5][4]==0)
            array[5][4]=1;
            else if (play1 == 4&&array[5][4]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play1 == 5&&array[0][5]==0)// cloumn 5
            array[0][5]=1;
            else if (play1 == 5&&array[1][5]==0)
            array[1][5]=1;
            else if (play1 == 5&&array[2][5]==0)
            array[2][5]=1;
            else if (play1 == 5&&array[3][5]==0)
            array[3][5]=1;
            else if (play1 == 5&&array[4][5]==0)
            array[4][5]=1;
            else if (play1 == 5&&array[5][5]==0)
            array[5][5]=1;
            else if (play1 == 5&&array[5][5]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play1 == 6&&array[0][6]==0)// cloumn 6
            array[0][6]=1;
            else if (play1 == 6&&array[1][6]==0)
            array[1][6]=1;
            else if (play1 == 6&&array[2][6]==0)
            array[2][6]=1;
            else if (play1 == 6&&array[3][6]==0)
            array[3][6]=1;
            else if (play1 == 6&&array[4][6]==0)
            array[4][6]=1;
            else if (play1 == 6&&array[5][6]==0)
            array[5][6]=1;
            else if (play1 == 6&&array[5][6]!=0)
            System.out.print("please enter again, this Column is full! "); 
            else if (play1== 9)
            break;
            else   
             System.out.print("Range of column should be (0-6)!");
             }       
            drawBroad(array);
        
      

  3.   

    //接上面
            drawBroad(array);
            System.out.println("player 2 type a column (0-6) or 9 to quit current game:");
            play2 = sc.nextInt(); // player 2 input number
          {
            if(play2 == 0&&array[0][0]==0)// column 0
            array[0][0]=2;
            else if (play2 == 0&&array[1][0]==0)
            array[1][0]=2;
            else if (play2 == 0&&array[2][0]==0)
            array[2][0]=2;
            else if (play2 == 0&&array[3][0]==0)
            array[3][0]=2;
            else if (play2 == 0&&array[4][0]==0)
            array[4][0]=2;
            else if (play2 == 0&&array[5][0]==0)
            array[5][0]=2;
            else if (play2 == 0&&array[5][0]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 1&&array[0][1]==0)// column 1
            array[0][1]=2;
            else if (play2 == 1&&array[1][1]==0)
            array[1][1]=2;
            else if (play2 == 1&&array[2][1]==0)
            array[2][1]=2;
            else if (play2 == 1&&array[3][1]==0)
            array[3][1]=2;
            else if (play2 == 1&&array[4][1]==0)
            array[4][1]=2;
            else if (play2 == 1&&array[5][1]==0)
            array[5][1]=2;
            else if (play2 == 1&&array[5][1]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 2&&array[0][2]==0)// cloumn 2
            array[0][2]=2;
            else if (play2 == 2&&array[1][2]==0)
            array[1][2]=2;
            else if (play2 == 2&&array[2][2]==0)
            array[2][2]=2;
            else if (play2 == 2&&array[3][2]==0)
            array[3][2]=2;
            else if (play2 == 2&&array[4][2]==0)
            array[4][2]=2;
            else if (play2 == 2&&array[5][2]==0)
            array[5][2]=2;
            else if (play2 == 2&&array[5][2]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 3&&array[0][3]==0)// cloumn 3
            array[0][3]=2;
            else if (play2 == 3&&array[1][3]==0)
            array[1][3]=2;
            else if (play2 == 3&&array[2][3]==0)
            array[2][3]=2;
            else if (play2 == 3&&array[3][3]==0)
            array[3][3]=2;
            else if (play2 == 3&&array[4][3]==0)
            array[4][3]=2;
            else if (play2 == 3&&array[5][3]==0)
            array[5][3]=2;
            else if (play2 == 3&&array[5][3]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 4&&array[0][4]==0)// cloumn 4
            array[0][4]=2;
            else if (play2 == 4&&array[1][4]==0)
            array[1][4]=2;
            else if (play2 == 4&&array[2][4]==0)
            array[2][4]=2;
            else if (play2 == 4&&array[3][4]==0)
            array[3][4]=2;
            else if (play2 == 4&&array[4][4]==0)
            array[4][4]=2;
            else if (play2 == 4&&array[5][4]==0)
            array[5][4]=2;
            else if (play2 == 4&&array[5][4]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 5&&array[0][5]==0)// cloumn 5
            array[0][5]=2;
            else if (play2 == 5&&array[1][5]==0)
            array[1][5]=2;
            else if (play2 == 5&&array[2][5]==0)
            array[2][5]=2;
            else if (play2 == 5&&array[3][5]==0)
            array[3][5]=2;
            else if (play2 == 5&&array[4][5]==0)
            array[4][5]=2;
            else if (play2 == 5&&array[5][5]==0)
            array[5][5]=2;
            else if (play2== 5&&array[5][5]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if(play2 == 6&&array[0][6]==0)// cloumn 6
            array[0][6]=2;
            else if (play2 == 6&&array[1][6]==0)
            array[1][6]=2;
            else if (play2 == 6&&array[2][6]==0)
            array[2][6]=2;
            else if (play2 == 6&&array[3][6]==0)
            array[3][6]=2;
            else if (play2 == 6&&array[4][6]==0)
            array[4][6]=2;
            else if (play2 == 6&&array[5][6]==0)
            array[5][6]=2;
            else if (play2 == 6&&array[5][6]!=0)
            System.out.print("please enter again, this Column is full! ");
            else if (play2== 9)
            break;
            else   
             System.out.print("Range of column should be (0-6)!");
             } }while(x!=1);  
    }
     public static void drawBroad(int a[][]){  //function draw updata array
       String output="";
       for(int row1 = 5; row1>=0; row1--){
           output+="\n" +row1+" |"+" ";
           for(int col=0; col<a[0].length; col++){
           output+=a[row1][col]+" ";
           }}
           System.out.println(output);
           System.out.println("    "+"-------------"+"\n"+"    0 1 2 3 4 5 6");
           } }
    應該差不多了
    就是判斷輸羸不懂弄
    例如: 111"2"222判斷左右 
    當我下了"2"  的時候就看左右 的3個位子是否都等於2
    但不懂怎寫和怎加上去 運行....
    哪位大大能幫我看看上面 要怎麼弄輸羸!!