一代是无限制游戏次数,而这个是升级版的猜数小游戏,会限制你玩游戏的次数,涉及到的知识有在一代的基础上,加上了集合和IO流。
1.代码区:
游戏类代码:
package 猜数游戏;
import java.util.Random;
 import java.util.Scanner;
public class Game {
    public static void game() {
         System.out.println("欢迎来到猜数游戏!");
         Random r=new Random();
         //得到一个1-100的随机数
         int i=r.nextInt(100)+1;
         //定义一个猜了几次的值x
         int x=0;
         //进行死循环猜数
         while(true) {
             x++;//每猜一次就次数加一
             //做一个次数的判断如果之前已经猜过5次了,就不能再猜了,这个6呢,是因为死循环开始的时候,次数就加一,所以相当于你玩了5次就不能玩了
             if(x<6) {
                 //自己在控制台输出,要猜的数
         Scanner e=new Scanner(System.in);
         System.out.println("请输入您要猜的数字:");
         
         int index=e.nextInt();
         
         //这个判断是对于,你猜的数和系统随机的数,进行一个大小的判断
         if(index<i) {
             System.out.println("你猜的数字"+index+"偏小");
         }else if(index>i) {
             System.out.println("你猜的数字"+index+"偏大");
         }else {
             System.out.println("恭喜你,赢下大奖!");
             break;//如果猜中了,就要退出循环
         }
         }
             else {
                 System.out.println("非常遗憾,这次猜数的次数已经用光了");
                 break;//如果猜的次数超过了5次,也是要退出循环
             }}
     }
 }

运行类代码:
package 猜数游戏;
import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.util.Properties;
 /**
  * Properties集合的父类是Map,每个key对应其value
  * @author 小楠
  *
  */
 public class Properies{
 public static void main(String[] args) throws Exception{
     //先创建集合,
     Properties pr=new Properties();
     //然后创建字符缓冲输入流对象,文件对象要存在,并且写了东西,这个下面会介绍
     BufferedReader br=new BufferedReader(new FileReader("D:/test.txt"));
     //load方法是将文件的内容写入集合中
     pr.load(br);
     //System.out.println(pr);  这里可以检验,是否写入了集合
     pr.clone();//关闭流
     
     //这个是调用getProperty方法,通过key,得到对应的value,因为此时文件中的value是int型的,所以需要对其进行类型转换
     
     int number=Integer.parseInt(pr.getProperty("cot"));
     //这个number表示,你玩过这个游戏的次数,如果大于3次就不能玩了
     if(number>=3) {
         System.out.println("试玩结束,想玩请充值:https://www.xiaonan.com/");
     }else {
         //调用写好的游戏代码
         Game.game();
         //并使玩游戏的次数加一
         number++;
         //将更新了的玩游戏次数,改写到集合中,因为setProperty方法的两个参数都是String类型,所以需要对number进行类型转换
         pr.setProperty("cot", String.valueOf(number));
         //创造缓冲字符输出流对象,文件对象,就是之前那个文件
         BufferedWriter bw=new BufferedWriter(new FileWriter("D:/test.txt"));
         //用集合特有的store方法进行写入,该方法第二个参数是对其进行描述的,可以写空
         pr.store(bw, null);
         //关闭流
         pr.clone();
         bw.close();
     }
 }
 }

该文件的作用是,用来记录玩家玩过这个猜数小游戏的次数,这个文件的初始内容就只有一行,也就是cot=0,cot是集合中的key,次数是cot对应的value值,当玩过一次游戏之后,对应的value值就会发生变化,进行加一操作;当我们设置了免费玩这个的游戏次数后,就可以通过其cot对应的value的值来进行判断,是否还能免费玩。

设计思路:
在一代的基础上,再次添加了一个玩游戏次数的限制,因为刚学习完IO流,就想着集合和IO流之间进行一个相互的写入,先将文件中的数据,写到集合中,然后再将修改后的数据从集合中写入到文件中,然后再读取文件中的数据进行判断玩游戏的次数条件。
这里使用了集合Properties特有的方法void(Reader reader);是将文件中的内容写到集合中
void store(Writer writer, String comments),第二个参数是对其进行修饰,可以填null
运行结果:
前三次:

当第四次执行的时候,就会提示免费次数用光

此时文件中的内容是,也随着程序的运行修改了

谢谢观看,非常感谢!









