JAVA猜字母游戏

随机输出26个字母中的5个.然后玩家输入5个字母.玩家看不见这5个随机输出的字母.玩家输入5个字母.系统会提示.输入正确几个字母.并且位置对了几个字母.比如随机输出SIG... 随机输出26个字母中的5个.
然后玩家输入5个字母.
玩家看不见这5个随机输出的字母.

玩家输入5个字母.
系统会提示.输入正确几个字母.并且位置对了几个字母.
比如随机输出SIGOF,玩家输入了AIEFL
这样,I和F是上面都有的.
所以输入字母正确2个.
I的位置和上面相同.所以位置对了1个.
系统提示:字母2个,其中1个位置正确
请再次输入.
直到猜对为止
当玩家完全正确以后.系统会根据玩家猜测的次数打分.

输入的时候不区分大小写.
要求默认是大写输入.要是玩家输入小写的话,就在代码中转换成大写
求代码呀……
展开
 我来答
xunbovpn
推荐于2017-10-02
知道答主
回答量:1
采纳率:0%
帮助的人:2.3万
展开全部
public class GuessingGame {
    public static char[] generate(int level){
     char[] letters = {'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'};
     char[] chs = new char[level];
     boolean[] flag  = new boolean[26];
     for(int i=0;i<chs.length;i++){
     int index;
     do{
     index = (int)(Math.random()*26);
     }while(flag[index]);
     chs[i] = letters[index];
     flag[index] = true;
     }
     return chs;
    }
    public static int[] check(char[] chs,char[] input){
     int[] result= new int[2];
     for(int i=0;i<chs.length;i++){
     for(int j=0;j<input.length;j++){
     if(chs[i]==input[j]){
     result[0]++;
     if(i==j){
     result[1]++;
     }
     break;
     }
     }
     }
     return result;
    }
public static void main(String[] args) {
int level;
int score;
int count=0;
Scanner scanner = new Scanner(System.in);
System.out.println("请选择游戏等级");
level = scanner.nextInt();
        char[] chs = generate(level);
        System.out.println(Arrays.toString(chs)+"\n猜吧");
        while(true){
         String inputStr = scanner.next().trim().toUpperCase();
         char[] input = inputStr.toCharArray();
         do {
          System.out.println("个数不对,请重新输入");
          inputStr = scanner.next().trim().toUpperCase();
               input = inputStr.toCharArray();
          }while(input.length!=level);
         int[] result = check(chs,input);
         if("EXIT".equals(inputStr)){
         System.out.println("谢谢");
         break;
         }
         if(result[1]==level){
         score = 500-count*10;
         System.out.println("恭喜全对!得分"+score);
         break;
         }else{
         count++;
         System.out.println("总次数"+count+"猜对字母个数"+result[0]+"猜对位置个数"+result[1]);
         }
        
        }
}

}
匿名用户
2014-05-11
展开全部
import java.util.Random;
import java.util.Scanner;

public class Test {
private final static char[] ARRAY = { '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' };
private final static int NUM = 5;
private String s;

/**
 * 构造时生成ARRAY成员组成的随机字符串
 */
public Test() {
// 选择的字母数量

s = "";
// 随机数
Random r = new Random();
while (s.length() < NUM) {
// 如果新生成的字母不重复则保存
char tmp = ARRAY[r.nextInt(26)];
if (s.indexOf(tmp) < 0)
s += tmp;
}
}

public static void main(String args[]) {
Test test = new Test();
int time = 0;
loop: while (true) {
System.out.println("请输入5个不重复字母");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
if (null == line || line.length() != 5) {
System.out.println("5个啊魂淡");
continue;
}
if (!line.matches("^[A-Za-z]+$")) {
System.out.println("字母啊魂淡");

}
line = line.toUpperCase();
char[] c = new char[5];
c = line.toCharArray();
int m = 0, n = 0;
for (int i = 0; i < NUM; i++) {
String strSub = line.substring(line.indexOf(c[i])+1);
if (!(strSub.indexOf(c[i]) < 0)) {
System.out.println("不重复啊魂淡");
continue loop;
}
int intTmp = test.s.indexOf(c[i]);
if(intTmp<0){
continue;
}
else{
m++;
if(intTmp==i)
n++;
}
}
if (n == NUM) {
time++;
System.out.println("完全正确!");
break;
} else {
time++;
System.out.println("输入正确" + m + "个字母.并且位置对了" + n + "个字母.");
continue;
}
}
System.out.println("共用" + time + "次");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翁团长
2014-05-11 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:85.4万
展开全部
java的游戏,好老了吧,以前我也玩,现在 唉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a606018
2014-05-11
知道答主
回答量:13
采纳率:0%
帮助的人:1.2万
展开全部
对图形界面有什么要求吗
追问
没有要求…
追答
那学过基础程序设计的都会的呀。。你学PASCAL或C的时候没学吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式