五子棋程序窗体实现

1.总窗体的绘制
之前已经了解过了Java中的一些关于窗体以及画图板的功能,这次就进行更加有难度一点的五子棋界面的绘制。
首先我们的五子棋界面还是显示在一个窗体上面,所以我们最基本的类,或者说我们的主函数还是在一个窗体的类中,或者是继承窗体类。关于窗体的种种设置,比如设置标题,设置大小,设置流式布局等等,最后一定要设置可见。这样就有了一个五子棋的显示界面,虽说里面什么都没有。
2.棋盘的绘制
我们日常生活中下的五子棋就是一个个小方格组成的,我们之前已经学过画图板,那么我们就可以通过画图板的绘制直线的功能来绘制一个个小方格。我们下的棋子就可以通过画图板的画圆的功能来实现。黑棋和白棋通过颜色的设定来实现。之后我们就只需要确定棋盘以及棋子的种种规格,也就是我们画的图形的参数。
这里的规格就可以声明一个接口来实现,当我们绘制的过程中需要用到某个规格的时候就可以直接通过接口的调用来实现。这样做的目的就是当我们需要改变棋盘的规格的时候就可以直接进行接口里面的数据改变,就不用找哪里使用了这个规格。
public interface config {

public static final int x0 = 50;   //开始画的x值
public static final int y0 = 50;   //开始画的y值
public static final int ROWS = 15;   //棋盘有多少行
public static final int columns = 15;   //棋盘有多少列
public static final int CHESS_SIZE = 40;   //棋子的半径大小
public static final int SIZE = 50;         //棋盘每个小方格的大小

}

这样当我们需要用到某个规格的时候就可以直接调用了。
比如我们这里需要画一个棋盘,就是一系列的横线与竖线。
for(int i=0;i<config.ROWS;i++)
g.drawLine(config.x0,config.y0+i*config.SIZE, config.x0+(config.columns-1)config.SIZE,
config.y0+i
config.SIZE);

	for(int i=0;i<config.columns;i++)
		g.drawLine(config.x0+i*config.SIZE, config.y0 , config.x0+i*config.SIZE,
				config.y0+(config.ROWS-1)*config.SIZE);

这样就画出了一个棋盘:
在这里插入图片描述
3.一些功能按键的绘制
既然我们需要实现的是一个五子棋的界面,那我们我们回忆一下我们玩过的五子棋游戏都有一些什么功能按键。一定会有一个“人机对战”“人人对战”“悔棋”“重新开始”等等一些功能按键,我们就先绘制这几个按键。
我们之前已经讲过按键的添加,在窗体上添加按键的流程。
一个add(button)就搞定了,但是当我们进行这个操作之后我们发现,我们添加的按钮就全部在窗体的最上面居中,这样就把我们刚刚绘制的棋盘给挡住了。若是我们想要把刚刚添加的全部放在窗体的右边,该怎么做。
我们这个时候就需要注意一下布局的问题。我们之前在绘制窗体的时候写过一句
this.setLayout(new FlowLayout());
这个就是设置流式布局,但是我们仅仅只使用流式布局就有点局限,当我们需要将按钮放在窗体的整体右侧的时候就需要再进行布局设置。
这里我们介绍一个新的类BorderLayout,这个类是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一。
在这里插入图片描述
在这里我们就可以清楚地看到每个方位具体位置,这里也就是我们想将这些按钮放在东边的位置。但是当我们使用这个类的时候用到的语句是add(对象名,BorderLayout.方位)。这时我们的对象是什么呢?按钮?但是当我们进行一个按钮的添加之后这样这个方位就不能添加其他东西了,这样就没意义了。这时我们可以把添加的对象变为一个块,然后再向这个块上面添加我们的一系列东西。
我们首先声明一个块,添加到东部east这个方位,然后再往里面添加按钮。
setLayout(new BorderLayout());
JPanel jp = new JPanel();
add(jp,BorderLayout.EAST);
jp.setBackground(Color.gray);
jp.setPreferredSize(new Dimension(200,0));
这个时候我们就可以直接往jp里面添加按钮了。
String[] typeArray ={“人机对战” , “人人对战” , “悔棋” ,“重新开始”};
for(int i=0 ; i < typeArray.length ; i++)
{
JButton button = new JButton(typeArray[i]);
button.setPreferredSize(new Dimension(200,30));
jp.add(button);
button.addActionListener(dl);
}
这样我们再运行出现的情况就是这样了:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40678512/article/details/83243151