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
相关产品推荐
相关产品推荐

