# 拼图小游戏的设计与实现
## 1 课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。
## 2 课程设计任务与要求:
课程设计可选用 Eclipse、JBuilder、NetBeans 等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。
认真完成需求分析,建议采用 UML 建模技术进行系统的分析设计,在画出系统用例图和类图,并将 UML 图复制到设计报告中。认真按时完成课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。
通过这次设计,要求掌握以下内容:
1. 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用
2. 类、包、接口的定义与使用
3. 常用工具类与算法的实现(数组、向量、字符串、链表)
4. java.awt、javax.swing 中常用标准 GUI 组件及相应的事件处理
5. Java 的异常处理机制
6. Java 的数据库连接技术
7. Java 的多线程技术与动画制作
8. Java 的网络编程
课程设计要求:
运用多线程和多媒体技术设计一个简单的益智类小游戏,游戏内容自行构思,不得直接利用网上现有游戏程序,要求有人机交互和界面动画,游戏过程中有声音效果,游戏成绩能记录、显示。
课程设计题目:
拼图游戏是一个简单的小程序,游戏规则如下:将一张大图分成 9 张小图,然后任意挑 8 张图,随意放在 3 行 3 列的矩阵中。通过点击鼠标移动打乱的 8 张图片,让其复原成原来的顺序,玩家就胜利了,游戏就结束了。在游戏结束之后,算出玩家完成游戏所需的步数。
## 3 课程设计说明书
### 3.1 需求分析
拼图游戏是一款非常经典的小游戏,因为它不仅没有难度,还十分有趣,因此很适合小孩子和老人玩。拼图游戏的设计对语言的提高都会是一个很好的锻炼,还可以通过 Java 语言得到一个提升。
玩游戏没有难度,但是设计起来还是有一定的复杂度的,还是有点困难的。它涉及的方面比较广,知识面也多,因此设计之前就要好好的考虑再设计,否则会很难开发。这款游戏的设计过程中,将会涉及到图形界面的显示与更新、数据的收集与更新,另外,还要涉及到一些应用类的继承等等。因此,利用 Java 设计这款游戏会有困难,但是同样的,只要能设计好这款游戏,将会大大的提高 Java 的设计水平以及系统的设计能力。另外,在设计开发过程中,还要学会处理好各个类直接的继承关系,处理好个各类之间相应的封装技巧,最重要的是,还要协调好各个模块之间的逻辑依赖关系和数据通信关系。设计肯定会有难度,只要注意技巧,理清每个模块之间的关系,再加上自己的思路,慢慢的设计,一定会设计出一个很好的方案。
### 3.2 概要设计
运行程序之后,出来游戏的主界面,然后单击鼠标移动数字模块,这样游戏就算开始了。然后就一直移动数字模块,直到数字变成从 1 到 8 的顺序为止,这样游戏就算完成了。最后跳出一个文本框,显示玩家完成这个游戏一共花了多少步。
功能模块图:
![](https://www.writebug.com/myres/static/uploads/2021/12/14/aeb0125ad75edcc3eaacf270b99ff08b.writebug)
### 3.3 详细设计
游戏主要分为 5 个部分,分别是:开始游戏、游戏操作、游戏完成、显示游戏成绩、结束游戏。在游戏进行过程中,玩家随时可以单击鼠标暂停游戏,游戏成绩是玩家完成游戏所需的步骤,将其统计出来的,统计是步骤,并不是完成的时间。因此,玩家在每走一步之前都要想清楚,并不急于下手,游戏没有时间限制,这样既可以提高玩家的思维能力,也可以提高游戏的效率。
流程图:
![](https://www.writebug.com/myres/static/uploads/2021/12/14/81a9e32b34b16e3a82f2316e793ec108.writebug)
界面实现:
在 3 行 3 列的矩阵中有 9 个小方块,8 个带有数值的键,一个空白键,都是随机产生的,放在 is[]数组中。空白键的数值为 9,不显示数值,将数组的值作为显示的 8 个按键的名字。
主要程序代码:
```c++
public class Games extends JFrame implements ActionListener {
private JButton buttons[][];
private Container container;
private GridLayout layout;
private int count = 0, is[] = new int[8];
public Games() {
super("拼图游戏");
layout = new GridLayout(3, 3);
container = getContentPane();
container.setLayout(layout);
buttons = new JButton[3][3];
int locate1, locate2;
for (locate1 = 0; locate1 < 8; locate1++) {
int g = new Random().nextInt(8) + 1;
is[locate1] = g;
for (locate2 = locate1 - 1; locate2>=0 ; locate2--) {
if (is[locate1] == is[locate2])
break;
}
if (locate2 != -1)
locate1--;
}
int temp = 0;
int r = new Random().nextInt(3);
int l = new Random().nextInt(3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (r == i && l == j)
{
buttons[i][j] = new JButton("9");
container.add(buttons[i][j]);
buttons[i][j].setVisible(false);
}
else {
buttons[i][j] = new JButton("" + is[temp++]);
container.add(buttons[i][j]);
}
buttons[i][j].addActionListener(this);
}
}
setSize(300, 300);
setVisible(true);
}
```
功能实现:
由于计算量小所以单独分析,通过二维数组的调控让游戏一直在运行,直到游戏完成。假如从 1 到 8 已经排列完成,计算花费了几步完成游戏,最后弹出对话框,显示共移动的步数。
1 到 8 排列部分代码:
```c++
public void actionPerformed(ActionEvent event) {
JButton b = (JButton) event.getSource();
if (b == buttons[0][0]) {
if (buttons[0][1].getText().equals("9")) {
buttons[0][1].setText("" + buttons[0][0].getText());
buttons[0][1].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
}
else if (buttons[1][0].getText().equals("9")) {
buttons[1][0].setText("" + buttons[0][0].getText());
buttons[1][0].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
}
}
else if (b == buttons[1][1]) {
if (buttons[0][1].getText().equals("9")) {
buttons[0][1].setText("" + buttons[1][1].getText());
buttons[0][1].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
}
if(buttons[0][0].getText().equals("1")&&buttons[0][1].getText().equals("2")&&
buttons[0][2].getText().equals("3")&&buttons[1][0].getText().equals("4")&& buttons[1][1].getText().equals("5")
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
课程设计要求: 运用多线程和多媒体技术设计一个简单的益智类小游戏,游戏内容自行构思,不得直接利用网上现有游戏程序,要求有人机交互和界面动画,游戏过程中有声音效果,游戏成绩能记录、显示。 课程设计题目: 拼图游戏是一个简单的小程序,游戏规则如下:将一张大图分成 9 张小图,然后任意挑 8 张图,随意放在 3 行 3 列的矩阵中。通过点击鼠标移动打乱的 8 张图片,让其复原成原来的顺序,玩家就胜利了,游戏就结束了。在游戏结束之后,算出玩家完成游戏所需的步数。
资源推荐
资源详情
资源评论
收起资源包目录
100012114-基于Java Swing(GUI)的拼图游戏.zip (17个子文件)
puzzlegame1
运行截图
003.png 18KB
001.png 7KB
0.编译运行.png 49KB
0.进入cmd.png 17KB
002.png 25KB
拼图游戏课程设计.doc-md
3-bac59de57a6c3e4d76a083c1e9f89e3d.png 21KB
4-6a57ac8f9bfb7beab23fc18f31c9ca51.png 16KB
2-39607ca118efff8bfae5fe18b7cb06ac.png 16KB
myoutput.md.md 9KB
myoutput.md 10KB
1-f53133bbf34c25cdd3d286a462e98a29.png 16KB
src
JigsawPuzzle.java 11KB
LICENSE 1KB
READMEbefore.md 1KB
拼图游戏课程设计.doc 111KB
.gitignore 293B
README.md 9KB
共 17 条
- 1
资源评论
神仙别闹
- 粉丝: 3783
- 资源: 7469
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 包含 Andrei Neagoie 的《从零到精通掌握编码面试 - 数据结构 + 算法》课程的所有代码示例,使用 Python 语言 .zip
- 数据库课程设计(图书馆管理系统)springboot+swing+mysql+mybatis
- C++ Vigenère 密码(解密代码)
- zblog日收站群,zblog泛目录
- C++ Vigenère 密码(加密代码)
- Vue Router 是 Vue 生态系统的一部分,是一个 MIT 许可的开源项目,其持续开发完全在赞助商的支持下成为可能 支持 Vue 路由器
- PM2.5 数据集 包含上海、成都、广州、北京、沈阳五地的PM2.5观测,csv文件
- 电动汽车与软件定义汽车(SDV)时代的汽车行业数字化转型
- C的两数相加求和的程序代码
- 使用特定版本的 Python 设置 GitHub Actions 工作流程.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功