首页 > 其他分享 >五子棋绘制v1.0

五子棋绘制v1.0

时间:2024-12-03 11:33:55浏览次数:11  
标签:gf int void 五子棋 v1.0 static 绘制 public SIZE

五子棋总的来说和画图板类似,首先画一个有正方形网格的图形,充当五子棋的底板,绘制棋子则是用Graphics画实心圆形,但是其中需要注意的有几个方面:

1.怎么实现黑白棋的交替落子?

2.如果点不准格子中间,怎么进行校正?

3.如果下在棋盘外面怎么办?

结构:

  •     界面类:

           创建一个窗体

           绘制一个网格棋盘

           给窗体添加鼠标监听器

  •     监听器类:

            实现鼠标监听

            鼠标按下时绘制棋子

            实现交替颜色绘制

            校准棋子的坐标

            限制落子的范围

public class GoBangUI{
    GoListener gl=new GoListener();
    public void showUI(){
        GoFrame gf=new GoFrame();
        gf.setTitle("五子棋v1.0");
        gf.setSize(850,900);
        gf.setLocation(500,100);
        gf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gf.setVisible(true);
        gf.addMouseListener(gl);
        gl.g=gf.getGraphics;
    }
    public static void main(String[]args){
        GoBangUI goBangUI=new GoBangUI();
        goBangUI.showUI();
    }
}
public class GoFrame extends JFrame{
    public void paint(Graphics g){//重写Paint方法
        super.paint(g);

        //绘制棋盘
        GoUtils.drawChessPad(g);
    }
}
public class GoUtils{
    static final int X=50;
    static final int Y=75;
    static final int ROW=15;
    static final int COL=15;
    static final int SIZE=50;//间距
    static int chessType=1;
  //static 静态,程序一开始时就开始执行;final,常量,不可变
    public static void drawChessPad(Graphics g){
        Color color=new Color(194, 188, 126);//设置背景颜色
        g.setColor(color);
        g.fillRect(X-SIZE/2,Y-SIZE/2,(COL+1)*SIZE,(ROW+1)*SIZE);
        g.setColor(Color.BLACK);
        for(int i=0;i<=COL;i++){
            g.drawLine(X+i*SIZE,Y,X+i*SIZE,Y+ROW*SIZE);
            g.drawLine(X,Y+i*SIZE,X+COL*SIZE,Y+i*SIZE);
        }
   
    }

}
public class GoListener extends GoUtils implements MouseListener{
    Graphics g;
    //int chessType=1;//1:黑棋,2:白棋,0,不能落子


    @Override
    public void mousePressed(MouseEvent e) {
        int x=e.getX();
        int y=e.getY();
        //换算行列值
        int c=(x-X+SIZE/2)/SIZE;
        int r=(y-Y+SIZE/2)/SIZE;

         //交替落子
        if (chessType == 1) {
            g.setColor(Color.BLACK);
            chessType = 2;

        } else if (chessType == 2) {
            g.setColor(Color.WHITE);
            chessType = 1;
        }
        //还原标准坐标
        int chessX=c*SIZE+X-SIZE/2;
        int chessY=r*SIZE+Y-SIZE/2;
        g.fillOval(chessX,chessY,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) {}

}

标签:gf,int,void,五子棋,v1.0,static,绘制,public,SIZE
From: https://blog.csdn.net/lxyfight/article/details/144095073

相关文章

  • 五子棋v2.0
    在基本绘制出五子棋之后,我们发现,拖动窗体之后,五子棋会消失,并且可以在同一位置下多个棋子,今天就来解决以下问题:1.重绘功能2.怎么判断某一个位置上有没有棋子方法:1.使用二维数组,将表格上的棋子转换为数组中的数据进行判定,运用chessType,为0时可以落子,为1,2时都不能落子2.运用......
  • 使用MATLAB从Excel文件读取数据并绘制堆叠柱状图
    在数据可视化中,堆叠柱状图是展示多个变量相对比例的非常有效的方法。它通过将每个数据系列堆叠在一起,帮助我们理解不同数据类别在总量中所占的份额。在这篇博客中,我们将学习如何使用MATLAB从Excel文件导入数据,并使用渐变色来绘制堆叠柱状图。我们还将探索如何选择和调整颜色,使......
  • Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌
    一、前言首先泼一盆冷水,在不同的电脑上实现完完全全的帧同步理论上是不可能的,市面上所有号称帧同步的播放器,同一台电脑不同拼接视频可以通过合并成一张图片来绘制实现完完全全的帧同步,不同电脑,受限于网络的延迟,命令交互的时间占用,不同硬件之间的主频偏差等,肯定会有些许的误差,只要......
  • 使用css3绘制一个QQ小企鹅的LOGO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>QQPenguin</title>......
  • 使用css3绘制一个圆形动态的时钟
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>CSSClock</title>......
  • 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后
    <!doctypehtml><html><head><metacharset="utf-8"><title>无标题文档</title></head><body><tableborder="1"id="tb"><tr><th>姓名</th><th>性别</th......
  • PHP和GD库如何根据像素绘制图形
    使用PHP和GD库,你可以根据像素绘制各种图形,比如点、线、矩形、圆形等。GD库是PHP的一个扩展,它提供了一系列用于创建和处理图像的函数。以下是一个简单的示例,展示如何使用GD库根据像素绘制图形。安装GD库首先,确保你的PHP环境已经安装了GD库。大多数现代的PHP发行版默认包含GD库......
  • 如何使用CSS绘制一个汉堡式菜单
    使用CSS绘制汉堡式菜单图标,通常用三个水平线表示,可以通过以下几种方法实现:1.使用三个<div>元素:这是最直观的方法,使用三个div分别代表三条横线,然后通过CSS设置它们的样式。<divclass="hamburger-menu"><divclass="bar"></div><divclass="bar"></div>&......
  • 在使用canvas的arc绘制图像时应注意什么?
    在使用Canvas的arc()方法绘制图像时,需要注意以下几点:1.坐标系和角度:arc(x,y,radius,startAngle,endAngle,counterclockwise)中的x和y指的是圆弧中心点的坐标,而不是左上角坐标。startAngle和endAngle是弧的起始角度和结束角度,以弧度为单位,不是角度。0弧度......
  • 【Python入门】绘制你的桌面应用:用Python WxPython库打造用户界面
    ......