猜字母小游戏,其实只是写着练手玩的,但是博客分类没有【练手】,所以就放在游戏开发分类里面了(滑稽)。。。
直接放源码:
import java.util.Scanner;
/**
* 猜字符游戏--重置
* 游戏规则:
* 1.系统随机生成5(7、9,可选等级)个不同的字母,玩家猜字母
* 2.玩家每猜一次系统会提示一共猜对的字母的个数,以及其中位置对了的字母的个数
* 3.总分为游戏等级*100,玩家每猜错一次扣10分
* 4.输入EXIT可退出游戏
*/
public class Guessing {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//游戏等级选择
int level;
do{
System.out.println("请选择游戏等级(5,7,9):");
level = scan.nextInt();
}while(level != 5 && level != 7 && level != 9);
char[] chs = generate(level);//随机生成字符数组
//System.out.println(chs);//作弊,打印出随机生成的字母
int score = level*100;
while(true){
System.out.println("猜吧:");
//接收用户输入
char[] input = scan.next().toUpperCase().toCharArray();
String str = String.copyValueOf(input);
if(str.equals("EXIT")){
System.out.println("下次再来吧。");
break;
}
//判断并接收结果
int[] result = check(chs,input);
if(result[1]==chs.length){
System.out.println("恭喜你猜对了。分数:"+score);
break;
}else{
score -= 10;
System.out.println("字母正确的个数:"+result[0]+",位置正确的个数:"+result[1]);
}
}
}
/** 随机生成字母 */
public static char[] generate(int level){//以为main方法是static静态的,不能直接调用非静态方法.虽然可以先new一个Guessing类的对象再通过对象调用,但是太麻烦了
char[] chs = new char[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'};
boolean[] flag = new boolean[letters.length];
int index;
for(int i=0;i<chs.length;i++){
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;
}
}
发了这篇博客后看见好多类似的,看来大家都是这么过来的啊