关键词:Java Swing 五子棋 多线程 UI 快速开发
欢迎访问我的CSDN你好,寻觅于互联网的码农同学! 这是我第一次使用 CSDN 来发布自己的代码作业,希望能对你的编程任务有所帮助。
文章编写之时,我在东北大学攻读软件工程专业,准确来说,尝试完成软件需求分析的大作业。老师为了向同学们展示软件需求的重要性,给我们下达了一份模糊的软件需求说明,大体上需要编写一个被称为五子棋棋局存储与管理系统的纯Java程序。
编写完代码之后的我发现,这似乎是一个适合Java Swing初学者的任务。所以我发表了这篇文章,试图辅助相关同学。这也算是我对一直被用来查询资料的互联网的一种贡献吧,发扬互联网精神。
文章目录互联网精神:开放、平等、协作、快速、分享
- 欢迎访问我的CSDN
- 声明
- 编程任务/需求
- 功能要求
- 技术要求
- 任务评价/个人理解
- 需求新增
- 需求删除
- 需求修改
- 具体设计
- 类的抽象
- 界面设计
- 交互设计
- 快速编程实现
- 类实现
- 界面实现
- 交互实现
- 多线程实现
- 代码优化
- 类封装
- 职责分离
- 多线程维护
- Google编码规范
- 程序分享
- jar打包
- 关于JDK版本
- 编程过程中遇到的问题
- 环境配置
- 文件读写
- 实际应用
- 与同学的对战
- 打包发布
- exe4j打包
- install4j打包
为了避免有些同学看了文章之后心里不太舒服,在开头先多说几句话:
编码规范
这只不过是一个很小的作业,给的时间并不多,而且还是一个人编写的。所以我在程序编写过程当中,有很多不符合实际开发规范的写法。我这样做只是单纯为了提高效率,这个只能说是个人的权衡问题吧,欢迎大家的批判。
设计模式
如果你知道我在说什么的话,我的回答是:
什么设计模式都没用,别骂了,别骂了、、、就这点破功能,又不是团队开发,又不会有需求变更(冒汗)
所以咱不要以小见大了好不?
License
这个的话,如果你还是知道我在说什么,我的回答是:MIT License. 诶,爷就是玩儿。爱折腾的同学你就自己去整这个协议去吧,懒的话也无所谓,反正我也懒得找你。
说人话啊咱,借鉴什么的,不用我多说吧,但是如果你的借鉴在某些情况下产生了不良影响,那我不会负责的。
估计有些同学看完心里更不舒服了QwQ
编程任务/需求以下是原文:
针对日常线下五子棋比赛,传统比赛情况记录方式有纸质记录、拍照或录像等。虽然,能将比赛过程与结果都能很好记录下来,但是无法做到对比赛过程进行数字化处理。这样,后期就不能对棋局、选手做数据分析,也就无法进行针对棋手进行个性化指导和训练。所以,准备开发建设“五子棋棋局记录与管理系统”。
这一系统要实现以下功能:
功能要求- 系统登录功能:输入账号、密码能登录系统,棋局信息存储需关联在当前账户下;
- 棋局实时记录功能:首先要记录参赛选手信息、比赛等信息,然后进入棋局记录界面。在主界面上有“16*16 棋盘”,根据选手下棋过程依次在棋盘上放置黑白棋,比赛结束后,要记录结果信息;
- 过程信息同步记录功能:在记录棋手下棋时,要尽可能保证与棋手下棋同步,系统要记录下来每一步的时间,同时,在棋子上标识是是第几步(从 1 开始标识);
- 棋局回放功能:可以在未开始下棋的情况下,调取当前账号下已分胜负(完赛)的 棋局记录,选择某一条历史记录后,可在棋盘上自动回放整个棋局下棋的过程,自动落子时间间隔需与实际下棋时一致;
- 实时存档功能:可以在棋局记录过程的任意时间点点击,保存当前棋局的进度,提示存档成功;
- 棋局(谱)搜索功能:根据棋手、比赛等条件,找到对应的棋局。即可以回放比赛过程,也可以直接看最后结果。
- 管理功能:管理员账号通过同一登录页登录,进入棋局管理页面,可以查看全部棋局记录,也可以进行系统管理;
- 系统管理功能:其中有用户管理、权限管理等功能;
- 开发语言 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电脑程式设计与编写”哟 / 吾之封印,解放:
类的抽象关键词抓取:账户/棋手 账号 密码 棋局 下棋过程 棋盘 棋子 颜色 时间 次序 存档 登陆页 主界面 回放界面
包含关系分析:
界面设计本着简介的原则,我在设计界面的时候尽可能去复用组件和面板
最终敲定了这个只用了两个面板的版本:
未填完的坑,最后更新于2021.10.12 02:21:13 a.m.
交互设计 快速编程实现 类实现 界面实现 交互实现 多线程实现 代码优化 类封装 职责分离 多线程维护 Google编码规范
魔法数值
void return;
if();
syout
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)