目录
一、需求
需求:请写程序实现猜数字游戏只能试玩3次,如果还想玩,提示游戏试玩已结束,想玩请充值(www.itcast.cn)
思路:
1、写一个游戏类,里面有一个猜数字小游戏
2、写一个测试类,测试类中有main方法,main()方法中按照下面步骤完成
A:从文件中读取数据到Properties集合,用load()方法实现
文件已经存在:game.txt
里面有一个数据值:count=0
B:通过Properties集合获取到玩游戏的次数
C:判断次数是否到3次
如果到了给出提示:游戏试玩已结束,想玩请充值(www.itcast.cn)
如果不到3次:
玩游戏
次数+1,重新写会文件,用Properties的store()方法实现
二、代码
游戏类:
import java.util.Random;
import java.util.Scanner;
/*
c猜数字小游戏
*/
public class GuessNumber {
private GuessNumber() {
}
public static void start() {
//要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机生成该数字,范围1到100
Random r = new Random();
int number = r.nextInt(100) + 1;
while (true) {
//使用程序实现猜数字,每次均要输入猜数字值,需要使用键盘录入实现
Scanner sd = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sd.nextInt();
//比较输入的数字和系统产生的数据,需要使用分支语句,这里使用if...else...if..格式,根据不同情况进行测试结果显示
if (guessNumber > number) {
System.out.println("你猜的数字" + guessNumber + "大了");
} else if (guessNumber < number) {
System.out.println("你猜的数字" + guessNumber + "小了");
} else {
System.out.println("恭喜你猜中了");
break;
}
}
}
}
测试类
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class PropertiesTest {
public static void main(String[] args) throws IOException {
//从文件中读取数据到Properties集合,用load()方法实现
Properties prop = new Properties();
FileReader fr = new FileReader("bw.java");
prop.load(fr);
fr.close();
//通过Properties集合获取到玩游戏的次数
String count = prop.getProperty("count");
int number = Integer.parseInt(count);
//判断次数是否到3次
if(number>=3){
//如果到了给出提示:游戏试玩已结束,想玩请充值(www.itcast.cn)
System.out.println("游戏试玩已结束,想玩请充值(www.itcast.cn)");
}else{
//玩游戏
GuessNumber.start();
//次数+1,重新写入文件,用Properties的store()方法实现
number++;
prop.setProperty("count",String.valueOf(number));
FileWriter fw = new FileWriter("bw.java");
prop.store(fw,null);
fw.close();
}
}
}
三、运行结果
根据文件计算次数。
第一次游戏
第二次游戏
第三次游戏
次数超过给出提示
四、结论
实现此问题的代码,是根据Properties类的持久属性,Properties是Map体系的集合类,可以保存到流中或从流中加载。根据Properties的特有方法getProperty方法,从属性列表中指定的键搜索属性,并用setProperty方法重写写入,再结合Properties和IO流结合的方法,用load方法读取属性列表(键和元素对),再用store方法将此元素列表(键和元素对)写入此Properties表中,以适合使用load方法的格式写入输出字符流,就能够限定游戏次数达到解决问题的条件。