# 猜数字游戏
## 一、**功能分析**
软件随机生成一个不重复的四位数字,用户输入四位数字,输出猜测的结果,可反复猜测,猜测成功后可增加该用户积分。
## 二、**设计思路**
### 2.1逻辑设计
设计一个类用来实现猜数字游戏的逻辑,有生成随机数字、进行猜测返回结果两个功能。
### 2.2储存设计
设计一个类用来储存排行榜文件,文件使用json格式,有将Map存到本地、读取本地文件到Map两个功能。(本地文件默认为程序所在文件夹的rank.json文件)
## 三、界面设计
(1)登录页面
![](img/Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.001.png)
输入用户名,用来区分用户记录得分
(2)主界面
![](img/Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.002.png)
可以通过choicebox选择四个数字,点击Guess按钮进行猜测,左侧textarea显示结果
(3)菜单栏
有Game-New、Game-rank、Help-How...和Help-About四个菜单项,分别是开始新游戏,打开排行榜、游戏教程和关于四个功能
## 四、**设计方案**
### 4.1 Guess
![](img/Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.003.png)
Keys用于存储生成的随机数。
isExist用于储存生成随机数时已生成的随机数,防止重复。
initKeys()调用可以生成一个新的随机数,用于开始一个新游戏
tryOne()接受一个四个数的列表,与类中的随机数对比后生成结果,通过列表返回这个两个数的结果
initData()用于初始化列表,防止空指针
主要的猜测数字代码如下:
```java
public List<Integer> tryOne(List<Integer> list) {
List<Integer> ans = new ArrayList<Integer>();
int count1 = 0,count2 = 0;
//猜测长度是否符合要求
if(list.size() != 4) {
throw new RuntimeException("猜测的数据列表长度错误");
}
//猜测相等的个数
for(int i = 0; i < 4; i++) {
int count2_ok = 0;
for(int j = 0; j < 4; j++) {
if (list.get(i).intValue() == keys.get(j).intValue()) {
if (i == j) {//位置相等
count1++;
} else {//位置不相等
count2_ok = 1;
}
}
}
if(count2_ok == 1) {
count2++;
}
}
//添加计算结果
ans.add(count1);
ans.add(count2);
return ans;
}
```
3.2 Rank
![](img/Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.004.png)
Load()加载文件
Save()存储文件
利用Gson类库将Map<String,Integer>转化为json字符串存入文件
代码如下:
```java
public Map<String,Integer> load() {
try {
String jsonString = FileUtils.readFileToString(file, "UTF-8");
Type type = new TypeToken<Map<String, Integer>>() {
}.getType();
Map<String, Integer> ans = gson.fromJson(jsonString, type);
return ans;
}catch (IOException e){
e.printStackTrace();
}
return null;
}
public void save(Map<String,Integer> inRank) {
try {
Map<String, String> map = new HashMap<String, String>();
String jsonString = gson.toJson(inRank);
FileUtils.writeStringToFile(file, jsonString, "UTF-8");
}catch (IOException e){
e.printStackTrace();
}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
100012096-基于Java开发的猜文字小游戏.zip (9个子文件)
characterguessgame
Code
code.zip 117KB
release.zip 1.99MB
Doc
猜数字游戏报告.doc 100KB
LICENSE 1KB
img
Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.003.png 18KB
Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.002.png 15KB
Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.001.png 15KB
Aspose.Words.0788a20b-7ec6-47d2-8bff-4f4e2b14f752.004.png 12KB
README.md 3KB
共 9 条
- 1
资源评论
神仙别闹
- 粉丝: 2679
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功