一、需求
需求:请写程序实现猜数字游戏只能试玩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方法的格式写入输出字符流,就能够限定游戏次数达到解决问题的条件。