猜字符小游戏的代码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43498110/article/details/99219800

项目需求:

    用户从键盘上输入五个字符,和系统随机产生的五个字符(并且产生的5个字母不能相同)进行位置和值的比较,每次输入之后都提示输入的字母和字母的位置的正确的数字,每猜错一次扣100分,最后输出所得的分数。

思路:本项目主要用到3个方法。一个主方法,一个比较的方法,一个随机生成不重复的五个字符。

说明:1.java.util.Scanner中的方法,Scanner scan =new Scanner(System.in);  其中String s=scan.next().toLowerCase();是用来从键盘输入一个字符串,但是toLowerCase()方法是将输入的大写字母转化为小写字母。

            2.java中提供的字符串对象.toCharArray();方法是将输入的字符串自动转化为字符数组。

            3.Math.random()方法是随机产生0到1之间的数,但是不包括1。

            4.int []result数组用来存储字符串比较的结果

            5.为了产生不重复的字符,需要设置一个标志数组。

            boolean [] flags=new boolean [letter.length];

           此方法用于产生5个不重复的字符: 

for (int i = 0; i < chs.length; i++) {
			do {
				index=(int)(Math.random()*(letter.length));
			}while(flags[index]==true);
			chs[i]=letter[index];
			flags[index]=true;
		}
//将用户输入的字符和系统随机产生的数进行比较
	public static int[] check(char []chs,char[]inputchar) {
		//result[0]表示字母正确
		//result[1]表示位置正确
		int []result=new int[2];

		for (int i = 0; i < chs.length; i++) {
			for (int j = 0; j < inputchar.length; j++) {
				if(chs[i]==inputchar[j]) {
					result[0]++;
					if(i==j) {
						result[1]++;
					}
					break;
				}
			}
		}
		return result;
	}

随机生成的不重复的五个字符的方法

//随机生成字符的方法
	public static char[] generate() {
		char []letter= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
		boolean []flags=new boolean[letter.length];
		char []chs=new char[5];
		int index;
		for (int i = 0; i < chs.length; i++) {
			do {
				index=(int)(Math.random()*(letter.length));
			}while(flags[index]==true);
			chs[i]=letter[index];
			flags[index]=true;
		}
		return chs;
	}

最终的代码:

package Day06;

import java.util.Scanner;

//猜字符小游戏
public class GuessNumber {

	public static void main(String[] args) {
		System.out.println("欢迎来到猜字符游戏!");
		char []chs=generate();
		System.out.print(chs);
		System.out.println();
		int count=0;
		System.out.println("猜字符游戏现在开始?????:");
		while(true){
		Scanner scan=new Scanner(System.in);
		String s=scan.next().toLowerCase();
		if(s.equals("exit")) {
			
			System.out.println("谢谢你的使用!");
			break;
		}
		char []inputchar=s.toCharArray();//此方法用于将用户输入的字符串转换为字符数组
		
			int result[]=check(chs,inputchar);
		
			if(result[1]==chs.length) {
				int score=100*chs.length-100*count;
				System.out.println("恭喜你,猜对了!");
				System.out.println("你的总共得分是:"+score);
				break;
			}else {
				count++;
				System.out.println("你的字母对了"+result[0]+"个"+"你输入的位置对了"+result[1]+"个");

			}
		}

	}
	//将用户输入的字符和系统随机产生的数进行比较
	public static int[] check(char []chs,char[]inputchar) {
		//result[0]表示字母正确
		//result[1]表示位置正确
		int []result=new int[2];

		for (int i = 0; i < chs.length; i++) {
			for (int j = 0; j < inputchar.length; j++) {
				if(chs[i]==inputchar[j]) {
					result[0]++;
					if(i==j) {
						result[1]++;
					}
					break;
				}
			}
		}
		return result;
	}
	//随机生成字符的方法
	public static char[] generate() {
		char []letter= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
		boolean []flags=new boolean[letter.length];
		char []chs=new char[5];
		int index;
		for (int i = 0; i < chs.length; i++) {
			do {
				index=(int)(Math.random()*(letter.length));
			}while(flags[index]==true);
			chs[i]=letter[index];
			flags[index]=true;
		}
		return chs;
	}


}

猜你喜欢

转载自blog.csdn.net/qq_43498110/article/details/99219800