编写一个猜成语的小游戏。
要求:使用一个字符串数组来保存10个四字成语,例如:
String [] idioms = {“凉拌黄瓜”, “红烧肘子”, …};
使用一个字符数组来保存20个无关字符,例如:
String [] chars = {‘吃’, ‘喝’, ‘胡’, …};
每次游戏开始时,随机选择一个成语,然后提取其中的4个汉字,再从字符数组中随机选择另外6个汉字,组成一个10个汉字的数组(汉字顺序随机)。注意!如果成语中,有重复的汉字,则只算一个,那么要从字符数组中多选出汉字。然后提示用户成语中包含这10个汉字,让用户猜测成语,用户输入汉字的编号,程序反馈汉字在成语中的位置。用户只有6次猜错机会,当6次机会用完后,游戏结束(猜对不占用次数)。当用户完全猜测出成语后,程序输出用户猜错的次数。
提示:使用java.util.Random类产生随机数。使用方法如下(具体方法请参见Java API文档):
Random random = new Random(1000); //参数表示随机数种子
int index = random.nextInt(10); //产生[0,10)之间的随机整数
游戏过程如下:
第一次:
四字成语中包含的汉字如下:
1.王; 2.中; 3.力; 4.习;5.努; 6.可; 7.时; 8.学; 9.我; 10.成;
[○○○○]
剩余猜测次数为6次,请输入你的猜测:1
对不起,“王”字不在成语中,剩余猜测次数为5次,请再次输入你的猜测:2
对不起,“中”字不在成语中,剩余猜测次数为4次,请再次输入你的猜测:8
[○○学○]
恭喜你,“学”字在成语中的位置是:3
剩余猜测次数为4次,请再次输入你的猜测:9
对不起,“我”字不在成语中,剩余猜测次数为3次,请再次输入你的猜测:9
对不起,“我”字你已经猜过了,剩余猜测次数为2次,请再次输入你的猜测:5
[努○学○]
恭喜你,“努”字在成语中的位置是:1
剩余猜测次数为2次,请再次输入你的猜测:6
对不起,“可”字不在成语中,剩余猜测次数为1次,请再次输入你的猜测:10
对不起,“成”字不在成语中,并且你已经GameOver了!
第二次(假设还是同样的成语):
四字成语中包含的汉字如下:
1.王; 2.中; 3.力; 4.习;5.努; 6.可; 7.时; 8.学; 9.我; 10.成;
[○○○○]
剩余猜测次数为6次,请输入你的猜测:1
对不起,“王”字不在成语中,剩余猜测次数为5次,请再次输入你的猜测:8
[○○学○]
恭喜你,“学”字在成语中的位置是:3
剩余猜测次数为5次,请再次输入你的猜测:9
对不起,“我”字不在成语中,剩余猜测次数为4次,请再次输入你的猜测:5
[努○学○]
恭喜你,“努”字在成语中的位置是:1
剩余猜测次数为4次,请再次输入你的猜测:3
[努力学○]
恭喜你,“力”字在成语中的位置是:2
剩余猜测次数为4次,请再次输入你的猜测:4
[努力学习]
恭喜你,“习”字在成语中的位置是:4
太棒了!你一共猜错了2次,已经猜出了整个成语!
import java.util.Random;
import java.util.Scanner;
public class Guess {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String []chengyu= {"不翼而飞","五花八门","一马当先","马踏飞燕","长袖善舞","闭月羞花","沉鱼落雁","万事如意","功成名就","学业有成"};
Character []zi= {'喝','玩','乐','衣','食','住','行','的','去','额','啊','哦','是','票','才','在','看','了','就','个'};
Character index[]= {'a','a','a','a','a','a','a','a','a','a'};
Character daan[]= {'[','O','O','O','O',']'};
Random random=new Random();
int a=random.nextInt(10);//产生0——10(不含10)的随机数
String s=chengyu[a];
int t=0;
while(t<4)
{
int j=random.nextInt(10);
if(index[j]=='a')
{
index[j]=s.charAt(t);
t++;
}
else {
}
}
t=0;
while(t<6)
{
int j=random.nextInt(10);
int k=random.nextInt(10);
if(index[j]=='a'&&zi[k]!='a')
{
index[j]=zi[k];
zi[k]='a';
t++;
}
else{
}
}
System.out.println("四字成语中包含的汉字如下:");
t=0;
while(t<10)
{
t++;
System.out.print(t+"."+index[t-1]+" ");
}
System.out.println(" ");
for(int i=0;i<6;i++)
{
System.out.print(daan[i]);
}
System.out.println(" ");
int sum=6;
int ant=0;
int cuo=0;
int choice;
int []visit= {0,0,0,0,0,0,0,0,0,0,0};
System.out.print("剩余猜测次数为"+sum+"次,请输入你的猜测:");
while(sum>0)
{
sum--;
choice=sc.nextInt();
char Charactertemp=index[choice-1];
if(visit[choice-1]==1)
{
cuo++;
if(cuo==6)
{
System.out.print("对不起,"+Charactertemp+"字不在成语中,并且你已经GameOver了!");
}
else
{
System.out.print("对不起,"+Charactertemp+"字你已经猜过了,剩余猜测次数为"+sum+"次,请再次输入你的猜测:");
}
continue;
}
visit[choice-1]=1;
int flag=0;
for(int i=0;i<4;i++)
{
if(Charactertemp==s.charAt(i))
{
ant++;
sum++;
daan[i+1]=Charactertemp;
for(int j=0;j<6;j++)
{
System.out.print(daan[j]);
}
System.out.println(" ");
System.out.println("恭喜你,"+Charactertemp+"字在成语中的位置是:"+(i+1));
if(ant==4)
{
System.out.println("太棒了!你一共猜错了"+cuo+"次,已经猜出了整个成语!");
sc.close();
return ;
}
System.out.print("剩余猜测次数为"+sum+"次,请在此输入你的猜测:");
flag=1;
break;
}
}
if(flag==0)
{
cuo++;
if(cuo==6)
{
System.out.println("对不起,"+Charactertemp+"字不在成语中,并且你已经GameOver了!");
}
else
{
System.out.print("对不起,"+Charactertemp+"字不在成语中,剩余猜测次数为"+sum+"次,请再次输入你的猜测:");
}
}
}
sc.close();
}
}