五子棋控制台源码分享

今天查看eclipse上的代码,偶然发现了之前写过的一段小代码,感觉命名代码等都不是特别规范,不过还是想拿来和大家分享下。希望感兴趣的可以看下,里面有好多bug没进行处理,只是当时用来写着玩的。

package com.demo;


/**
 * Created by TT on 2017-01-12.
 * 五子棋
 */
public class test {


    public static void main(String[]args){
        QiPan qiPan=new QiPan(10,10);
        Player player=new Player("p1","o",qiPan);
//        player.xiaQi(0,0);
//        player.xiaQi(0,1);
//        player.xiaQi(0,2);
//        player.xiaQi(0,3);
//        player.xiaQi(0,4);


//        player.xiaQi(0,0);
//        player.xiaQi(1,1);
//        player.xiaQi(2,2);
//        player.xiaQi(3,3);
//        player.xiaQi(4,4);


        player.xiaQi(0,9);
        player.xiaQi(1,8);
        player.xiaQi(2,7);
        player.xiaQi(3,6);
        player.xiaQi(4,5);
    }
}


class QiPan{
    private Integer width;
    private Integer height;
    private String[][] qiPanArray;


    public QiPan(Integer width,Integer height){
        this.width=width;
        this.height=height;
        qiPanArray=new String[width][height];
        init();
    }


    public void init(){
        for(int i=0;i<qiPanArray.length;i++){
            for(int j=0;j<qiPanArray.length;j++){
                qiPanArray[i][j]="+";
            }
        }
        paint();
    }


    public void paint(){
        for(int i=0;i<qiPanArray.length;i++){
            for(int j=0;j<qiPanArray.length;j++){
                System.out.print(qiPanArray[i][j]);
            }
            System.out.println();
        }
        System.out.println();
        System.out.println("----------------------");
        System.out.println();
    }


    public String[][] getQiPanArray() {
        return qiPanArray;
    }


    public void setQiPanArray(String[][] qiPanArray) {
        this.qiPanArray = qiPanArray;
    }


    public void changeQiPan(Integer width,Integer height,String bOrw){
        this.qiPanArray[width][height]=bOrw;
        paint();
        if(isWin(bOrw,width,height)){
            System.out.println("已出胜负");
            System.exit(0);
        }
    }


    /**
     * 规则
     * @param bOrw
     * @param width
     * @param height
     * @return
     */
    private boolean isWin(String bOrw,Integer width,Integer height){
        //是否横着有5个连续
        if(isHeng(bOrw,height))
            return true;
        //是否竖着有5个连续
        if(isZong(bOrw,width))
            return true;
        //是否斜着有5个连续
        if(isXie(bOrw))
            return true;
        return false;
    }


    private boolean isHeng(String bOrw,Integer height){
        for(int i=0;i<6;i++){
            if(qiPanArray[i][height].equals(bOrw)&&qiPanArray[i+1][height].equals(bOrw)&&qiPanArray[i+2][height].equals(bOrw)&&qiPanArray[i+3][height].equals(bOrw)&&qiPanArray[i+4][height].equals(bOrw))
                return true;
        }
        return false;
    }


    private boolean isZong(String bOrw,Integer width){
        for(int i=0;i<6;i++){
            if(qiPanArray[width][i].equals(bOrw)&&qiPanArray[width][i+1].equals(bOrw)&&qiPanArray[width][i+2].equals(bOrw)&&qiPanArray[width][i+3].equals(bOrw)&&qiPanArray[width][i+4].equals(bOrw))
                return true;
        }
        return false;
    }


    private boolean isXie(String bOrw){
        try{
            for(int i=0;i<6;i++){
                for(int j=0;j<6;j++){
                    if(qiPanArray[i][j].equals(bOrw)&&
                            qiPanArray[i+1][j+1].equals(bOrw)&&
                            qiPanArray[i+2][j+2].equals(bOrw)&&
                            qiPanArray[i+3][j+3].equals(bOrw)&&
                            qiPanArray[i+4][j+4].equals(bOrw))
                        return true;
                }
            }
            for(int i=0;i<6;i++){
                for(int j=9;j>3;j--){
                    if(qiPanArray[i][j].equals(bOrw)&&
                            qiPanArray[i+1][j-1].equals(bOrw)&&
                            qiPanArray[i+2][j-2].equals(bOrw)&&
                            qiPanArray[i+3][j-3].equals(bOrw)&&
                            qiPanArray[i+4][j-4].equals(bOrw))
                        return true;
                }
            }
            return false;
        } catch (Exception e){
            return false;
        }
    }
}


class Player{
    private String name;
    private String bOrw;
    private QiPan qiPan;


    public Player(String name,String bOrw,QiPan qiPan){
        this.name=name;
        this.bOrw=bOrw;
        this.qiPan=qiPan;
    }


    public void xiaQi(Integer width,Integer height) {
        qiPan.changeQiPan(width, height, bOrw);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值