You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java从字符串数组取值:字谜游戏中的答案匹配问题

看起来你已经把字谜游戏的核心答案匹配逻辑跑通了,很棒!结合你的代码,我给你整理几个实用的优化点和后续功能实现思路,帮你的游戏体验更上一层楼:

核心匹配逻辑优化
  • 兼容大小写与空格:目前的equals是严格大小写匹配,玩家输入Yes或者yes都会匹配失败,改成下面的写法更人性化:

    String userInput = currentGuess.getText().toString().trim();
    if(userInput.equalsIgnoreCase(answers[currentLevel])) {
        // 匹配成功后的逻辑
    }
    

    trim()能过滤输入前后的空格,equalsIgnoreCase()则忽略大小写差异,完美覆盖玩家的常见输入误差。

  • 关卡推进与通关判断:匹配成功后别忘了推进关卡,还要判断是否通关:

    String userInput = currentGuess.getText().toString().trim();
    if(userInput.equalsIgnoreCase(answers[currentLevel])) {
        currentLevel++;
        // 清空输入框,方便玩家输入下一关答案
        currentGuess.setText("");
        
        // 检查是否已经通关
        if(currentLevel >= answers.length) {
            // 通关提示,比如弹出Toast或者自定义对话框
            Toast.makeText(this, "恭喜你通关啦!🎉", Toast.LENGTH_SHORT).show();
            // 可选:重置关卡让玩家重新挑战
            currentLevel = 0;
        }
    }
    
提升用户体验的小功能
  • 错误输入反馈:当玩家输入错误时,给点明确的提示,避免玩家一脸懵:

    String userInput = currentGuess.getText().toString().trim();
    if(userInput.equalsIgnoreCase(answers[currentLevel])) {
        // 成功逻辑
    } else {
        // 错误提示,比如短暂震动+Toast
        Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        if (vibrator != null) {
            vibrator.vibrate(300); // 震动300毫秒
        }
        Toast.makeText(this, "不对哦,再想想!", Toast.LENGTH_SHORT).show();
        
        // 可选:让输入框短暂变红提醒
        currentGuess.setBackgroundColor(getResources().getColor(R.color.error_red));
        new Handler(Looper.getMainLooper()).postDelayed(() -> {
            currentGuess.setBackgroundColor(getResources().getColor(R.color.default_input_bg));
        }, 1000);
    }
    

    注意:使用震动需要在AndroidManifest.xml中添加权限:<uses-permission android:name="android.permission.VIBRATE"/>

  • 保存关卡进度:玩家退出游戏后再进来,进度不会丢失,用SharedPreferences就能轻松实现:

    // 匹配成功后保存当前关卡
    SharedPreferences prefs = getSharedPreferences("WordGameData", MODE_PRIVATE);
    prefs.edit().putInt("currentLevel", currentLevel).apply();
    
    // 在Activity的onCreate方法中加载进度
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        currentGuess = findViewById(R.id.currentGuess);
        // 加载保存的关卡,默认0
        SharedPreferences prefs = getSharedPreferences("WordGameData", MODE_PRIVATE);
        currentLevel = prefs.getInt("currentLevel", 0);
    }
    

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:03:35