五子棋棋局存储与管理系统

五子棋棋局存储与管理系统,第1张

五子棋棋局存储与管理系统

关键词:Java Swing 五子棋 多线程 UI 快速开发

欢迎访问我的CSDN

你好,寻觅于互联网的码农同学! 这是我第一次使用 CSDN 来发布自己的代码作业,希望能对你的编程任务有所帮助。

文章编写之时,我在东北大学攻读软件工程专业,准确来说,尝试完成软件需求分析的作业。老师为了向同学们展示软件需求的重要性,给我们下达了一份模糊的软件需求说明,大体上需要编写一个被称为五子棋棋局存储与管理系统的纯Java程序。

编写完代码之后的我发现,这似乎是一个适合Java Swing初学者的任务。所以我发表了这篇文章,试图辅助相关同学。这也算是我对一直被用来查询资料的互联网的一种贡献吧,发扬互联网精神。

互联网精神:开放、平等、协作、快速、分享

文章目录
  • 欢迎访问我的CSDN
  • 声明
  • 编程任务/需求
    • 功能要求
    • 技术要求
  • 任务评价/个人理解
    • 需求新增
    • 需求删除
    • 需求修改
  • 具体设计
    • 类的抽象
    • 界面设计
    • 交互设计
  • 快速编程实现
    • 类实现
    • 界面实现
    • 交互实现
    • 多线程实现
  • 代码优化
    • 类封装
    • 职责分离
    • 多线程维护
  • Google编码规范
  • 程序分享
    • jar打包
    • 关于JDK版本
  • 编程过程中遇到的问题
    • 环境配置
    • 文件读写
  • 实际应用
    • 与同学的对战
  • 打包发布
    • exe4j打包
    • install4j打包

声明

为了避免有些同学看了文章之后心里不太舒服,在开头先多说几句话:

编码规范
这只不过是一个很小的作业,给的时间并不多,而且还是一个人编写的。所以我在程序编写过程当中,有很多不符合实际开发规范的写法。我这样做只是单纯为了提高效率,这个只能说是个人的权衡问题吧,欢迎大家的批判。

设计模式
如果你知道我在说什么的话,我的回答是:
什么设计模式都没用,别骂了,别骂了、、、就这点破功能,又不是团队开发,又不会有需求变更(冒汗)
所以咱不要以小见大了好不?

License
这个的话,如果你还是知道我在说什么,我的回答是:MIT License. 诶,爷就是玩儿。爱折腾的同学你就自己去整这个协议去吧,懒的话也无所谓,反正我也懒得找你。
说人话啊咱,借鉴什么的,不用我多说吧,但是如果你的借鉴在某些情况下产生了不良影响,那我不会负责的。

估计有些同学看完心里更不舒服了QwQ

编程任务/需求

以下是原文:

针对日常线下五子棋比赛,传统比赛情况记录方式有纸质记录、拍照或录像等。虽然,能将比赛过程与结果都能很好记录下来,但是无法做到对比赛过程进行数字化处理。这样,后期就不能对棋局、选手做数据分析,也就无法进行针对棋手进行个性化指导和训练。所以,准备开发建设“五子棋棋局记录与管理系统”。

这一系统要实现以下功能:

功能要求
  1. 系统登录功能:输入账号、密码能登录系统,棋局信息存储需关联在当前账户下;
  2. 棋局实时记录功能:首先要记录参赛选手信息、比赛等信息,然后进入棋局记录界面。在主界面上有“16*16 棋盘”,根据选手下棋过程依次在棋盘上放置黑白棋,比赛结束后,要记录结果信息;
  3. 过程信息同步记录功能:在记录棋手下棋时,要尽可能保证与棋手下棋同步,系统要记录下来每一步的时间,同时,在棋子上标识是是第几步(从 1 开始标识);
  4. 棋局回放功能:可以在未开始下棋的情况下,调取当前账号下已分胜负(完赛)的 棋局记录,选择某一条历史记录后,可在棋盘上自动回放整个棋局下棋的过程,自动落子时间间隔需与实际下棋时一致;
  5. 实时存档功能:可以在棋局记录过程的任意时间点点击,保存当前棋局的进度,提示存档成功;
  6. 棋局(谱)搜索功能:根据棋手、比赛等条件,找到对应的棋局。即可以回放比赛过程,也可以直接看最后结果。
  7. 管理功能:管理员账号通过同一登录页登录,进入棋局管理页面,可以查看全部棋局记录,也可以进行系统管理;
  8. 系统管理功能:其中有用户管理、权限管理等功能;
技术要求
  • 开发语言 JAVA,JDK1.8(包含)以上;可以做 application,也可以做 applet,自己定义;
  • 要参考 google 编码规范进行编码;
  • 上传代码文件时,源代码是 java 文件;运行代码先打包为 JAR 文件,然后生成 EXE可执行文件;这两类文件最后上传时都要压缩为 ZIP 文件上传;
  • 以上功能必须完成的是第 1、2、3、4 功能,第 5、6、7、8 功能不做要求,自定;
任务评价/个人理解

现在下个五子棋都不安宁了呢、、、
我结合自身经验单方面对这些需求进行了修改

需求新增
  • 通过滑条控制回放
    以便用户快速跳过一大段落子过程,而且用户掌控感更强
  • 悔棋功能
    人生不让后悔,我下棋悔个棋也不行吗QwQ
  • 游戏中回放当前棋局
    这个就叫死亡回放好了,可以看看你和对手是如何把控制权抛来抛去的
  • 选择对手和先行者
    单看登陆信息无法生成对手和其他对战信息
需求删除
  • 玩家权限管理
    设置查看权限无可厚非,我刚刚跟马同学那局下输了我还想删除呢。但这个玩家权限管理吧,就很……给你admin账号就是开天恩了好不 (¬_¬
  • 玩家删改查
    玩家能注册就行了吧,增删改就是徒增烦恼。到时候写完了,估计我自己都不清楚,这是个用户管理系统还是棋局管理系统 -_-)
  • 棋局查找
    普通玩家,给个按时间排序的回放功能就差不多得了。我看到有同学要求用户给每局棋取名字……这单次使用成本有点高啊,感觉为了查找方便有点得不偿失
需求修改
  • 棋盘为15*15
    国标不解释
  • 棋局信息存入棋局数据库,打上用户的标签
    emmmm难得看到在需求文件里面对技术实现有要求的,它似乎是要求我用图数据库,但是用普通的关系型数据库会更方便
  • 仅在需要时在棋子上表示步数
    根据实际情况来看,一直在棋子上显示步数会影响棋子的视觉效果,让棋手与UI为敌
  • 记录时无误差,回放时有50ms左右的误差
    纯技术问题,记录很简单,因为是用户产生时间间隔;相较之下,回放的话,机器产生不定长时间间隔,会有误差
  • 管理界面不能回放棋局
    系统管理和棋局回放是两种需求,没有并发的需求;管理界面给个终局快照就够了(虽然这个功能我压根儿没写)
具体设计

哼,来了吗?/ 吾之宿敌,“Java电脑程式设计与编写”哟 / 吾之封印,解放:

类的抽象

关键词抓取:账户/棋手 账号 密码 棋局 下棋过程 棋盘 棋子 颜色 时间 次序 存档 登陆页 主界面 回放界面

包含关系分析:

界面设计

本着简介的原则,我在设计界面的时候尽可能去复用组件和面板
最终敲定了这个只用了两个面板的版本:

LoginView

MainView

未填完的坑,最后更新于2021.10.12 02:21:13 a.m.


交互设计 快速编程实现 类实现 界面实现 交互实现 多线程实现 代码优化 类封装 职责分离 多线程维护 Google编码规范

魔法数值
void return;
if();
syout

程序分享 jar打包 关于JDK版本 编程过程中遇到的问题 环境配置 文件读写 实际应用 与同学的对战 打包发布 exe4j打包 install4j打包

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/3977849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存