java制作五子棋和象棋之一五子棋图形界面的设计实例源码介绍。
参考一 java实践(八)——继承
题目要求:
1.定义一个五子棋的棋盘。五子棋棋盘含有宽w,高h,行数r,列数c和边距align,网格为正方形宽和高都为size,画棋盘的方法public void paint(Griphics g)。
2.定义一个中国象棋的棋盘。象棋棋盘含有与五子棋相同的属性,画棋盘的方法名称相同,但算法不同。
3.设计一个抽象类Board,设计两个子类五子棋类(RenjuBoard)和中国象棋类(ChineseChessBoard)。
4.主窗体通过菜单选择,可以在窗体内实现对应棋盘。
效果如下:
代码如下:
1. 定义抽象类。
- package abstractChess;
- import java.awt.Graphics;
- public abstract class Board {
- int w, h;// 宽和高,用像素为单位。
- int c, r;// //列和行,列的线条和行的线条数用正整数表示。
- int align;// 边距
- int size;// 网格间距,网格距离窗体的距离
- public abstract void paint(Graphics g);
- }
2.五子棋棋盘
- package abstractChess;
- import java.awt.BasicStroke;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- public class RenjuBoard extends Board {
- public RenjuBoard()// 无参构造函数
- {
- this.w = 0;
- this.h = 0;
- this.c = 0;
- this.r = 0;
- }
- public RenjuBoard(int w, int h, int c, int r)// 有宽、高、列和行的构造函数
- {
- this.w = w;
- this.h = w;
- this.c = c;
- this.r = r;
- }
- public RenjuBoard(int w, int h)// 只有宽和高数的构造函数
- {
- this(0, 0, 15, 15);
- this.w = w;
- this.h = h;
- }
- public void paint(Graphics g) {
- align = 100;//棋盘距离窗体的网格距离
- size = (w - 2 * align) / (c - 1);// 每一列的平均宽度
- for (int y = 1; y < r-1; y++)// 划横线。留下四周边界不画
- {
- g.drawLine(0 + align, y * size + align, align + (c - 1) * size, y
- * size + align);
- }
- for (int x = 1; x < c-1; x++)// 划纵线。留下四周边界不画
- {
- g.drawLine(x * size + align, 0 + align, x * size + align, align
- + (r - 1) * size);
- }
- // 设置四周边线为粗线
- float lineWidth = 3.0f;
- ((Graphics2D) g).setStroke(new BasicStroke(lineWidth));
- //划边界四周
- g.drawLine(align, align, size * (c - 1) + align, align);
- g.drawLine(align, size * (r-1) + align,size * (c - 1) + align, (r-1) * size+ align);
- g.drawLine(align, align, align, (r-1) * size + align);
- g.drawLine(align + size * (c - 1), align,align + size * (c - 1), (r-1) * size + align);
- }
- }
http://blog.csdn.net/u012270113/article/details/38870885