首页 > 其他 > 详细

Java编写的五子棋小游戏

时间:2014-03-05 09:00:27      阅读:292      评论:0      收藏:0      [点我收藏+]

看书的时候看到一个不完整的Java编写的一个五子棋小游戏,为了恢复一下编程能力刚刚把这个小程序完成了。

实现的功能很简单,两人对下五子棋,程序自动回判断输赢。在ubuntu下搞得,没有装什么高端的输入法的程序,所以用“*”和“X”来代表两个不同的棋子。

这个程序虽然简单但是还是有很多值得学习的地方。


首先,整个棋盘用二维数组表示。在Java中声明一个二维数组使用 type[][] arrName;的语句。

其次,我们需要给数组赋值,开始的时候是画棋盘使用的是“+”,给二维数组开辟空间和一维数组差不多。e.g.: arrName= new type[len1][len2];

判断游戏时候结束我们需要判断四个方向的棋子是不是连成了5个棋子。是的话游戏继续,否则退出。

整个代码的主要架构如下图所示:

bubuko.com,布布扣

其中initBoard负责初始化,printBoard负责打印更新整个面板,main做点常规操作赋值之类的,WinOrLose则负责判断游戏时候结束。

比较有价值的代码是输入这部分,可以根据特定符号分割输入的数据,值得收藏的代码:


 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String inputStr = null;
  inputStr=br.readLine();
  String[] str = inputStr.split(",");


以下为完整的代码。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Gobang {
    private String[][] board;
    
    private static int BOARD_SIZE = 15;
    
    private void initBoard(){
        board = new String[BOARD_SIZE][BOARD_SIZE];
        for (int i = 0; i<BOARD_SIZE; i++)
        {
            for (int j = 0; j<BOARD_SIZE; j++)
            {
                board[i][j]="十";
            }
        }
    }
   public void printBoard(){
       for (int i = 0 ; i < BOARD_SIZE;i++)
       {
           for(int j = 0; j< BOARD_SIZE; j++)
           {
                  System.out.print(board[i][j]);
           }
             System.out.print("\n");
       }
   }
   
   public int winOrLose(int x, int y, String star){
       int end = 0; 
       int xPos=x,yPos=y;
       int s1=0,s2=0,sum=0,time = 4;
       star = board[x][y];
       
       while(time !=0)
       {   
           //左斜
           for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--,j--)
           {
                  s1++;
           }
           for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++, j++)
           {
               s2++;
           }  
           sum = s1 + s2;
           if(sum==5)
           {
               end = 1;
               break;
           }
           else
           {
               s1=0; s2 = 0; sum = 0;
           }
           //右斜
           for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++,j--)
           {
                  s1++;
           }
           for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--, j++)
           {
               s2++;
           }  
           sum = s1 + s2;
           if(sum==5)
           {
               end = 1;
               break;
           }
           else
           {
               s1=0; s2 = 0; sum = 0;
           }
           //north and south
           for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); j--)
           {
                  s1++;
           }
           for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); j++)
           {
               s2++;
           }  
           sum = s1 + s2;
           if(sum==5)
           {
               end = 1;
               break;
           }
           else
           {
               s1=0; s2 = 0; sum = 0;
           }
           //we
           for(int i = x-1,j=y-1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i++)
           {
                  s1++;
           }
           for (int i=x+1,j=y+1; board[i][j] == star && (i>=0 && i< BOARD_SIZE) && (j>=0 && j< BOARD_SIZE); i--)
           {
               s2++;
           }  
           sum = s1 + s2;
           if(sum==5)
           {
               end = 1;
               break;
           }
           else
           {
               s1=0; s2 = 0; sum = 0;
           }
       }
       
       
       return end;
   }

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
           Gobang gb = new Gobang();
           gb.initBoard();
           gb.printBoard();
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
           String inputStr = null;
           int flag=0;
           int end=0;
           while ((inputStr = br.readLine()) != null )
           {
               String[] posStrArr = inputStr.split(",");
               
               int xPos = Integer.parseInt(posStrArr[0]);
               int yPos = Integer.parseInt(posStrArr[1]);
               if(flag==0)
               {
                   gb.board[xPos-1][yPos-1] = "*";
               }
               else
               {
                   gb.board[xPos-1][yPos-1] = "X"; 
               }
               flag++;
               gb.printBoard();
               end=gb.winOrLose(xPos-1, yPos-1, gb.board[xPos-1][yPos-1]);
               if(end ==1)
               {
                   break;
               }
           }
    }

}

Java编写的五子棋小游戏,布布扣,bubuko.com

Java编写的五子棋小游戏

原文:http://blog.csdn.net/chichoxian/article/details/20471343

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!