Java猜数小游戏(二代加强版)

一代是无限制游戏次数,而这个是升级版的猜数小游戏,会限制你玩游戏的次数,涉及到的知识有在一代的基础上,加上了集合和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

运行结果:

前三次:

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

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

 

谢谢观看,非常感谢!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值