1. 电脑随机产生1000—9999之间的数字(包括1000、9999);
提示:用rand函数,该函数在stdlib.h库中,并保证多次运行产生不同的随机数
2. 玩家每轮有七次猜数的机会,如果七次都没有猜到,则失败,判为0分;
3. 玩家每轮可以请求帮助,提问关于产生数字的信息,扣分细则如下;
4. 游戏以百分制形式,初始分为100,最后得分最多为赢家。
帮助内容及扣分细则:
. 判断你所猜的数中各位数字对应位置正误情况,以R表正确,E表错误。若随机数是2537,而猜的数是1234,则输出EERE,代表猜的数第3位正确,第1,2,4位错误。
——扣当前分数的1/10
. 判断你所猜的数中正确数字是什么。若随机数是2537,而猜的数是1234,则输出有两个数字正确,它们是2,3。 ——扣当前分数的1/10
我用java写了一个希望楼主可以参考一下 而写分数的计算可能有点偏差,楼主可以改一改分数的计算方法 互勉
public static void main(String[] args) {
int random_number=(int)(Math.random()*(9999-1000+1)+1000);//定义一个随机数
String data=String.valueOf(random_number); //将随机数转化为 String类型 是一个字符串类型
int number=7;//定义一个游戏的次数
int score=100;//游戏的初始分数为100
while(number>0){ //第一次游戏开始 会循环7次
System.out.println(random_number); //这次输出随机数 方便测试
System.out.println("请输入数字");//提醒玩家输入数字
Scanner s = new Scanner(System.in);//java中的接收用户输入的类
String str=""; //定义一个用于接收用户输入的字符串的str
String position=""; //记录下玩家正确位置的数字
str=s.next(); //接收用户输入的数字
while(!str.matches("^\\d{4}$")){ //这里用正则表达式验证用户是否输入正确的数据,不能让玩家输入除了数字以外的符号
System.out.println("输入格式有误,请重新输入 \n"); //如果玩家输错了 就提示
str=s.next(); //重新接收玩家的输入的数字
}
String results=""; //定义一个结果用于反馈用户输入正确与否
for(int i=0;i<str.length();i++){
if(data.charAt(i)==str.charAt(i)){ //比较玩家输入的数字与随机数之间是否相等
results+="R"; //相等则正确 输出一个R
int j=i+1; //因为数字位置从0开始的 因此要加1
position+=""+j; //记录下数字正确的位置
}else{
results+="E";
}
}
if(results.contains("E")){ //如果结果中村E 则有错误 应在分数中扣10分
System.out.println("猜测中存在错误,结果为"+results);
score=score-10;
System.out.println("正确的位置有"+position+","+"分数:"+score);
}else{
System.out.println("恭喜猜对全部数字,游戏结束");
System.out.println(score);//如果玩家都输入正确就跳出循环,并显示最后分数
break;
}
number--;
System.out.println("你还有"+number+"次机会");
if(number==0){
System.out.println("没有猜对,游戏结束!");
}
}
}
我只是过来赚取积分的谢谢了