代码实现
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.Buffer;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Number {
//获取文件的位置
static String fileName = System.getProperty("user.dir") + "\\score.txt";
public static void main(String[] args) {
boolean gameControl = true;
//不结束选择结束程序一直运行
while(gameControl) {
System.out.println("=======猜数大挑战=======");
System.out.println("=======1.开始游戏=======");
System.out.println("=======2.查看游戏规则====");
System.out.println("=======3.英雄榜========");
System.out.println("=======0.结束游戏=======");
System.out.println("请输入数字选项:");
//选项控制
switch(inputInt()) {
case 1:
scoreEntry(work());
//恩y返回主菜单
if(backmenu()) {
break;
}
break;
case 2:
System.out.println("欢迎来到猜数大挑战游戏!");
System.out.println("系统将随机生成0-100的整数,你可以输入一个猜测的数字。");
System.out.println("如果猜对则挑战成共,猜错系统会提示您猜大了,猜小了。");
System.out.println("没人五次机会,满分100分每猜错1次扣除20分。");
System.out.println("加油挑战吧!");
if(backmenu()) {
break;
}
break;
case 3:
scoreRead();
if(backmenu()) {
break;
}
break;
case 0:
gameControl = false;
System.out.println("游戏结束");
break;
default:
System.out.println("输入有误,请输入有效选项");
break;
}
}
}
//整数输入并进行异常处理 出现问题一直输入直到正确为止
public static int inputInt() {
while (true) {
try {
Scanner scanner = new Scanner(System.in);
int userInputInt = scanner.nextInt();
return userInputInt;
} catch (InputMismatchException e) {
System.out.println("您输入的数据有误,请重新输入:");
}
}
}
//游戏主体
public static int work() {
//生成100以内的随机数
long randomNumber = Math.round(Math.random()*100);
//只能5次
for(int i=0;i<5;i++) {
System.out.println("请输入您猜的数字:");
int userNumber=inputInt();
if(randomNumber==userNumber) {
System.out.println("猜对了!恭喜您挑战成功!");
return i;//成绩计算用
}else if(randomNumber>userNumber){
System.out.println("猜小了!");
}else if(randomNumber<userNumber) {
System.out.println("猜大了!");
}
if(i!=4) {
System.out.println("剩余"+(4-i)+"次机会");
}
}
System.out.println("您挑战失败了!不要灰心下次再来!");
return 5;
}
//成绩录入
public static void scoreEntry(int a) {
if(a!=5) {
int score = 100-a*20;
Scanner scanner2 = new Scanner(System.in);
System.out.println("请输入您的姓名:");
String name = scanner2.next();
try {
FileWriter fw = new FileWriter(fileName,true);
fw.write(name+","+String.valueOf(score)+"\r\n");
fw.flush();
fw.close();
System.out.println("您已进入英雄榜!");
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
//英雄榜读取
public static void scoreRead() {
System.out.println("**************英雄榜*****************");
System.out.println("\t英雄姓名"+"\t英雄分数\t");
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
String data = br.readLine();
while(data!=null&&data.length()>0) {
String[] str = data.split(",");
System.out.println("\t"+str[0]+"\t\t"+str[1]+"\t");
data = br.readLine();
}
br.close();
fr.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//按y返回主菜单
public static Boolean backmenu() {
while(true) {
System.out.println("按y返回主菜单!");
Scanner scanner3 = new Scanner(System.in);
String str = scanner3.next();
if("y".equals(str)) {
return true;
}
}
}
}
效果
需求
一、界面
1、 开始游戏
2、 查看英雄榜
3、 游戏说明
0、 退出游戏
二、 开始游戏
游戏需求
系统随机生成一个0至100的整数,玩家输入一个数字,系统判断该数字如果等于生成的数字,
则显示,玩家猜中了,并记录玩家姓名和成绩,成绩规则为:第一次猜中100分,第二次猜中80
分,第三次猜中60分,第四次猜中40分,第五次猜中20分。如果该数字不等于生成的数字,则
系统提示没有猜中,并提示是大了还是小了,玩家可连续猜5次,如果都没有猜中,系统提示
“太遗憾了”,不做记录,游戏结束。
2、 查看英雄榜
可以查看玩家姓名和成绩
实现逻辑
一、界面实现
1、JavaAPP,一直运行,点击“退出游戏”后游戏退出。
2、菜单用多路选择(switch)实现
二、核心逻辑
1、随机生成0-100的正整数
2、与输入的数比较,利用if判断三种情况
3、根据猜的次数计算得分
三、其他功能
1、按“y”返回上级,利用while死循环,输入”y”跳出循环
2、提示还有几次机会,如果等于0则不显示,利用三元运算符
3、分数记录和读取,利用JavaIO读写文本
开发过程 先界面 后核心逻辑 然后外围功能