五子棋操作

文章创建了一个基于JavaSwing的五子棋游戏UI,继承自JFrame,设置了窗口标题、大小和关闭选项。通过重写paint方法绘制棋盘背景和网格。实现MouseListener监听器来处理鼠标点击事件,判断并放置棋子。使用二维数组存储棋盘状态,确保每次下棋前检查位置合法性及棋子是否已存在。
摘要由CSDN通过智能技术生成
  1. 创建一个类,extends(继承) JFrame,

  1. 创建一个方法,设计窗口(标题,大小,关闭选项,可视化)

  1. 调用画笔方法并重写(画一个棋盘底色,网格)【颜色在画操作前】

  1. 创建一个监听器,实现implement MouseListener,并重写方法

  1. 在监听器中申明画笔Graphic

  1. 获取坐标,将坐标进行取整去余操作得相对坐标

  1. 窗体添加监听器,获取Graphic传到监听器

  1. 实现轮流下棋if(){换颜色}

  1. 利用相对坐标限定范围(坐标验证)

  1. 创建一个二维数组16*16

  1. 根据相对坐标作为下标,存储棋子数据

  1. 下棋前判断是否有棋子

  1. 还原坐标,利用还原坐标画实心圆

package review.五子棋;

import javax.swing.*;

import java.awt.*;

1.public class GBUI extends JFrame {

7. GListener gListener=new GListener();

2. public void inUI(){

setTitle("五子棋");

setSize(700,800);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

7. addMouseListener(gListener);

gListener.g=getGraphics();

}

3.@Override

public void paint(Graphics g) {

g.setColor(Color.ORANGE);

g.fillRect(0,0,getWidth(),getHeight());

int X=50,Y=75,R=15,SIZE=35;

for (int i=0;i<=R;i++){

g.setColor(Color.BLACK);

g.drawLine(X,Y+i*SIZE,X+R*SIZE,Y+i*SIZE);

g.drawLine(X+i*SIZE,Y,X+i*SIZE,Y+R*SIZE);

}

}

public static void main(String[] args) {

GBUI gbui=new GBUI();

gbui.inUI();

}

}

package review.五子棋;

import javax.swing.*;

import java.awt.*;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

4.public class GListener implements MouseListener {

5. Graphics g;

8.int chessplayer=1;

10.int[][] chessArr=new int[16][16];

@Override

public void mouseClicked(MouseEvent e) {

6.int x=e.getX();

int y=e.getY();

//化整去余

int a=(x-50+(35/2))/35;

int b=(y-75+(35/2))/35;

9.if (a>15||b>15){

JOptionPane.showMessageDialog(null,"无法在此处下棋");

return;

}

12.if (chessArr[a][b]!=0){

JOptionPane.showMessageDialog(null,"该处已有棋子");

return;

}

8.if (chessplayer==1){

g.setColor(Color.BLACK);

chessplayer=2;

} else if (chessplayer==2) {

g.setColor(Color.WHITE);

chessplayer=1;

}

//储存

11. chessArr[a][b]=chessplayer;

//还原

13. int cx=a*35-35/2+50;

int cy=b*35-35/2+75;

g.fillOval(cx,cy,35,35);

}

@Override

public void mousePressed(MouseEvent e) {

}

@Override

public void mouseReleased(MouseEvent e) {

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值