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

Java Cryptogram游戏开发问题:用户猜测的字符无法保留

解决Cryptogram游戏中猜测内容丢失的问题

嘿,这个问题我太熟了!你遇到的核心问题就是没有把用户之前的猜测状态保存下来——每次用户输入后,你都是重新生成了一份全新的下划线字符串,自然之前填的字符就没啦。下面给你一套简单直接的解决方案:

核心思路:维护一个持久的状态容器

你需要用一个变量(比如列表)来存储当前已经猜出的字符和未猜出的下划线,每次用户输入后只更新这个容器里的对应位置,再基于这个容器生成输出字符串,这样之前的猜测就会一直保留。

具体实现示例(以Python为例)

假设你的目标名言是 "to be or not to be",我们可以这样写代码:

# 定义目标名言
target_quote = "to be or not to be"
# 初始化显示状态:字母替换为下划线,空格保持不变
display_state = ['_' if char != ' ' else ' ' for char in target_quote]

while True:
    # 把状态转换成用户看到的格式输出
    print(' '.join(display_state))
    
    # 获取用户输入(格式:字母 位置,比如 "r 0")
    user_input = input("请输入猜测的字母和位置(格式:字母 位置):").strip().split()
    if len(user_input) != 2:
        print("输入格式不对哦,请按「字母 位置」的格式输入!")
        continue
    
    guess_char, pos_str = user_input
    # 处理位置输入的有效性
    try:
        pos = int(pos_str)
        if pos < 0 or pos >= len(display_state):
            print("位置超出范围啦,再看看名言的长度哦!")
            continue
    except ValueError:
        print("位置必须是数字哦,重新输入吧!")
        continue
    
    # 更新显示状态
    display_state[pos] = guess_char

关键细节说明

  • display_state 就是我们的持久化状态容器,它和目标名言的长度完全一致,每个位置对应名言里的一个字符(空格或字母)。
  • 每次循环都会基于这个容器生成输出,用户输入正确的位置和字母后,我们只修改容器里对应位置的内容,这样之前填过的字符就会一直保留在容器里啦。
  • 如果想实现「猜中一个字母后自动填充所有对应位置」的功能(比如猜"o"就把所有"o"的位置都显示出来),只需要遍历target_quote,把所有等于guess_char的位置都在display_state里替换掉就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:24:37