java学习ing——五子棋的制作(人人对战)
自从上次完成了一次画图板,接下来的一个小项目的制作就是五子棋。包括了人人对战还有就是人机对战。这一片文章就先说一下人人对战,人机之后再来完善
#^_^
先附一张效果图哈~
先来制定一个制作五子棋大体的一个思路吧:
1.要先有个窗体,有棋盘。
2.要能在上面画出棋子(也就是下棋),并且要完成黑白交替的下棋。
3.要能够判断输赢,判断是否有某个颜色的棋子五个相连。
人人的比较简单,基本的思路就是这样,然后再来一步步的完成。
制作前期的准备工作
我们可以先定义一个存放五子棋他各个属性的一个接口,这样在创建棋盘等等的地方就可以通过直接调用这个接口中的静态属性来完成。这样的好处就是在修改某一参数的时候就能够直接通过修改这个接口中的属性的数值来完成。
/*
* 五子棋相关属性的类
*/
public interface WZQ_config {
/*
*设置棋盘网格行数列数为15
*/
public static final int Row = 15;
public static final int Column = 15;
/*
* 设置棋盘初始位置坐标
*/
public static final int X = 30;
public static final int Y = 60;
/*
* 设置棋子大小
*/
public static final int Chess_size = 40;
/*
* 设置棋盘格子大小
*/
public static final int WZQ_JianJu = 40;
}
窗体界面的实现
实现五子棋界面的方法可能也是蛮多的,我知道的呢有一种是在一个窗体上面分别在指定的位置使用循环绘制横竖15条线来形成一个棋盘的网格。第二种方法是直接在一个窗体上面添加一个棋盘完整的图片,这种比较简单省事儿吧。~~但。我自己用的是绘制网格线的方法。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class WZQ_Board extends JFrame {
public Graphics g;
public static WZQ_Board wzq;
/*
* 重载构造方法
*/
public WZQ_Board() {
this.initUI();
}
/*
* 初始化界面的方法
*/
void initUI() {
/*
* 设置棋盘属性
*/
this.setTitle("吉吉的五子棋");
this.setSize(new Dimension(650, 650));
this.setResizable(false);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setLayout(null);
/*
* 添加一块棋盘
*/
this.setLayout(null);
JPanel jp = new JPanel() {
/*
* (non-Javadoc)定义一个匿名内部类重写paint方法
*
* @see javax.swing.JComponent#paint(java.awt.Graphics)
*/
public void paint(Graphics g) {
g.setColor(Color.BLACK);
super.paint(g);
// 画15行
for (int i = 0; i < 15; i++) {
g.drawLine(20, 20 + i * WZQ_config.WZQ_JianJu, 20
+ (WZQ_config.Column - 1) * WZQ_config.WZQ_JianJu,
20 + i * WZQ_config.WZQ_JianJu);
}
// 画15列
for (int i = 0; i < 15; i++) {
g.drawLine(20 + i * WZQ_config.WZQ_JianJu, 20, 20 + i
* WZQ_config.WZQ_JianJu, 20
+ (WZQ_config.Column - 1) * WZQ_config.WZQ_JianJu);
}
g.setColor(Color.BLACK);
g.fillOval(133, 133, 15, 15);
g.fillOval(293, 133, 15, 15);
g.fillOval(453, 133, 15, 15);
g.fillOval(133, 293, 15, 15);
g.fillOval(293, 293, 15, 15);
g.fillOval(453, 293, 15, 15);