RN.in VB.Net 2010

时间:2014-07-02 02:22:01

标签: vb.net random vb.net-2010

我正在编写一个简单的骰子滚动类型游戏,以便我对编程类进行介绍,我需要对随机数生成器提供一些帮助。每次我使用它们时,它们都会按照相同的数字序列进行操作,这样每个数字都会打平,有没有办法解决这个问题?

Module Module1

    Sub Main()
        Dim rnumber1 As Random
        Dim rnumber2 As Random
        Dim number1 As Integer
        Dim number2 As Integer
        Dim user1 As String
        Dim user2 As String
        Dim score1 As Integer
        Dim score2 As Integer
        rnumber1 = New Random
        number1 = rnumber1.Next(1, 6)
        rnumber2 = New Random
        number2 = rnumber2.Next(1, 6)
        Console.WriteLine("Welcome to my dice game!")
        Console.WriteLine("The objective of the game is to roll higher than your opponent.")
        Console.WriteLine("The first one to 10 points wins!")
        Console.ReadLine()
        Console.Clear()
        Console.WriteLine("First player, please enter your name.")
        user1 = Console.ReadLine()
        Console.WriteLine("Thank you, {0}!", user1)
        Console.ReadLine()
        Console.Clear()
        Console.WriteLine("Second player, please enter you name.")
        user2 = Console.ReadLine()
        Console.WriteLine("Thank you, {0}!", user2)
        Console.ReadLine()
        Console.Clear()
        Do Until score1 Or score2 = 10
            rnumber1 = New Random
            number1 = rnumber1.Next(1, 6)
            rnumber2 = New Random
            number2 = rnumber2.Next(1, 6)
            Console.Clear()
            Console.WriteLine("The score so far is {0} to {1}!", score1, score2)
            Console.WriteLine("Press enter to continue...")
            Console.Clear()
            Console.WriteLine("{0}, press enter to roll the dice!", user1)
            Console.ReadLine()
            Console.WriteLine(number1)
            Console.ReadLine()
            Console.WriteLine("{0}, press enter to roll the dice!", user2)
            Console.ReadLine()
            Console.WriteLine(number2)
            Console.ReadLine()
            If number1 > number2 Then
                Console.WriteLine("The winner of this round is {0}.", user1)
                Console.ReadLine()
                score1 = score1 + 1
                Console.Clear()
            ElseIf number2 > number1 Then
                Console.WriteLine("The winner of this round is {0}.", user2)
                Console.ReadLine()
                score2 = score2 + 1
                Console.Clear()
            Else : Console.WriteLine("This round was a tie!")
                Console.ReadLine()
            End If
        Loop

    End Sub

End Module

2 个答案:

答案 0 :(得分:0)

您必须在编译时随机放置:

Module Module1

    Dim rnumber1 As New Random
    Dim rnumber2 As New Random

    Sub Main()

        Dim number1 As Integer
        Dim number2 As Integer
        Dim user1 As String
        Dim user2 As String
        Dim score1 As Integer
        Dim score2 As Integer
        number1 = rnumber1.Next(1, 6)
        number2 = rnumber2.Next(1, 6)
        Console.WriteLine("Welcome to my dice game!")
        Console.WriteLine("The objective of the game is to roll higher than your opponent.")
        Console.WriteLine("The first one to 10 points wins!")
        Console.ReadLine()
        Console.Clear()
        Console.WriteLine("First player, please enter your name.")
        user1 = Console.ReadLine()
        Console.WriteLine("Thank you, {0}!", user1)
        Console.ReadLine()
        Console.Clear()
        Console.WriteLine("Second player, please enter you name.")
        user2 = Console.ReadLine()
        Console.WriteLine("Thank you, {0}!", user2)
        Console.ReadLine()
        Console.Clear()
        Do Until score1 Or score2 = 10
            rnumber1 = New Random
            number1 = rnumber1.Next(1, 6)
            rnumber2 = New Random
            number2 = rnumber2.Next(1, 6)
            Console.Clear()
            Console.WriteLine("The score so far is {0} to {1}!", score1, score2)
            Console.WriteLine("Press enter to continue...")
            Console.Clear()
            Console.WriteLine("{0}, press enter to roll the dice!", user1)
            Console.ReadLine()
            Console.WriteLine(number1)
            Console.ReadLine()
            Console.WriteLine("{0}, press enter to roll the dice!", user2)
            Console.ReadLine()
            Console.WriteLine(number2)
            Console.ReadLine()
            If number1 > number2 Then
                Console.WriteLine("The winner of this round is {0}.", user1)
                Console.ReadLine()
                score1 = score1 + 1
                Console.Clear()
            ElseIf number2 > number1 Then
                Console.WriteLine("The winner of this round is {0}.", user2)
                Console.ReadLine()
                score2 = score2 + 1
                Console.Clear()
            Else : Console.WriteLine("This round was a tie!")
                Console.ReadLine()
            End If
        Loop

    End Sub

End Module

我希望它能奏效。这是因为随机使用自己的时间。

答案 1 :(得分:0)

我解决了你的问题。

这是代码,试试吧:

Sub Main()
    Dim rnumber1 As Random
    Dim rnumber2 As Random
    Dim number1 As Integer
    Dim number2 As Integer
    Dim user1 As String
    Dim user2 As String
    Dim score1 As Integer
    Dim score2 As Integer
    Console.WriteLine("Welcome to my dice game!")
    Console.WriteLine("The objective of the game is to roll higher than your opponent.")
    Console.WriteLine("The first one to 10 points wins!")
    Console.ReadLine()
    Console.Clear()
    Console.WriteLine("First player, please enter your name.")
    user1 = Console.ReadLine()
    Console.WriteLine("Thank you, {0}!", user1)
    Console.ReadLine()
    Console.Clear()
    Console.WriteLine("Second player, please enter your name.")
    user2 = Console.ReadLine()
    Console.WriteLine("Thank you, {0}!", user2)
    Console.ReadLine()
    Console.Clear()
    Do Until score1 Or score2 = 10
        rnumber1 = New Random
        number1 = rnumber1.Next(1, 6)
        rnumber2 = New Random
        number2 = rnumber2.Next(1, 6)
        rnumber2 = rnumber1
        number2 = rnumber2.Next(1, 6)
        Console.Clear()
        Console.WriteLine("The score so far is {0} to {1}!", score1, score2)
        Console.WriteLine("Press enter to continue...")
        Console.Clear()
        Console.WriteLine("{0}, press enter to roll the dice!", user1)
        Console.ReadLine()
        Console.WriteLine(number1)
        Console.ReadLine()
        Console.WriteLine("{0}, press enter to roll the dice!", user2)
        Console.ReadLine()
        Console.WriteLine(number2)
        Console.ReadLine()
        If number1 > number2 Then
            Console.WriteLine("The winner of this round is {0}.", user1)
            Console.ReadLine()
            score1 = score1 + 1
            Console.Clear()
        ElseIf number2 > number1 Then
            Console.WriteLine("The winner of this round is {0}.", user2)
            Console.ReadLine()
            score2 = score2 + 1
            Console.Clear()
        Else : Console.WriteLine("This round was a tie!")
            Console.ReadLine()
        End If
    Loop
End Sub

希望此代码对您有所帮助。