Java实现简易版猜灯谜游戏的示例代码

 更新时间:2023年09月14日 10:36:05   作者:我崽不熬夜  
灯谜是中秋节传统的活动之一,而现代化的方式则是将其制作成一个小游戏,让用户在游戏的过程中猜灯谜,互动体验更佳,所以本文小编就用Java制作一款猜灯谜小游戏吧

前言

灯谜是中秋节传统的活动之一,而现代化的方式则是将其制作成一个小游戏,让用户在游戏的过程中猜灯谜,互动体验更佳。在此,我就用自己擅长的开发语言,制作一款猜灯谜小游戏吧。

如下我就带着大家一起来制作一个属于自己的小游戏吧。

游戏简介

在本小游戏中,随机生成3个灯谜题目,玩家需要在规定时间内猜对所有灯谜才能通过游戏。每个灯谜有三次机会可以猜测,如果答案错误则机会会减少,如果全部机会用尽则游戏结束。

制作思路

  • 准备灯谜题库。
  • 程序随机选择3个灯谜,在屏幕上展示出来,同时也会有输入区域供用户输入答案。
  • 用户输入答案并提交,程序进行判断,如果正确则提示用户并显示下一道灯谜;如果错误则机会减少1,如果机会大于0则继续猜测,如果机会用尽则游戏结束。
  • 游戏结束后会显示答对的灯谜数量和用时。

实现步骤

这是一个在命令行下实现的猜灯谜游戏,游戏实现步骤如下:

  • 定义灯谜题库、灯谜答案、每个灯谜可猜测次数、正确猜对的灯谜数量等常量。
  • 实现游戏入口的欢迎信息的输出,告知游戏规则和注意事项。
  • 通过随机数生成灯谜题目,一共生成3个灯谜。
  • 输出灯谜题目和提示用户进行答案输入。
  • 玩家输入答案,判断答案是否正确。
  • 如果答案正确,则输出恭喜信息,正确猜对的灯谜数量+1,进入下一个灯谜的猜测。
  • 如果答案错误,剩余可猜测次数-1,提示玩家剩余可猜测次数,并重新提示玩家进行答案输入。
  • 如果可猜测次数用尽,输出正确答案,并结束当前灯谜的猜测。
  • 如果玩家猜测的3个灯谜中有一个猜错或者时间超过1分钟,则游戏结束。
  • 输出玩家游戏结果,包括正确猜对的灯谜数量和用时信息。

代码实现

游戏源码分享给小伙伴们,仅供参考:(版权所有,盗版必究)

public class LanternRiddleGame {
    //灯谜题库
    private static final String[] RIDDLES = {"燃烧的小太阳", "红花绿叶紫花白", "打开它,没人敢吃它", "小姑娘打扮俊,头上戴着双宝钗", "四十九个门(1—49),走进一个留作难"};
    //灯谜答案
    private static final String[] ANSWERS = {"蜡烛", "草莓", "月饼", "梳子", "口香糖"};
    //玩家拥有的机会数
    private static final int CHANCE = 3;
    //正确猜对的灯谜数量
    private static int count = 0;
    //游戏启动入口
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long startTime = System.currentTimeMillis();
        //游戏规则
        printWelcomeMessage();
        // 随机生成3个灯谜
        for (int i = 0; i < 3; i++) {
            int randomIndex = getRandomIndex(RIDDLES.length);
            String riddle = RIDDLES[randomIndex];
            String answer = ANSWERS[randomIndex];
            printRiddleMessage(i + 1, riddle);
            int remainingChance = CHANCE;
            boolean isAnswerCorrect = false;
            while (remainingChance > 0) {
                String input = scanner.nextLine();
                //判断玩家是否答对
                if (isAnswerCorrect(input, answer)) {
                    printCorrectMessage();
                    isAnswerCorrect = true;
                    //猜对次数+1
                    count++;
                    break;
                } else {
                    //玩家机会数-1
                    remainingChance--;
                    //如果机会用尽,则结束游戏。
                    if (remainingChance == 0) {
                        printAnswerMessage(answer);
                    } else {
                        printWrongMessage(remainingChance);
                    }
                }
            }
            if (!isAnswerCorrect) {
                break;
            }
        }
        long endTime = System.currentTimeMillis();
        printResultMessage(count, endTime - startTime);
    }
    private static void printWelcomeMessage() {
        System.out.println("欢迎参加猜灯谜游戏!");
        System.out.println("你需要在规定时间内猜对所有的灯谜才能通过游戏,每个灯谜有3次机会。");
    }
    private static int getRandomIndex(int length) {
        Random random = new Random();
        return random.nextInt(length);
    }
    private static void printRiddleMessage(int index, String riddle) {
        System.out.println(String.format("第%d个灯谜:%s", index, riddle));
        System.out.print("请输入答案:");
    }
    private static boolean isAnswerCorrect(String input, String answer) {
        return input.equalsIgnoreCase(answer);
    }
    private static void printCorrectMessage() {
        System.out.println("恭喜你,答对了!");
    }
    private static void printWrongMessage(int remainingChance) {
        System.out.println(String.format("答案不对,你还有%d次机会!", remainingChance));
        System.out.print("请再次输入答案:");
    }
    private static void printAnswerMessage(String answer) {
        System.out.println(String.format("机会用尽,答案是:%s", answer));
    }
    //输出游戏结果
    private static void printResultMessage(int count, long usedTime) {
        if (count == 3 && usedTime <= 60 * 1000) {
            System.out.println("恭喜你,通过了猜灯谜游戏!");
        } else {
            System.out.println("很遗憾,你没有通过猜灯谜游戏!");
        }
        System.out.println(String.format("用时:%d秒,共答对了%d个灯谜!", usedTime / 1000, count));
    }
}

游戏源码解读

在程序中定义了常量RIDDLES、ANSWERS、CHANCE和count,分别表示灯谜题库、灯谜答案、每个灯谜可猜测次数和正确猜对的灯谜数量。

printWelcomeMessage()方法用于输出欢迎信息,告知游戏规则和注意事项。

在for循环中,通过getRandomIndex()方法随机生成一个灯谜题目,并输出题目和提示用户输入答案。

isAnswerCorrect()方法用于判断用户输入的答案是否正确。

如果猜对了灯谜,则输出恭喜信息,正确猜对的灯谜数量+1,进入下一个灯谜的猜测。

如果猜错了灯谜,剩余可猜测次数-1,并通过printWrongMessage()方法提示用户还剩余几次猜测机会,并让用户重新输入答案。

如果猜测次数用尽,通过printAnswerMessage()方法输出正确答案,并结束当前灯谜的猜测。

如果用户猜测的3个灯谜中有一个猜错或者时间超过1分钟,则游戏结束。

printResultMessage()方法用于输出游戏结果,包括正确猜对的灯谜数量和游戏时间。

程序中使用了Scanner和Random两个类,分别用于接收用户的输入和生成随机数。

功能演示

首次游戏启动会进行第一题的谜语解题界面:

回答对3次谜语则会提示:"恭喜你,通过了猜灯谜游戏",意味着你游戏挑战成功!

如果连续答错3次则直接游戏结束,被pass啦。

有没有心动的小伙伴想尝试一下的呀,可以体验下哇。

以上就是Java实现简易版猜灯谜游戏的示例代码的详细内容,更多关于Java猜灯谜游戏的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis如何按顺序查询出对应的数据字段

    Mybatis如何按顺序查询出对应的数据字段

    这篇文章主要介绍了Mybatis如何按顺序查询出对应的数据字段,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • springMVC常见视图组件与RESTFul编程风格详解

    springMVC常见视图组件与RESTFul编程风格详解

    本文给大家介绍springMVC常见视图组件与RESTFul编程风格,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-02-02
  • SpringMVC框架实现Handler处理器的三种写法

    SpringMVC框架实现Handler处理器的三种写法

    这篇文章主要介绍了SpringMVC框架实现Handler处理器的三种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Java实现的获取和判断文件头信息工具类用法示例

    Java实现的获取和判断文件头信息工具类用法示例

    这篇文章主要介绍了Java实现的获取和判断文件头信息工具类,结合实例形式分析了Java针对文件读取及头信息判断相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • Java8处理List的双层循环问题

    Java8处理List的双层循环问题

    这篇文章主要介绍了Java8处理List的双层循环问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java基于ProcessBuilder+FFmpeg实现MP4转WAV音频转码方案

    Java基于ProcessBuilder+FFmpeg实现MP4转WAV音频转码方案

    在音视频处理场景中,将MP4视频文件中的音频流提取为WAV格式是一个常见需求,本文介绍一种基于Java ProcessBuilder + FFmpeg的高效解决方案,通过调用命令行工具FFmpeg完成转换,实现跨平台、高质量的音频提取,需要的朋友可以参考下
    2026-03-03
  • Springmvc工程跳转controller无效的解决

    Springmvc工程跳转controller无效的解决

    这篇文章主要介绍了Springmvc工程跳转controller无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 浅谈Java后台对JSON格式的处理操作

    浅谈Java后台对JSON格式的处理操作

    下面小编就为大家带来一篇浅谈Java后台对JSON格式的处理操作。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践

    利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践

    这篇文章主要给大家介绍了关于利用MyBatis-Plus灵活处理JSON字段的技巧与最佳实践,Mybatis-Plus可以很方便地处理JSON字段,在实体类中可以使用@JSONField注解来标记JSON字段,需要的朋友可以参考下
    2024-07-07
  • Java多版本环境管理工具选型与命令速查方式

    Java多版本环境管理工具选型与命令速查方式

    本文介绍了多JDK并存时的安装来源、版本切换、JAVA_HOME与构建工具对齐方式,以及在Linux、macOS、Windows下的常见选型,介绍了SDKMAN、jEnv、Jabba、Homebrew等工具的使用方法及适用场景,并提供了常见问题及处理方式
    2026-04-04

最新评论