儿童选择题答题游戏开发求助:出题重复且题库耗尽后无法结束
解决随机出题重复及题库耗尽未结束的问题
1. 搞定题目重复的两种实用方法
维护已出题记录
建一个空列表used_questions,每次随机选题目时,只从没在这个列表里的题目里挑。举个Python的例子:import random original_questions = [...] # 你的原始题库 used_questions = [] # 循环出题,直到出够30道或者没题可选 while len(used_questions) < 30 and len(used_questions) < len(original_questions): # 过滤出还没出过的题 available = [q for q in original_questions if q not in used_questions] selected = random.choice(available) used_questions.append(selected) # 这里写展示题目、处理玩家答题的逻辑这种方法适合题库比较大的情况,要是题目是复杂对象,得确保判断“是否已使用”的逻辑没问题。
动态缩减可用题库
把原始题库复制一份到临时列表,每次选完题就把它从临时列表里删掉,剩下的自然都是没出过的。代码大概是这样:import random original_questions = [...] # 你的原始题库 available_questions = original_questions.copy() # 复杂对象记得用深拷贝,比如copy.deepcopy() completed_count = 0 while completed_count < 30 and available_questions: # 随机选一个索引 idx = random.randint(0, len(available_questions)-1) selected_q = available_questions.pop(idx) completed_count += 1 # 展示题目、处理答题...这种方法效率更高,不用每次过滤,大部分场景都适用。
2. 让游戏在正确时机结束
游戏结束的触发条件要同时考虑两个限制:已经出了30道题 或者 剩下的题已经用完了。所以循环的终止条件就设成上面代码里的completed_count < 30 and available_questions——只要其中一个不满足,循环就停,然后执行游戏结束的逻辑,比如显示得分、给小朋友一句鼓励的话。
要是你的题库总数不到30道,游戏会在题用完的时候自动结束,这时候可以提示“题目都做完啦,真棒!”,别硬凑30道。
内容的提问来源于stack exchange,提问作者Shamini Balu
相关产品推荐
相关产品推荐

