java游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字?

游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字,玩家要从最开始的猜测开始,逐步通过AB提示,猜中并完成最终的数字排列。其中的字母A,代表... 游戏编程
1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字,玩家要从最开始的猜测开始,逐步通过AB提示,猜中并完成最终的数字排列。其中的字母A,代表数字的位置和大小完全正确,而字母B则代表数字本身正确,但是位置错误。每局提示的结果。
游戏规则:
1、自动产生四个0~9的数字作为随机数,这个四位数相互之间不能相同。
2、用户者输入猜的四个数字,这四个数字之间也不能相同,如果有相同的则提示使用者,并提示重新输入
3、比较结果有提示多少个"A" ,比较结果有多少个"B"
4、输入"Y",重新开始游戏;输入"N"结束游戏;
展开
 我来答
俊楠48
2020-04-08 · 超过35用户采纳过TA的回答
知道答主
回答量:68
采纳率:73%
帮助的人:13.1万
展开全部
package com.test;
import java.util.Random;
import java.util.Scanner;
/**
* 我的测试类
*
* @author 刘逸
*
*/
public class MyTest {
/**
* 生成不同的正整数随机数,返回字符串数组
*
* @param count
* 需要生成随机数的数量
* @param max
* 随机数的最大值
* @param min
* 随机数的最小值
* @return 生成的随机数
*/
private static String[] generateRandomNumber(int count, int min, int max) {
if (count > 0 && min > -1 && max > min) {
String[] numbers = new String[count];
Random random = new Random();
// 生成随机数。
for (int i = 0; i < numbers.length; i++) {
numbers[i] = min + random.nextInt(max - min) + "";
}
// 检查是否存在重复的随机数。
int equalIndex = areEqual(numbers);
while (equalIndex != -1) {
numbers[equalIndex] = min + random.nextInt(max - min) + "";
equalIndex = areEqual(numbers);
}
return numbers;
} else {// 参数不合法。
return null;
}
}
/**
* 判断字符串数组中的元素是否存在相等的
*
* @param array
* 预判断的数组
* @return 如果数组中有相等的元素,返回其下标;如果数组中没有相等的元素,或数组为空返回-1
*/
private static int areEqual(String[] array) {
if (array != null && array.length > 0) {
// 将数组中的每一个成员与其之前的所有成员进行比较,判断是否有相等的。
for (int current = 0; current < array.length; current++) {
// 将当前便利的数组成员与其之前的所有成员进行比较,判断是否有相等的。
for (int previous = 0; previous < current; previous++) {
if (array[current].equals(array[previous])) {
return previous;
}
}
}
}
return -1;
}
/**
* 搜索字符串数组
*
* @param array
* 数组
* @param value
* 预搜索的值
* @return 如果数组中有成员的值与预搜索的值相等返回成员下标,否则返回-1
*/
private static int search(String[] array, String value) {
if (array != null && array.length > -1 && value != null) {
for (int i = 0; i < array.length; i++) {
if (array[i].equals(value)) {
return i;
}
}
}
return -1;
}
public static void main(String[] args) {
System.out.println("欢迎你来到1a2b,输入n退出,输入y重新开始");
System.out.println("系统会随机产生4个0到9之间不同的数字,请你来猜");
System.out.println("输出a不仅代表你猜中了,还代表你猜对它的位置了哦!\r\n输出b则代表你猜中了,但位置不对哦");
// 开始循环,一次循环代表一局游戏。一局结束后立刻开启下一局。
while (true) {
System.out.println("新的一局开始了!");
// 产生随机数。
String[] randomNumbers = generateRandomNumber(4, 0, 9);
Scanner scanner = new Scanner(System.in);
// 创建变量存放输入记录。
String[] records = new String[] { "", "", "", "" };
// 创建变量存放ab结果。
String result = "";
// 请用户输入4次值。为什么请用户输入4次?因为数组中有4个成员。
for (int i = 0; i < randomNumbers.length; i++) {
// 获得输入的值。
String inputValue = scanner.nextLine();
// 判断是否需要退出。
if (inputValue.equals("n") || inputValue.equals("")) {
System.out.println("Goodbye");
return;
}
// 创建变量定义是否忽略本次输入。
boolean ignore = false;
// 判断是否需要重新开始。
if (inputValue.equals("y")) {
ignore = true;
i = randomNumbers.length;
}
// 判断是否重复输入。
for (String record : records) {
if (inputValue.equals(record)) {
ignore = true;
i--;
System.out.println("这个值你已经输入过了哦!\r\n在给你一次机会。");
continue;
}
}
if (ignore) {
continue;
}
// 对输入的值进行搜索。
int searchResult = search(randomNumbers, inputValue);
// 如果搜索到了相关的值。
if (searchResult > -1) {
// 记录。
records[i] = inputValue;
// 不仅搜索到了输入的值,并且位置正确。
if (searchResult == i) {
result = result + "a";
System.out.println("a");
} else {// 搜索到了输入的值,但位置错误。
result = result + "b";
System.out.println("b");
}
} else {// 输入错误。
System.out.println("这里没有这个值哦!\r\n再给你一次机会!");
i--;
}
}
System.out.println(result);
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式