Java实现--游戏次数案例(IO流文件存储游戏次数)

来源:互联网 发布:linux查看jvm版本 编辑:程序博客网 时间:2024/06/04 00:29

案例
有一个猜数字小游戏,需要限制玩家的游戏次数,当超过5次时,提示玩家:免费游戏次数已用完,请付费。

案例分析
可以用文件来存储游戏次数,玩家每玩一次游戏,游戏次数加1,同时更新文件中存储的数据,当文件中的数据大于5的时候,就可以给出提示:免费游戏次数已用完,请付费。

实现步骤
1.创建一个文件,存储游戏次数
2.创建一个Propeties集合
3.把文件中的元素添加到集合中
4.把键值对中的值转换为int类型,定义一个count来存储游戏次数
5.用if来判断,当count小于5时进行游戏,游戏结束后count++,再把count值转换为字符串类型存入集合, 当count大于5时,给出提示:免费游戏次数已用完,请付费
6.把集合中元素添加到文件中

代码实现
游戏类:

package com.edu.game;import java.util.Scanner;public class Game {    public static void guessNumber(){        //获取随机数        int random=(int) (Math.random()*100+1);        //创建键盘录入对象并获取键盘录入数据        Scanner sc = new Scanner(System.in);        System.out.println("请输入所猜的数字:");        int number = sc.nextInt();        //while循环进行判断        while (true) {            if (number>random) {                System.out.println("大了!请重新输入:");                number=sc.nextInt();            }else if (number<random) {                System.out.println("小了!请重新输入:");                number=sc.nextInt();            }else if (number==random) {                System.out.println("恭喜你猜对了!");                break;            }        }    }}

测试类:

package com.edu.test;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Properties;import com.edu.game.Game;public class Test {    public static void main(String[] args) throws IOException {        //1.创建一个文件,存储游戏次数        //2.创建一个Propeties集合        Properties prop = new Properties();        //3.把文件中的元素添加到集合中        prop.load(new FileReader("count.txt"));        //4.把键值对中的值转换为int类型,定义一个count来存储游戏次数        int count=Integer.parseInt(prop.getProperty("count"));        //5.用if来判断,当count小于5时进行游戏,游戏结束后count++,再把count值转换为字符串类型存入集合,        //当count大于5时,给出提示:免费游戏次数已用完,请付费        if (count<5) {            Game.guessNumber();            count++;            prop.setProperty("count", String.valueOf(count));            prop.store(new FileWriter("count.txt"), null);        }else {            System.out.println("免费游戏次数已用完,请付费!");        }    }}

运行结果
当进行1次游戏后,count.txt更新存储的数据:
这里写图片描述

当进行5次游戏后,给出提示:
这里写图片描述

此时count.txt中的数据:
这里写图片描述

实现这个案例过程中的问题
问题一:之前的代码,每结束一次游戏,count(用来记录游戏次数的int值)值更新,但是count.txt文件中的数据没有更新,导致不能在游戏次数超过5次的时候给出提示。
问题二:Properties集合的键值对都是String类型,所以一直找不到合适的变量类型来记录游戏次数。

如何解决问题
对于问题一:每次count值更新,都把更新后的值存入Properties集合,然后调用store()方法把集合中的元素存入文件。

prop.setProperty("count", String.valueOf(count));prop.store(new FileWriter("count.txt"), null);

对于问题二:定义一个int类型的count,调用Integer包装类的parseInt()方法把字符串转换为int类型数据,当count更新后,再调用String类的valueOf()方法把int类型数据转换为字符串,然后存入集合,再存入文件。

参考
int和String类型的相互转换:
int—>String
方式1:String s = 100+“”;
方式2:String.valueOf(int);
方式3:Integer.toString(int);

String—>int
Integer.parseInt(String);

阅读全文
0 0
原创粉丝点击