使用java方法完成猜字符游戏

该文章介绍了一个使用Java编写的猜字母游戏,游戏中会随机生成五个不重复的大写字母,用户需输入猜测的字母。程序会告诉用户猜对的字母数量以及位置正确的个数,并根据规则计算得分。当得分达到500分时游戏结束。文章提供了生成随机字母、获取用户输入、判断猜测正确性及计算得分的函数实现。
摘要由CSDN通过智能技术生成

使用java方法完成猜字符游戏

要求:

  • 随机生产五个不重复的字母,用户输入猜测的字母内容

  • 用户输入猜测字母

  • 程序判断,告知用户猜对的字符个数

  • 同时还要告知猜对的字符中位置排列正确的有几个

  • 猜测最后再加一个得分统计

  • 5个字符一共500分,猜错一次扣10分

  • 若不是500分,则重复猜测,知道全部猜对为止

思路:

1、生成五个随机的字母

对于随机生产五个不重复的字母,我们可以先定义一个字符数组,然后再利用随机数的生成去随机出字符数组的下标(0到25),来达到随机字母的效果,为了防止出现相同的字母,我们需要去重,可以为每个字母设置一个开关,即设置一个bool数组,默认都为false,如果被使用,该字母对应的bool元素则变为true。这样如果后面的随机数重复时,只需判断bool开关是否为true,若为true则再重新随机一个数。直到生成五个不同的字母。

2、对于用户的输入,连续输入五个为字符串类型,我们需要将其转变为字符数组,再进行猜测是否正确的判断。

package day0613;

import java.util.Scanner;

public class 游戏 { public static void main(String[] args) { char[] chs=*generate*(5); System.*out*.println("五个随机的字母为:"); System.*out*.println(chs); while(true) { char[] input = *getInput*(5); System.*out*.println("用户输入的字母为:"); System.*out*.println(input); int[] num = *getNum*(chs, input); int num1 = num[0]; int num2 = num[1]; int sum = num2 * 100 - (5 - num2) * 10; System.*out*.println("猜对字符个数为:" + num1); System.*out*.println("猜对字符中位置排列正确的个数为:" + num2); System.*out*.println("用户最后得分为:" + sum); if(sum==500){ break; } } }

//随机生成字母public static char[] generate(int num) {char[] chs = new char[num];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[] flags = new boolean[26];int index;for (int i = 0; i < chs.length; i++) {do {index = (int) (Math.*random*() * 26);

} while (flags[index] == true);chs[i] = letters[index];flags[index] = true;}return chs;}

//用户输入字母public static char[] getInput(int num){Scanner sc = new Scanner(System.*in*);//导入扫描器System.*out*.println("请输入五个猜测的字符:");String str = sc.next();//调用扫描器方法//toUppercase() 把字符串中的小写字符转换为大写//toCharArray() 把字符串拆分为字符数组char[] input = str.toUpperCase().toCharArray();return input;}

//判断猜对个数public static int[] getNum(char[] ch,char[] input){int[] num=new int[2];for (int i = 0; i < input.length; i++) {for (int j = 0; j < ch.length; j++) {if (input[i] == ch[j]) {num[0]++;if(i==j){num[1]++;}}}}return num;} }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值