[VB] Pomocy z funkcją Randomize


(12Bernard12) #1

Siema. 

 

Ostatnio tworzyłem aplikację z quizem w VBS, ale przeniosłem się do VB gdyż VBS było za bardzo ubogim skryptem. Mam do Was jedno pytanie dotyczące funkcji Randomize. Jak zaprogramować aby po kliknięciu przycisku Start pojawiała się losowa forma z pytaniem (ale żeby pytania się nie powtarzały) i po skończeniu wszystkich pytań pojawiła się informacja o wyniku. 

 

Mam też problem z naliczaniem punktów i z funkcją liczącą 5/10 najlepszych wyników, ale to nie takie ważne na razie :wink:

 

Dodam że pracuję na Win 7 Professional z Microsoft Visual Basic 2010 Express.


(czeski14) #2

Hej,

 

Możesz wrzucić nazwy (bądź też inny unikalny atrybut) formularza do tablicy i losować po jej indeksach. Czyli np. jak masz 3 formularze w tablicy to losujesz z  wartości od 0 do 2, po wylosowaniu np. w kolejnej tablicy zapisujesz wylosowany przed chwilą numer indeksu. Przy następnym losowaniu sprawdzasz czy wylosowany indeks jest już w tablicy z losowaniami, jeśli nie to wyświetlasz formularz.

 

Pozdrawiam


(12Bernard12) #3

Nie ogarniam. Mógłbyś dać przykład z tym?


(Grzelix) #4

Najlepiej jak ty byś dał kawałek kodu.

 

Pomysł wygląda tak pseudo kod.

 

tablica_z_pytaniami[] = {}

do(

id = losujesz()

while(id nie jest w tablica z pytaniami)

dodaj id do tablicy_z_pytaniami

 

tablica z pytaniami - tablica gdzie trzymasz już wcześniej wylosowane pytania, po każdym losowaniu sprawdzasz czy nie trafiłeś na pytanie już wylosowane i jeśli tak to losujesz jeszcze raz.


(12Bernard12) #5

A jaki to dokładniej kawałek? Mam coś takiego że mam Menu główne i jak kliknę przycisk Start to chciałem żeby losowało formularze od 5 do 7 (lub więcej), w tych formularzach zawierały się pytania i gdy odpowiesz poprawnie pojawia się form 4 (ustawiłem to), klikasz dalej i znowu się losują pytania, bez poprzednich. Ze złą odpowiedzią zaprogramowałem jak trzeba.

Po dłuższej chwili ogarnąłem taki kod, że po przyciśnięciu przycisku Start program losuje formularze (form) od 5 do 8 po czym Menu główne znika. Zadziałała mi niestety tylko ta druga część, nowe formularze (form) się nie pojawiają. Nie wiem co mam źle i prosiłbym o podpowiedź.

Oto mój kod przy kliknięciu przycisku Start:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim adu As String
        adu = Rnd(5, 8)
        Select Case adu
            Case 1
                Form5.Show()
            Case 2
                Form6.Show()
            Case 3
                Form7.Show()
            Case 4
                Form8.Show()
        End Select
        Me.Hide()
 
    End Sub

(floyd) #6

Losujesz liczbę adu, a deklarujesz ją jak tekst. Powinno być:  dim adu as integer

Losujesz ponoć liczby od 5 do 8, a piszesz case 1, case 2… To powinny być liczby które wylosowałeś.

albo zmienić na:

dim adu as integer

Randomise()

 adu = Int(4 * Rnd()) + 1