mardi 1 septembre 2020

Vb.net Randomising unique buttons set of buttons?

I am trying to create a login system for a touch pannel, The system shows 4 images in random order these images include a Circle, a Suare, a Triangle, and a Hexagon. The reason for displaying the images at random is to prevent the next user from identifying the previous login by finger prints left on the screen. Each of these four images may only be displayed once. I have got a working system and it is random but not random enougth the oreder of patters is frequently repeated and the last image is almost allways a Hexagon. Dose anybody know a better way of programming what I need?

       Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load

#Region "Create security login buttons in random order"

#Region "Generating randomisation"

        Dim random As New Random()

        Dim FirstButton As Integer
        Dim SecondButton As Integer
        Dim ThirdButton As Integer
        Dim FourthButton As Integer

#Region "Sets random value for FirstButton"

        FirstButton = Convert.ToString(random.Next(0, 3))

#End Region

#Region "Sets random value for SecondButton"

        Do While SecondButton = FirstButton
            SecondButton = Convert.ToString(random.Next(0, 3))
        Loop

#End Region

#Region "Sets random value for ThirdButton"
        Do While ThirdButton = FirstButton Or ThirdButton = SecondButton
            ThirdButton = Convert.ToString(random.Next(0, 3))
        Loop

#End Region

#Region "Sets random value for FourthButton"

        Dim AssignValZero As Integer = 0
        Dim AssignValOne As Integer = 1
        Dim AssignValTwo As Integer = 2
        Dim AssignValThree As Integer = 3

        If AssignValZero = FirstButton Or SecondButton Or ThirdButton Then
            If AssignValOne = FirstButton Or SecondButton Or ThirdButton Then
                If AssignValTwo = FirstButton Or SecondButton Or ThirdButton Then
                    If AssignValThree = FirstButton Or SecondButton Or ThirdButton Then
                        FourthButton = AssignValThree
                    End If
                Else
                    FourthButton = AssignValTwo
                End If
            Else
                FourthButton = AssignValOne
            End If
        Else
            FourthButton = AssignValZero
        End If

#End Region

#End Region

#Region "Creating actual buttons"

#Region "Create SquareButton"

        Dim SquareButton As Button = New Button
        Dim ButtonSpacer As Integer = 12

        SquareButton.Height = 150
        SquareButton.Width = 100
        SquareButton.Image = My.Resources.Square

        If FirstButton = 0 Then
            SquareButton.Location = New Point((0 * SquareButton.Width) + (1 * ButtonSpacer), 25)
        ElseIf FirstButton = 1 Then
            SquareButton.Location = New Point((1 * SquareButton.Width) + (2 * ButtonSpacer), 25)
        ElseIf FirstButton = 2 Then
            SquareButton.Location = New Point((2 * SquareButton.Width) + (3 * ButtonSpacer), 25)
        ElseIf FirstButton = 3 Then
            SquareButton.Location = New Point((3 * SquareButton.Width) + (4 * ButtonSpacer), 25)
        End If

        Me.Controls.Add(SquareButton)

#End Region

#Region "Create RoundButton"

        Dim RoundButton As Button = New Button

        RoundButton.Height = 150
        RoundButton.Width = 100
        RoundButton.Image = My.Resources.Circle

        If SecondButton = 0 Then
            RoundButton.Location = New Point((0 * RoundButton.Width) + (1 * ButtonSpacer), 25)
        ElseIf SecondButton = 1 Then
            RoundButton.Location = New Point((1 * RoundButton.Width) + (2 * ButtonSpacer), 25)
        ElseIf SecondButton = 2 Then
            RoundButton.Location = New Point((2 * RoundButton.Width) + (3 * ButtonSpacer), 25)
        ElseIf SecondButton = 3 Then
            RoundButton.Location = New Point((3 * RoundButton.Width) + (4 * ButtonSpacer), 25)
        End If

        Me.Controls.Add(RoundButton)

#End Region

#Region "Create TriangleButton"

        Dim TriangleButton As Button = New Button

        TriangleButton.Height = 150
        TriangleButton.Width = 100
        TriangleButton.Image = My.Resources.Triangle

        If ThirdButton = 0 Then
            TriangleButton.Location = New Point((0 * TriangleButton.Width) + (1 * ButtonSpacer), 25)
        ElseIf ThirdButton = 1 Then
            TriangleButton.Location = New Point((1 * TriangleButton.Width) + (2 * ButtonSpacer), 25)
        ElseIf ThirdButton = 2 Then
            TriangleButton.Location = New Point((2 * TriangleButton.Width) + (3 * ButtonSpacer), 25)
        ElseIf ThirdButton = 3 Then
            TriangleButton.Location = New Point((3 * TriangleButton.Width) + (4 * ButtonSpacer), 25)
        End If

        Me.Controls.Add(TriangleButton)

#End Region

#Region "Create HexagonButton"

        Dim OctagonButton As Button = New Button

        OctagonButton.Height = 150
        OctagonButton.Width = 100
        OctagonButton.Image = My.Resources.Hexagon

        If FourthButton = 0 Then
            OctagonButton.Location = New Point((0 * OctagonButton.Width) + (1 * ButtonSpacer), 25)
        ElseIf FourthButton = 1 Then
            OctagonButton.Location = New Point((1 * OctagonButton.Width) + (2 * ButtonSpacer), 25)
        ElseIf FourthButton = 2 Then
            OctagonButton.Location = New Point((2 * OctagonButton.Width) + (3 * ButtonSpacer), 25)
        ElseIf FourthButton = 3 Then
            OctagonButton.Location = New Point((3 * OctagonButton.Width) + (4 * ButtonSpacer), 25)
        End If

        Me.Controls.Add(OctagonButton)

#End Region

#End Region

#End Region

    End Sub



Aucun commentaire:

Enregistrer un commentaire