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

题目要求:

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

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

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

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

效果如下:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

代码如下:

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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值