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

Visual Basic猜词游戏:如何移除被选中3次的Select Case分支

解决猜词游戏中重复选项的移除问题

嘿,我懂你遇到的麻烦了——硬写的Select Case完全没法灵活处理这种需要动态移除重复选项的需求,之前试的数组方案没成,估计是没把单词、提示和它的选中次数绑定在一起,也没做好可用选项的动态管理。

核心思路是把每个单词的信息(单词、提示、选中次数)封装成独立的对象,用一个可动态维护的列表来管理所有可用选项,每次只从「选中次数不足3次」的选项里随机挑选,达到次数上限就直接从列表里移除。

具体实现步骤(VB.NET 示例)

1. 定义封装单词信息的类

先创建一个类来统一存储每个单词的核心数据,这样能把单词、提示和选中次数绑定在一起:

Public Class WordEntry
    ' 猜词目标
    Public Property Word As String
    ' 提示内容
    Public Property Hint As String
    ' 已被选中的次数,初始为0
    Public Property SelectionCount As Integer = 0
End Class

2. 初始化可用单词列表

在游戏初始化阶段(比如窗体加载时),把所有20个单词的信息都加入到一个列表中:

' 类级别变量,用来存储所有可用单词
Private availableWords As List(Of WordEntry)
' 全局随机数生成器,避免每次点击都创建新实例导致重复随机
Private rnd As New Random()

Private Sub InitializeWordList()
    availableWords = New List(Of WordEntry) From {
        New WordEntry With {.Word = "hockey", .Hint = "A ball game played with curved, wooden sticks"},
        New WordEntry With {.Word = "dinghy", .Hint = "This is a small boat usually made out of rubber"},
        ' 在这里继续添加剩下的18个单词条目,格式和上面一致
        New WordEntry With {.Word = "piano", .Hint = "A keyboard instrument with 88 keys"}
    }
End Sub

3. 重写游戏开始按钮的逻辑

替换原来的Select Case逻辑,改为从可用列表里筛选、随机选择并更新状态:

Private Sub btnStartGame_Click(sender As Object, e As EventArgs) Handles btnStartGame.Click
    ' 第一步:筛选出还能被选中的单词(次数<3)
    Dim eligibleWords = availableWords.Where(Function(w) w.SelectionCount < 3).ToList()
    
    ' 所有单词都被选够3次了,提示游戏结束
    If eligibleWords.Count = 0 Then
        MessageBox.Show("所有单词都已用完,游戏结束!")
        Return
    End If
    
    ' 第二步:随机选中一个符合条件的单词
    Dim selectedIndex As Integer = rnd.Next(eligibleWords.Count)
    Dim selectedWord = eligibleWords(selectedIndex)
    
    ' 第三步:更新选中次数,达到3次就从可用列表移除
    selectedWord.SelectionCount += 1
    If selectedWord.SelectionCount = 3 Then
        availableWords.Remove(selectedWord)
    End If
    
    ' 第四步:展示选中的单词和提示(替换成你自己的UI展示逻辑)
    lblTargetWord.Text = selectedWord.Word
    lblHint.Text = selectedWord.Hint
End Sub

为什么这个方案可行?

  • 相比硬编码的Select Case,用列表+对象的方式可以动态增删选项,完全满足「选中3次后彻底移除」的需求;
  • 把单词、提示和选中次数绑定在同一个对象里,状态管理更清晰,不会出现数组索引错位、计数和内容不匹配的问题;
  • 每次只从符合条件的选项里随机选择,从根源上避免了选中已达上限的单词。

内容的提问来源于stack exchange,提问作者Oisin O'Connor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:25:18