Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

12Bernard12

[VB 2010] Pytanie o funkcje RND, nalicznie punktów i inne.

Polecane posty

Witajcie.

Założyłem nowy wątek w którym będę zadawał kilka pytań dotyczących języka Visual Basic pisanego w Microsoft Visual Basic 2010 Express. Posiadam Win 7 Professional.

Chciałem zrobić grę/aplikacje w której po przyciśnięciu przycisku "start" będą losować się pytania (form5-form8), po poprawnej odpowiedzi będą losować się dalej, ale bez poprzednich. Po każdej poprawnej odpowiedzi miałyby dodawać się punkty, które na końcu gry będą się sumować, a w oddzielnej zakładce będzie pokazywać się 10 najlepszych wyników. Formy się losują, ale niestety nie wiem jak zaprogramować, żeby losowały się bez powtórzenia. Klikam przycisk "start" losuję się form (od 5 do 55), odpowiadam na pytanie (tak/nie) i po kliknięciu poprawnego przycisku losują się kolejne formy, ale bez tych co wylosowały się poprzednio. Oto mój kod:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rnd As New Random(Date.Now.Millisecond)
Dim newform As New Form
Select Case rnd.Next(0, 4)
Case 0
newform = New Form5
Case 1
newform = New Form6
Case 2
newform = New Form7
Case 3
newform = New Form8
End Select
newform.Show()

Me.Hide()

End Sub

Podsumowując:

1. Prośba o napisanie kodu/szablonu lub innej podpowiedzi do naliczanie punktów po poprawnej odpowiedzi (zazwyczaj kliknięcie przycisku TAK/NIE) i do zapamiętywania a potem wyświetlania najlepszych 5 wyników w historii.

2. No jeszcze jakiś łatwy kurs dla żółtych (bo ja za słaby żeby być zielony ;)). Na necie znlazłem kilka, ale nie ogarniam tego trochę.

3. I ten kod co wyżej.

Pozdrawiam.

Link do komentarza
Udostępnij na innych stronach

Proponuję zrobić listę dostępnych opcji do wylosowania (np listę numerów form) i losować indeks z zakresu tej listy. Po wylosowaniu usuwasz wybrany element z listy i kolejne losowanie będzie miało mniejszy zakres.

Sugeruję rozważyć, czy konieczne jest robienie tylu różnych form - czy nie da się po prostu przekazywać jednej formie różnych danych.

Link do komentarza
Udostępnij na innych stronach

No dobra, ale masz zawsze pytanie i jakąś formę odpowiedzi jak tekst do wpisania albo listę pól do wyboru. Mógłbyś zrobić po jednej formie na typ pytania i ładować odpowiednią informację. Popatrz na to z tej strony: jak będziesz miał 1000 pytań, to zrobisz 1000 form? Albo jeśli będziesz chciał zmienić zestaw pytań, co wtedy? Pokombinuj. Tak czy siak, nazywanie form kolejnymi numerami to proszenie się o problemy - odradzam takie podejście.

Jeśli chodzi o przykład kodu, to poniżej jest losowanie bez powtórzeń z listy liczb:

private void RandomTest()
{
List<int> randomValues = new List<int>();
Random rand = new Random();
for (int i = 0; i < 50; i++)
{
randomValues.Add(rand.Next(0, 1000));
}

do
{
int index = rand.Next(0, randomValues.Count);
Console.WriteLine(randomValues[index]);
randomValues.RemoveAt(index);
} while (randomValues.Count > 0);

}

Kod jest w C# - bez problemu przetłumaczysz go na VB.NET za pomocą jakiegoś konwertera online (np http://www.developerfusion.com/tools/convert/csharp-to-vb/).

Link do komentarza
Udostępnij na innych stronach

Dziękuję za kod. Mam teraz taki:



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
private void RandomTest()
{
List<int> randomValues = new List<int>();
Random rand = new Random();
for (int i = 0; i < 50; i++)
Next
randomValues.Add(rand.Next(0, 1000));
{

Do
Form5.Show()
Form6.Show()
Form7.Show()
Form8.Show()

Loop
{
int index = rand.Next(0, randomValues.Count);
Console.WriteLine(randomValues[index]);
randomValues.RemoveAt(index);
} while (randomValues.Count > 0);

}


Me.Hide()

End Sub

Jak na razie nie mam zastrzeżeń do działania, jednak po wklejeniu (oczywiście edytowałem i konwertowałem) wyskoczyło multum błędów. Część poprawiłem jednak nie wszystkie mi się udało. Aktualnie prawie rozgryzłem błędy składniowe, ale jeszcze są uznawane z błędy ;)

Oto screen z moimi błędami:

bez-tytulu.jpg

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...