Java如何实现一款简易版猜灯谜游戏?得知后,太有才啦。

前言

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

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

游戏简介

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

制作思路

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

实现步骤

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

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

代码实现

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

java 复制代码
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));
    }
}

游戏源码解读

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

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

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

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

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

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

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

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

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

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

功能演示

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

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

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

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

结语

作者我也就是跟个风,图个乐呵,便用擅长的方式制作了一个,如果对你们有一丝丝的帮助,还请给作者个大大的赞哦。

最后,作者提前祝愿诸位双节快乐!身体安康!!

相关推荐
AI人工智能+电脑小能手16 分钟前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
swipe27 分钟前
别再把 AI 聊天做成纯文本:从 agui 这个前后端项目,拆解“可感知工具调用”的流式 AI UI
后端·langchain·llm
GetcharZp29 分钟前
GitHub 爆火!纯 Go 编写的文件同步神器 Syncthing,凭什么成为程序员的标配?
后端
hERS EOUS32 分钟前
SpringBoot 使用 spring.profiles.active 来区分不同环境配置
spring boot·后端·spring
DFT计算杂谈38 分钟前
wannier90 参数详解大全
java·前端·css·html·css3
LucianaiB44 分钟前
我用飞书多维表做了一个 AI 活动推荐智能体:每天自动催我别错过截止日期!
后端
marsh02061 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
张健11564096481 小时前
临界区和同一线程上锁
java·开发语言·jvm
铁皮饭盒2 小时前
第2课:5分钟!用 Trae AI 生成你的第一个后端服务(Bunjs + Elysia)
前端·后端·全栈
超梦dasgg2 小时前
智慧充电系统设备管理服务对外接口实现方案
java·spring·微服务