猜成语,java

这是一个使用Java编写的猜成语游戏程序。程序包含了生成随机成语、获取包含成语的不重复汉字、打乱汉字顺序、显示汉字及猜测过程等功能。用户可以在限定次数内尝试猜测成语中的汉字及其位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



import java.util.Random;
import java.util.Scanner;
public class GuessChengyu {


/**
* @param args
* 该程序用于模拟一个猜成语游戏
*/
public String[] chengyu = {"行尸走肉","嘻嘻嘻嘻","心猿意马","成王败寇","草船借箭","一心二意","千与千寻","坚韧不拔","固若金汤","坚若磐石"};
public char[] hangzi = {'行','吃','牛','说','和','睦','家','垫','兴','万','严'};
public char[] hz; //得到的包含成语汉字在内的不重复的10个汉字
public char[] hzz; //打乱顺序后的10个不重复的汉字
public String  cy; //随机生成的一个被猜测成语
public boolean[] jilu = {false,false,false,false,false,false,false,false,false,false};
public char[] ccy = {'O','O','O','O'}; //猜测成语的记录空间,原始数据为可看为空
Scanner in = new Scanner(System.in); //输入
void getChengyu()
{
Random random = new Random();
int index = random.nextInt(10);
cy = chengyu[index];
}
void tihuang(int i){
char[] tp=cy.toCharArray();
tp[i]='A';
String ccy =new String(tp);
this.cy = ccy;
}
void gethangzi()//得到包含成语汉字在内的不重复的10个汉字
{
char[] hangzi_ = new char[10];
char temp;
int i;
int j=0;
int k=0;
boolean bool;
for(i=0;i<4;i++){
temp=cy.charAt(i);
bool = false;
for(j=0;j<i;j++)
{
if(temp == hangzi_[j])
{
bool = true;
break;
}
}
if(!bool)
{
hangzi_[k] = temp;
k++;
}
else
{
continue;
}
}
Random random = new Random();
for(;k<10;k++){
int index = random.nextInt(10);
temp=hangzi[index];
bool = false;
for(j=0;j<k;j++)
{
if(temp == hangzi_[j])
{
bool = true;
k--;
break;
}
}
if(!bool)
{
hangzi_[k] = temp;
}
}
hz=hangzi_;
}
void bianhuan(){//打乱原始的到的汉字的顺序
int k,j;
boolean bool;
char temp;
hzz=new char[10];
Random random = new Random();
for(k=0;k<10;k++){
int index = random.nextInt(10);
temp=hz[index];
bool = false;
for(j=0;j<k;j++)
{
if(temp == hzz[j])
{
bool = true;
k--;
break;
}
}
if(!bool)
{
hzz[k] = temp;
}
}
}
void showhz(){//输出得到的10个汉字的原始数据
for(int i= 0;i<10;i++){
System.out.print(hz[i]+ " ");
}
System.out.println();
}
void showhzz(){//输出打乱顺序后的10个汉字
for(int i= 0;i<10;i++){
System.out.print(i+1+","+hzz[i]+ ";");
}
System.out.println();
}
void showchengyu(){//输出被猜测成语
System.out.println(cy);
}
void showccy(){//输出用户目前已猜测情况
System.out.print("[");
for(int i=0;i<4;i++){
System.out.print(ccy[i]+",");
}
System.out.println("]");
}
void chaice(){//猜测操作开始
this.getChengyu();
this.gethangzi();
this.bianhuan();
System.out.println("四字成语中包含的汉字如下:");
this.showhzz();
this.cai(6, 4);
}
void cai(int i,int n){//递归进行每次的猜测
if(n==0)
{
System.out.println("太棒了,你一共猜错了"+(6-i)+"次,你已经猜出了整个成语。");
return;
}
if(i==0){
System.out.println("对不起,你的猜测次数已经用完了!");
return ;
}
int xuanzhe,zhi;
System.out.println("剩余猜测次数为:"+i+";请输入你的猜测 :");
while(true){
if(in.hasNextInt()){
xuanzhe=in.nextInt();
if(xuanzhe == 0)//我的意思是想当用户输入0的时候,再次输出那个特定的混序的汉字,但他要出错
{
this.showhzz();
continue;
}
else if(xuanzhe>10||xuanzhe<0)
{
System.out.println("输入数据值域过大,已经结束程序!");
return;
}
break;
}
else{
in.next();
System.out.println("输入数据不是整型,请重试");
}
}
if(jilu[xuanzhe-1]==true)
{
System.out.println("你已经猜过这个字了");
cai(i,n);
}
else
{
jilu[xuanzhe-1]=true;
zhi=cy.indexOf(hzz[xuanzhe-1]);
if(zhi==-1){
System.out.println("对不起,“"+hzz[xuanzhe-1]+"”字不在成语中:");
cai(i-1,n);
}
else{
ccy[zhi]=hzz[xuanzhe-1];
this.tihuang(zhi);
int zhiz = zhi;
int aa=0;
while((zhi=cy.indexOf(hzz[xuanzhe-1],zhi+1))!= -1)
{
ccy[cy.indexOf(hzz[xuanzhe-1])]=hzz[xuanzhe-1];
this.tihuang(zhi);
aa++;
}

this.showccy();
System.out.println("恭喜你,“"+hzz[xuanzhe-1]+"”字在成语中的位子是:"+(int)(zhiz+1));


cai(i,n-1-aa);
}
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
GuessChengyu me = new GuessChengyu();//定义一个对象
//System.out.println(me.jilu[0]);
me.chaice();//调用猜测
me.in.close();//关闭输入流
System.exit(1);
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值