java制作五子棋和象棋之一五子棋图形界面的设计



java制作五子棋和象棋之一五子棋图形界面的设计实例源码介绍。

参考一 java实践(八)——继承 

 

题目要求:

1.定义一个五子棋的棋盘。五子棋棋盘含有宽w,高h,行数r,列数c和边距align,网格为正方形宽和高都为size,画棋盘的方法public void paint(Griphics g)。

2.定义一个中国象棋的棋盘。象棋棋盘含有与五子棋相同的属性,画棋盘的方法名称相同,但算法不同。

3.设计一个抽象类Board,设计两个子类五子棋类(RenjuBoard)和中国象棋类(ChineseChessBoard)。

4.主窗体通过菜单选择,可以在窗体内实现对应棋盘。

 

效果如下:


 

代码如下:

1. 定义抽象类。

 

 

  1. package abstractChess;
  2. import java.awt.Graphics;
  3. public abstract class Board {
  4.     int w, h;// 宽和高,用像素为单位。
  5.     int c, r;// //列和行,列的线条和行的线条数用正整数表示。
  6.     int align;// 边距
  7.     int size;// 网格间距,网格距离窗体的距离
  8.     public abstract void paint(Graphics g);
  9. }

2.五子棋棋盘

 

 

 

  1. package abstractChess;
  2. import java.awt.BasicStroke;
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. public class RenjuBoard extends Board {
  9.     public RenjuBoard()// 无参构造函数
  10.     {
  11.         this.w = 0;
  12.         this.h = 0;
  13.         this.c = 0;
  14.         this.r = 0;
  15.     }
  16.     public RenjuBoard(int w, int h, int c, int r)// 有宽、高、列和行的构造函数
  17.     {
  18.         this.w = w;
  19.         this.h = w;
  20.         this.c = c;
  21.         this.r = r;
  22.     }
  23.     public RenjuBoard(int w, int h)// 只有宽和高数的构造函数
  24.     {
  25.         this(0, 0, 15, 15);
  26.         this.w = w;
  27.         this.h = h;
  28.     }
  29.     public void paint(Graphics g) {
  30.         align = 100;//棋盘距离窗体的网格距离
  31.         size = (w - 2 * align) / (c - 1);// 每一列的平均宽度
  32.         for (int y = 1; y < r-1; y++)// 划横线。留下四周边界不画
  33.         {
  34.             g.drawLine(0 + align, y * size + align, align + (c - 1) * size, y
  35.                     * size + align);
  36.         }
  37.         for (int x = 1; x < c-1; x++)// 划纵线。留下四周边界不画
  38.         {
  39.             g.drawLine(x * size + align, 0 + align, x * size + align, align
  40.                     + (r - 1) * size);
  41.         }
  42.         // 设置四周边线为粗线
  43.         float lineWidth = 3.0f;
  44.         ((Graphics2D) g).setStroke(new BasicStroke(lineWidth));
  45.         //划边界四周
  46.         g.drawLine(align, align, size * (c - 1) + align, align);
  47.         g.drawLine(align, size * (r-1) + align,size * (c - 1) + align, (r-1) * size+ align);
  48.         g.drawLine(align, align, align, (r-1) * size + align);
  49.         g.drawLine(align + size * (c - 1), align,align + size * (c - 1), (r-1) * size + align);
  50.     }
  51. }

 

http://blog.csdn.net/u012270113/article/details/38870885