Java实现猜数字游戏

Java实现猜数字游戏

代码实现

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读写文本
开发过程 先界面 后核心逻辑 然后外围功能

猜你喜欢

转载自blog.csdn.net/Carryi/article/details/120491623