JavaSE 实战五子棋中国象棋(单机简易版)

news2024/11/16 23:40:48
介绍

JavaSE实践五子棋和中国象棋游戏,棋盘,棋子绘制,输赢判定重置棋盘,单机博弈。

五子棋棋盘
中国象棋棋盘
使用说明
  1. 启动类 Main.java, 面板类 Panel.java绘制棋盘和玩法,实体类 ChessPiecesNode.java
  2. 启动类 Main.java中的 listener 方法监听五子棋结束状态
//监听游戏结束自动重绘面板
public static void listener(Panel panel, JFrame jFrame) {
    panel.addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            if (evt.getPropertyName().equals("status") && evt.getNewValue() != null && (Boolean) evt.getNewValue()) {
                com.xq.cn.views.Panel panelNew = new Panel(TypeEnum.GOMOKU.getType(), 800, 800, 15, 15);
                jFrame.add(new JLabel("This is Panel 2"));
                jFrame.remove(panel);
                jFrame.add(panelNew);
                jFrame.revalidate(); // 重新验证布局
                jFrame.repaint();// 请求重绘组件
                listener(panelNew, jFrame);
            }
        }
    });
}
  1. 面板类 Panel.java绘制棋盘和玩法 在这里插入图片描述
    五子棋判断五子一线的算法如上图,观察数据后得出结论为:五子一线时组成的数列刚好是一组等差数列,由此得出下方的算法
//获取任意节点连成五子的所有可能
public List<Integer> arithmeticSequence(Integer id, Integer step) {
    //1、等差步长为step的等差数列
    List<Integer> listStep = new ArrayList<>();
    for (int i = 1; i <= 5; i++) {
        listStep.add(id + ((i - 1) * step));
    }
    for (int i = 1; i <= 5; i++) {
        int num = id - ((i - 1) * step);
        if (num <= 0) {
            break;
        }
        listStep.add(num);
    }
    eturn listStep;
}
  1. 实体类 ChessPiecesNode.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ChessPiecesNode {
    /**
     * 坐标点(交点索引,从左往右,从上往下计数)
     */
    private Integer id;

    /**
     * 坐标点x
     */
    private Integer x;

    /**
     * 坐标点y
     */
    private Integer y;

    /**
     * 在棋盘中对应的最小点击点位对应的坐标点x
     */
    private Integer minX;

    /**
     * 在棋盘中对应的最小点击点位对应的坐标点y
     */
    private Integer minY;

    /**
     * 在棋盘中对应的最大点击点位对应的坐标点x
     */
    private Integer maxX;

    /**
     * 在棋盘中对应的最大点击点位对应的坐标点y
     */
    private Integer maxY;

    /**
     * 坐标点使用状态(0-未被使用,1-已使用)
     */
    private Integer status;

    /**
     * 棋子对应的颜色
     */
    private Color color;

    /**
     * 被使用的类型(黑/白)
     */
    private Integer type;

}
视频展示

项目地址

传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1812531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新增多种图表类型,新增视频、流媒体、跑马灯组件,DataEase开源数据可视化分析工具v2.7.0发布

2024年6月11日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.7.0版本。 这一版本的功能变动包括&#xff1a;图表方面&#xff0c;新增对称条形图、桑基图、流向地图、进度条等图表类型&#xff0c;并对已有的仪表盘、指标卡、明细表、汇总表、水波图、象限…

芯片验证分享6 —— 激励开发4

大家好&#xff0c;我是谷公子&#xff0c;上节课跟大家分享了黑盒设计的几种常用方法。今天我们来讲激励的白盒设计和灰盒设计。 白盒设计允许我们检查芯片的内部结构。这种验证策略对芯片的逻辑结构进行检查&#xff0c;从中获取验证数据&#xff0c;遗憾的是&#xff0c;这…

IINA for Mac v1.3.5 安装教程(保姆级)

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试1、打开软件&#xff0c;测试2、查看版本号 **安装完成&#xff01;&#xf…

js之简单轮播图

今天给大家封装一个简单的轮播图,可以点击下一张上一张以及自动轮播 <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>走马…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除 Object划分批量删除/添加参考 Object划分 数据库中对于一张表的数据&#xff0c;由于拥有隐私字段、多余字段、字段过少等原因&#xff0c;不应该直…

IP服务器代理如何设置使用?

IP服务器代理&#xff08;通常称为代理IP或代理服务器&#xff09;的设置和使用方法可以根据不同的需求和场景而有所不同。以下是一个清晰的步骤指南&#xff0c;帮助你设置和使用IP服务器代理&#xff1a; 1. 选择合适的代理IP类型 根据使用目的的不同&#xff0c;可以选择不…

Echarts 绘制地图(中国、省市、区县),保姆级教程!

前言&#xff1a;大家好呀&#xff0c;这篇讲述 VueEcharts 绘制地图&#xff08;中国、省市、区县&#xff09;&#xff0c;保姆级教程&#xff01;话不多说&#xff0c;上干货&#xff1a; 先安利两个网址&#xff0c;是制作地图的资源&#xff1a; DataV.地图GeoJSON数据 Ap…

微软将于 2024 下半年开始淘汰 VBScript

微软将于 2024 下半年开始淘汰 VBScript 微软宣布将从 2024 年下半年开始弃用 VBScript&#xff0c;使其成为一项按需功能 (Features on Demand&#xff0c;FOD)&#xff0c;直至完全删除。 按需功能是 Windows 操作系统中的可选功能&#xff0c;如 .NET Framework&#xff…

算法金 | D3blocks,一个超酷的 Python 库

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 1 选武入道 - 概况速览 库简介&#xff1a;D3Blocks是一个基于d3 javascript (d3js)的图形库&#xff0c;通过只需少量的Python代码就能…

安全相关的一些基础知识(持续更新)

目录 1. TRNG真随机数生成 2. 对称加密和非对称加密及其区别 3. Hash算法&#xff08;摘要算法&#xff09; 4. HTTPS、TLS、SSL、HTTP区别和关系 HTTPS的基本原理 5. PSS 1. TRNG真随机数生成 True Random Number Generator 在真随机数的生成里&#xff0c;把随机数的生…

MySQL学习(2):数据库相关概念及windows环境下安装

1.数据库、数据库管理系统、SQL 主流的关系型数据库有4种&#xff1a;oracle、mysql、SQLserver、PostgreSQL&#xff0c;它们都是SQL语言控制的 2.windows系统安装mysql 2.1下载安装包 mysql分为社区版&#xff08;免费&#xff09;和商业版&#xff08;30天试用&#xff09…

面试题:ArrayList和LinkedList的区别

ArrayList和LinkedList都是Java中实现List接口的集合类&#xff0c;用于存储和操作对象列表&#xff0c;但它们在内部数据结构、性能特性和适用场景上有所不同&#xff1a; 1.内部数据结构&#xff1a; ArrayList&#xff1a;基于动态数组实现。这意味着它在内存中是连续存储…

NodeJS体育用品销售管理系统-计算机毕业设计源码88807

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

BDD100k

摘要 数据集推动视觉进步&#xff0c;但现有的驾驶数据集在视觉内容和支持任务方面都很贫乏&#xff0c;以研究自动驾驶的多任务学习。研究人员通常被限制在一个数据集上研究一小部分问题&#xff0c;而现实世界的计算机视觉应用需要执行各种复杂的任务。我们构建了一个包含10…

一张试卷

目录 问题 1: 1.时间 题目描述1 输入1 输出1 样例输入1 样例输出1 提示1 代码1 问题 2: 超酷的电话号码 题目描述2 输入2 输出2 样例输入2 样例输出2 提示2 代码2 问题 3:3.爸爸的数学题 题目描述3 输入3 输出3 样例输入3 样例输出3 提示3 代码3 问题 4: 4. 营养膳食 题目描述4…

c# 学习 3

显示转换 异常捕获 语法

Django面试题

1. 什么是wsgi&#xff1f; WSGI 是 “Web Server Gateway Interface” 的缩写&#xff0c;它是一种用于 Python Web 应用程序和 Web 服务器之间通信的标准接口。它定义了一组规则和约定&#xff0c;使 Web 服务器能够与任何符合 WSGI 规范的 Python Web 应用程序进行交互。 #…

Javascript学习之路:js中关于遍历总结

循环/遍历 循环&#xff0c;就是一遍又一遍的重复执行相同或者相似的代码循环结构的两个要素 循环体–要执行的相同或相似的语句循环条件–重复执行的次数&#xff0c;或者继续执行循环的条件 &#x1f449;while循环 while循环语法格式 while(boolean表达式){循环体语句}//…

3D高斯泼溅原理及实践【3DGS】

人工智能可能是我们这个时代的主要领域之一&#xff0c;它几乎可以用于从驾驶汽车到医疗保健甚至能够预防失明等所有领域&#xff0c;最近提出了一种新的 3D 重建方法。SNGULAR 及其人工智能团队希望了解有关 3D 重建技术的最新更新的更多信息。 目前可用于 3D 重建的许多 SOT…

[干货!必看文章]学会如何用L4级AI软件开发平台免费制作应用程序

前言&#xff1a; 自从ChatGPT问世以来&#xff0c;就掀起了全球AI大模型的浪潮。国外有Claude&#xff0c;Llama&#xff0c;Grok&#xff0c;Suno&#xff0c;国内有kimi&#xff0c;有智谱AI&#xff0c;有通义千问&#xff0c;还有文心一言... 国内大模型市场规模已经达到了…