栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java五子棋NO.1

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java五子棋NO.1

先来看看效果

目录

先来看看效果

总体介绍

具体过程

1.创建接口GobangCinfig1,备用

2.创建界面UIZ

3.画图,开始画棋盘

4.创建鼠标监听器 GoBangListener


总体介绍

主要有界面、绘图、鼠标监听器三部分构成。

1.界面中构建窗体,作为棋盘的主要载体。

2.绘图,利用画笔画出棋盘,棋子(黑白色的圆形图案)。

3.鼠标监听器,利用鼠标点击功能与界面画笔实现链接。

具体过程

1.创建接口GobangCinfig1,备用
public interface GobangConfig1 {
//配置值 X和Y为左上角七点坐标,SIZE为间隔,C为横向间隔数,R为纵向间隔数
int X=50;
int Y=50;
int SIZE=50;
int C=15;
int R=15;

}

2.创建界面UIZ

1.创建界面组合类,在界面组合类中声明方法、创建主函数并调用方法

import javax.swing.*;
import java.awt.*;

//此处不再用 Jframe jf=new Jframe(); 直接用继承 extends Jframe implements GobangConfig1
public class UIZ extends Jframe implements GobangConfig1{


public void initGobangUIZ() {
        this.setTitle("五子棋-NO.1");
        this.setSize(850, 850);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setVisible(true);


}


//创建主函数,并调用方法
 public static  void main(String[] args) {
        new UIZ().initGobangUIZ();

    }

}

3.画图,开始画棋盘

先在窗体左上角画两条垂直的直线,不要超出窗体数值

//创建画笔对象 
 //Graphics-画笔
        Graphics g = this.getGraphics();


//声明画笔 
public void paint(Graphics g){
        super.paint(g);



//画两条垂直的线

//横线,纵坐标不变。起点坐标,终点坐标
g.drawLine(X=50,Y=50,X=500,Y=50);
//竖线,横坐标不变
g.drawLine(X=50,Y=50,X=50,Y=500);

}

PS:而棋盘不止两条线,需要多跟横线和竖线,所以想到用for循环,用画棋盘这部分代码来代替画两条垂直的线的代码。

// 画棋盘
        for(int i = 0;i <= C;i++){

           // 画多条横线,第一个点的横坐标每次不变,纵坐标每次加上间隔
            g.drawLine(X,Y+i*SIZE,X + C * SIZE,Y + i * SIZE);

            //画多条竖线,第一个点的纵坐标每次不变,横坐标每次加上间隔
            g.drawLine(X + i * SIZE,Y,X + i * SIZE,X + C * SIZE);

4.创建鼠标监听器 GoBangListener
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class GoBangListener implements MouseListener,GobangConfig1{
    Graphics g;
    
    public GoBangListener(Graphics g){ this.g=g;   }
    int flag=0;


@Override
    public void mousePressed(MouseEvent e){
      //获取鼠标按下的坐标
      int x = e.getX();
      int y = e.getY();

      //判断语句
        if(flag==0){
          g.setColor (Color.BLACK);
          flag=1;
        }else{
           g.setColor (Color.WHITE);
           flag=0;
        }
        //圆的外切矩形左上角
        g.fillOval(x-SIZE/2,y-SIZE/2,SIZE,SIZE);
    }
@Override
    public void mouseClicked(MouseEvent e){}

@Override
    public void mouseReleased(MouseEvent e){}

@Override
    public void mouseEntered(MouseEvent e){}

@Override
    public void mouseExited(MouseEvent e){}



}

5.在界面UIZ中加入监听器

//监听器
        GoBangListener gl = new GoBangListener(g);

        //给界面加上鼠标监听器
        this.addMouseListener(gl);

至此,界面UIZ中的完整代码为:

import javax.swing.*;
import java.awt.*;

public class UIZ extends Jframe implements GobangConfig1 {

    public void initGobangUIZ() {
        this.setTitle("五子棋-NO.1");
        this.setSize(850, 850);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setVisible(true);

        //Graphics-画笔
        Graphics g = this.getGraphics();

        //监听器
        GoBangListener gl = new GoBangListener(g);

        //给界面加上鼠标监听器
        this.addMouseListener(gl);


}
public void paint(Graphics g){
        super.paint(g);

    // 画棋盘
        for(int i = 0;i <= C;i++){

           // 画多条横线,第一个点的横坐标每次不变,纵坐标每次加上间隔
            g.drawLine(X,Y+i*SIZE,X + C * SIZE,Y + i * SIZE);

            //画多条竖线,第一个点的纵坐标每次不变
            g.drawLine(X + i * SIZE,Y,X + i * SIZE,X + C * SIZE);

        }
    }
    public static  void main(String[] args) {
        new UIZ().initGobangUIZ();


    }


}

执行代码,结果为

 

 虽然实现了黑白起轮流下一子,初步矫正了坐标,使得鼠标所点击之处成为了棋子的中心位置,但并没实现矫正鼠标点击之处、棋子不相互重叠的问题,期待下次解决此问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号