【问题标题】:Looping and storing player name prompts until an X amount is met循环并存储玩家姓名提示,直到满足 X 数量
【发布时间】:2019-11-04 01:19:43
【问题描述】:

我有十个案例陈述,每一个都是基于玩家数量的。游戏 1、3 和 5 是单人游戏。游戏 2、4 和 6 是两人游戏,游戏 7、8、9 和 10 是四人游戏。

我试图弄清楚如何使用循环来提示用户选择游戏的相应玩家,以及如何使用循环来显示玩家。

我已经尝试了几件事,但我不确定如何将它循环 X 次并显示它。

            Do
        If gamenum = 1 Or 3 Or 5 Then
            Console.WriteLine($"{vbCrLf}Enter player name.")
            player1 = Console.ReadLine
            Exit Do
        ElseIf gamenum = Nothing Then

            If gamenum = 2 Or 4 Or 6 Then
                Console.WriteLine($"{vbCrLf}Enter player names.")
                player1 = Console.ReadLine
                player2 = Console.ReadLine
            ElseIf gamenum = Nothing Then

                If gamenum = 7 Or 8 Or 9 Or 10 Then
                ElseIf gamenum = Nothing Then
                End If
            End If
        End If
    Loop
    Console.ReadKey()

【问题讨论】:

  • 只需添加一个您根据gamenum 的值设置的PlayerCount 变量并将其用作循环计数器。
  • If gamenum = 7 Or 8 Or 9 Or 10 应该是If gamenum = 7 Or gamenum = 8 Or gamenum = 9 Or gamenum = 10。这同样适用于所有其他条件。
  • @daShier 我可以看一个例子吗?我是视觉学习者。
  • 如果你为 Player1 到 Player4 定义了变量,你到底在循环什么?
  • 我删除了它们,它只是 1 个单人游戏变量。根据他们选择的情况,我需要它来提示和保存 X 次。 @Anu6is

标签: vb.net


【解决方案1】:

这是执行此操作的一种方法。
使用列表存储所有玩家名称。

Dim players As New List(Of String) 'Stores all player names
Dim playerCount As Integer = 0     'Then number of players for this game

'Determine the required number of players based on gamenum
Select Case gamenum
    Case 1, 3, 5
        playerCount = 1
    Case 2, 4, 6
        playerCount = 2
    Case 7 To 10
        playerCount = 4
    Case Else
        Console.WriteLine("Invalid game choice!")
        Exit Sub
End Select

'Request players to enter their names
For i = 1 To playerCount
    Console.WriteLine($"{vbCrLf}Player {i}, enter your name")
    players.Add(Console.ReadLine)
Next

Console.WriteLine($"{vbCrLf}Total players registered: {players.Count}")

For i = 0 To players.Count - 1
    Console.WriteLine($"Welcome {players(i)}")
Next

【讨论】:

  • 现在如何显示列表中输入的名称?总玩家=玩家。?然后是 console.writeline @anu6is
  • totalPlayers = players.Count() 并简单地访问列表索引以获取玩家名称 player(0) 将是包含名字的索引 0。示例:`Console.WriteLine($"Welcome player1 - {players(0)}")。我修改了示例,以向所有玩家显示每个人的名字。
  • 为了确保我理解这一切,我将解释我如何解释这段代码。 For i = 1 to playercount 意味着它将提示用户输入名称,直到达到 case 语句中定义的最大玩家计数。它将每一个都存储在 player.add 列表中。每次代码运行时,{i} 都会在 console.writeline 中递增并正确显示。在第一个循环之后,使用了另一个 console.writeline,它显示了 player.count,所以注册的总人数。
  • 在第二个循环中,我将递增到 player.count 并显示一个 console.writeline。我只是不知道 player.count 后面的“- 1”是什么意思。
  • 好的,所以你的理解是正确的。就-1 而言,我认为您通常对VB 中的数组或集合没有做太多事情。所有集合(包括此代码中使用的列表)都从 index 0 开始。但是,计数表明列表中实际有多少项目。因此,如果您有一个包含 1 个项目的列表,则计数为 1,但该项目保存在 index 0 中。在遍历集合时执行-1 的原因是因为有效的可访问索引在collection size -1 处停止。包含 2 个项目的集合具有索引 0 和索引 1。没有索引 2,但计数为 2
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2016-04-12
  • 2018-06-29
相关资源
最近更新 更多