一、项目简介
1.功能描述:
此五子棋游戏添加了用户登录功能,用文件保存用户数据。实现了常见的现实五子棋游戏的基本功能(执棋轮换,悔棋,认输)。
参考了登录和注册功能,和五子棋棋盘设计,胜利判断方法。
2.参考git地址或博客地址:
Java实现五子棋小游戏(源代码)_java五子棋登录和注册资源-CSDN文库
3.个人负责任务:
单人项目,负责全部任务。
二、功能构架图
三、个人任务简述
1. 完成的任务与功能:
序号 | 完成功能与任务 | 描述 |
1 | 用户登录界面与功能 | 使用AWT和Swing创建用户图形界面。 并使用文件流的方式读写文件保存用户信息。 |
2 | 棋盘设计 | 主要包括界面大小设计,棋盘线条设计, “星”位设计(五个黑点),重写了JPanel方法 |
3 | 鼠标操作 | 通过鼠标的操作在棋局范围内放棋子以及实现开始游戏、切换棋牌、悔棋、认输和退出功能。 |
4 | Paint | 重写了JPanel方法,绘制棋盘线条和棋子。 |
5 | 游戏胜利条件 | 我使用了一个二维数组,用棋局上的具体位置映射到二维数组上的抽象位置上。以此来进行相同五子是否连线的判断。 |
6 | 游戏图片读取 | 使用ImageIO.read()方法实现图片读取功能 |
2. Git提交记录截图:
四、本人负责功能任务详解
1. 用户登录界面与功能
使用AWT和Swing类包创建GUI
使用io输入输出流注册用户(登录程序与其大体一致,注册更复杂所以这里显示注册)
2. 界面设计
窗体的UI设计
棋盘的设计
绘制线条和特殊点位,加载背景图片
3. 鼠标操作
通过鼠标在不同范围内(相当于组件)的点击实现不同功能
1.游戏开始功能(将以前记录的棋子位置全部清零,状态变为游戏中)
2.切换棋盘功能
3.悔棋功能(将上一次下棋的位置置零)
4.认输功能
5.退出功能
4. Paint
绘制棋子和游戏信息提示框
5.游戏胜利条件
包括判断横向纵向和斜向
6. 游戏图片读取
五、游戏运行截图及说明
用户注册
username :lzx ;password :123
用户名存在判别:
用户登录
尝试性试错
游戏界面
游戏演示
规则:
1.白方先行,决出胜负后轮换。
2.先连成五子的一方胜出。
3.允许悔棋,但要另一方同意。(进行此操作时,游戏界面上有轮到白方/黑方,则操作由黑方/白方发起)
4.一方可以认输默认另一方游戏胜利。
这里先前界面上显示,轮到白方,认输后则黑方获胜。
6.重新开始游戏
可重新开始游戏先前若是白方先行,则现在黑方先行。
六、课程设计感想与展望
1.在设计用户登陆的功能时,注册功能出现了错误,每次注册都会把源文件的删除,通过网络查找解决方法,通过用文件流来实现数据的输入输出是一个很好的方法,它直接在原文件上进行操作。
2.画这个棋盘的线和“星”位是个难点,我依据建立二维坐标平面,然后在一个个分割单元后画一条线。还要考虑那个像素的位置一不小心就会画错(“星”),很累,不过把这个线画完之后棋子的绘制就了参考。
3.第一次把图像加载在这个界面里,非常的困难要限定什么坐标的范围,然后图像的大小什么的,还有什么图像的位数。
4.还有设置鼠标操作,等于是自己自学了好多知识。
5.做五子棋这个胜利条件判断要考虑每个棋子的六个方向,也是非常的复杂。
6.代码编写规范是稍微做了一下,代码的格式有一个快进键,可以自动整理,挺有用的。Alt+shife+f
7.这次Java课程设计,给我带来了巨大的收获:特别的一点是自学是大学真的非常重要的技能,还有获取知识的渠道,记录自己足迹的东西。具体而言,我学会了各种GUI设计类,MouseEvent事件类,image图像类的使用。
8.登录功能还存在一些问题,简单的密码可以登录,复杂的就有问题。
9.棋盘界面上那些鼠标可选的区域,想设置什么悬停会有那种颜色渐变有点困难(也许可以把区域换成组件)。