Java实现猜字小游戏

网友投稿 232 2022-12-20


Java实现猜字小游戏

猜字游戏是一款益智游戏,喜欢玩具有挑战性单词游戏的你就可以来体验一下了,给你一个字母板。尝试通过想象相邻字母的单词。您将获得一个分数,根据您使用的字母,你已经使用了多少个字母,并以这些字母相关联的任何修饰符都可以的。

具体代码如下所示:

package test07;

import java.util.Scanner;

//猜字符游戏

public class Guessing {

//主方法

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

char[] chs = generate(); //获取随机字符数组

System.out.println(chs); //作弊

int count = 0; //猜错的次数

while(true){ //自造死循环

System.out.println("猜吧!");

String str = scan.nextLine().toUpperCase(); //接收用户输入的字符串并转换为大写字母

if(str.equals("EXIT")) { //判断字符串内容是否是EXIT

System.out.println("下次再来吧!");

break;

}

char[] input = str.toCharArray(); //将字符串转换为字符数组

int[] result = check(chs,input); //对比:随机字符数组与用户输入的字符数组

if(result[0]==chs.length) { //对

http://int score = 100*chs.length-10*count; //1个字符100分,猜错一次扣10分

System.out.println("恭喜你猜对了,得分为:"+score);

break;

}else { //错

count++; //猜错次数增1

System.out.println("字符对个数为:"+result[1]+",位置对个数为:"+result[0]);

}

}

}

//生成随机字符数组chs

public static char[] generate() {

char[] chs = new char[5]; //随机字符数组

char[] letters = { 'A', TVpGhgfaaL'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[letters.length]; //标记数组

for(int i=0;i

int index;

do {

index = (int)(Math.random()*letters.length); //随机下标(0到25之间)

}while(flags[index]==true); //下标index对应的标记为true,表示对应字符已经使用过,则重新生成index下标

//下标index对应的标记为false时,表示对应字符未用过,则循环结束

chs[i] = letters[index]; //基于下标index获取对应的字符并赋值给chs中的每一个元素

flags[index] = true; //将下标index对应的标记修改为true,表示对应字符已存过

}

return chs;

/*

* i=0 index=0 chs[0]='A' flags[0]=true

* i=1 index=25 chs[1]='Z' flags[25]=true

* i=2 index=0/25/0/1 chs[2]='B' flags[1]=true

* ...

*/

}

//对比:随机字符数组chs与用户输入的字符数组input

public static int[] check(char[] chs,char[] input) {

int[] result = new int[2]; //对比结果(0,0)--假设result[1]为字符对,result[0]为位置对

for(int i=0;i

for(int j=0;j

if(chs[i]==input[j]) { //字符对

result[1]++; //字符对个数增1

if(i==j) { //位置对

result[0]++; //位置对个数增1

}

break; //剩余input元素不再参与比较了

}

}

}

return result;

}

}

总结

int index;

do {

index = (int)(Math.random()*letters.length); //随机下标(0到25之间)

}while(flags[index]==true); //下标index对应的标记为true,表示对应字符已经使用过,则重新生成index下标

//下标index对应的标记为false时,表示对应字符未用过,则循环结束

chs[i] = letters[index]; //基于下标index获取对应的字符并赋值给chs中的每一个元素

flags[index] = true; //将下标index对应的标记修改为true,表示对应字符已存过

}

return chs;

/*

* i=0 index=0 chs[0]='A' flags[0]=true

* i=1 index=25 chs[1]='Z' flags[25]=true

* i=2 index=0/25/0/1 chs[2]='B' flags[1]=true

* ...

*/

}

//对比:随机字符数组chs与用户输入的字符数组input

public static int[] check(char[] chs,char[] input) {

int[] result = new int[2]; //对比结果(0,0)--假设result[1]为字符对,result[0]为位置对

for(int i=0;i

for(int j=0;j

if(chs[i]==input[j]) { //字符对

result[1]++; //字符对个数增1

if(i==j) { //位置对

result[0]++; //位置对个数增1

}

break; //剩余input元素不再参与比较了

}

}

}

return result;

}

}

总结

for(int j=0;j

if(chs[i]==input[j]) { //字符对

result[1]++; //字符对个数增1

if(i==j) { //位置对

result[0]++; //位置对个数增1

}

break; //剩余input元素不再参与比较了

}

}

}

return result;

}

}

总结

if(chs[i]==input[j]) { //字符对

result[1]++; //字符对个数增1

if(i==j) { //位置对

result[0]++; //位置对个数增1

}

break; //剩余input元素不再参与比较了

}

}

}

return result;

}

}

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现TCP/IP协议的收发数据(服务端)代码实例
下一篇:Spring Security实现两周内自动登录"记住我"功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~