java练手项目一【五子棋:paint画棋盘】

这一篇主要是画棋盘和棋子的代码 


import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;


public class Board extends JPanel implements BoardDraw{
    //定义一个记录棋子位置的二维数组
    public int[][] weiZhi = new int[15][15];
    //定义一个画笔
    public Graphics g;

    public static void main (String args[]){
        Board gb = new Board();//首先初始化一个五子棋的对象
        //然后初始化桌面
        gb.initB();
    }
    public void initB(){
        JFrame jf = new JFrame();//1、新建一个Frame
        jf.setTitle("five in a raw");//给这个frame一个名字
        jf.setSize(800,600);//设置frame大小
        jf.setLocationRelativeTo(null);//这个就是设置窗口位置,要是没有就默认是中间显示
        jf.setDefaultCloseOperation(3);//这里就是点关闭就是关闭


        //然后就开始设置布局,这里用的是boarder的那种
        jf.setLayout(new BorderLayout());

        //这种设置方法可以重复使用尺寸,也可以不用下面这种,在每个设置尺寸的地方手动打尺寸
        //设置一些固定大小的框框
        Dimension d1 = new Dimension(150,250);//设置右边的框框的大小
        Dimension d2 = new Dimension(140,40);//设置右边框框内的按键大小
        Dimension d3 = new Dimension(500,150);//设置左边大小


        //setPreferredSize(d3);//设置棋盘部分
        //这里设置大小也可以换成,setSize;setSize是设定的固定大小,而setPreferredSize仅仅是设置最好的大小,
        // 这个不一定与实际显示出来的控件大小一致(根据界面整体的变化而变化
        this.setSize(500,450);//类要是不extends JPanel就用不了this这种写法
//        this.setPreferredSize(d3);

        this.setBackground(Color.orange);//设置背景色
        jf.add(this,BorderLayout.CENTER);//布局是放在中间

        //现在设置右边的界面
        JPanel jp =new JPanel();//新建一个Panel
        jp.setPreferredSize(d1);//设置大小
        jp.setBackground(Color.white);//设置颜色
        jf.add(jp,BorderLayout.EAST);//把panel加到之前的那个frame上,并且放在右边
        jp.setLayout(new FlowLayout());//顺序排列


        //把按钮放在JPanel上
        String[] buttonName={"start","undo","give up"};//设置按钮名字
        JButton[] button = new JButton[3];//新建按钮对象数组
        //设置按钮大小、并放到右侧
        for(int i =0;i<buttonName.length;i++){
            button[i]=new JButton(buttonName[i]);//分别把每个按钮命名
            button[i].setPreferredSize(d2);//设置按钮大小
            jp.add(button[i]);//将按钮添加到Panel上

        }
        //监控按钮
        //注意这里直接添加this会提示需要implements BoardDraw项,所以得去类那添加一下
        ButtonListener buttonListener = new ButtonListener(this);
        for (int i=0;i<button.length;i++){
            button[i].addActionListener(buttonListener);//这里对每个按键进行了注册
        }




        //显示图像
        jf.setVisible(true);
    }
    //画棋子
    //重写一下paint方法
    public void paint(Graphics g){
        super.paint(g);

        //重绘paint
        g.setColor(Color.black);
        for (int i=0;i<row;i++){
            g.drawLine(x,y,x,y+size*row);//这里写的是错的,等之后再调整
        }
        for (int j =0;j<col;j++){
            g.drawLine(x,y,x+size*col,y);
        }

        //这里,需要把棋子的绘画过程也放在这里,注意要定义一个位置的二维数组,方便记录没有下过的位置
        for (int i=0;i<row;i++){
            for (int j =0;j<col;j++){
                if (weiZhi[i][j]==1){
                    int qi_x=size*i+20;
                    int qi_y=size*j+20;
                    g.setColor(Color.black);
                    g.fillOval(qi_x,qi_y,20,20);

                }
                else if(weiZhi[i][j]==2){
                    int qi_x=size*i+20;
                    int qi_y=size*j+20;
                    g.setColor(Color.WHITE);
                    g.fillOval(qi_x,qi_y,20,20);

                }
            }
        }



    }


}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值