Gra Lotto – jak samemu ją napisać?

Formuły
Dodatki do Excela
Zaawansowany
0:00czas trwania

Podczas tej lekcji napiszemy program, którego działanie będzie analogiczne do niezwykle popularnej gry Lotto. Dzięki temu zastosujemy poznane wcześniej pętle i konstrukcje w jednym programie, a także poznamy działanie „zapętlonej” pętli For. Jest to niezwykle istotna umiejętność, która pozwala wykonać naprawdę złożone programy w VBA. Zapraszamy do gry!

Opublikowane: 31 lipca 2019
Lekcję prowadzi: Kamil Skonecki
Pobierz szablon do dalszej pracy
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu

Zobacz krok po kroku jak wykonać lekcję

Z lekcji dowiesz się:

  • Jak napisać program do gry Lotto?

  • Na czym polega działanie „zapętlonej” pętli FOR?

  • Jak w „grze” wykorzystać poznane pętle i konstrukcje!

Pobierz szablon do dalszej pracy
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu

Z lekcji dowiesz się:

  • Jak napisać program do gry Lotto?

  • Na czym polega działanie „zapętlonej” pętli FOR?

  • Jak w „grze” wykorzystać poznane pętle i konstrukcje!

Instrukcja do zadania:

1) Użytkownik podaje 6 liczb od 1 do 49. Liczby nie mogą się powtarzać. Powinny one zostać

wpisane w pola A1-A6.

2) Sprawdzamy czy żadna liczba się nie powtarza.

3) „Losujemy” 6 liczb z przedziału [1:49] i porównujemy je z liczbami użytkownika.

4) Jeśli liczba użytkownika zgadza się z wylosowaną liczbą to zamalowujemy liczbę użytkownika

na zielono. W przeciwnym przypadku malujemy ją na czerwono.

5) Po skończonym losowaniu powinien pojawić się komunikat informujący o:

a. Wylosowanych liczbach.

b. Ilości trafionych liczb przez użytkownika.

c. Stopniu wygranej (6 trafionych to wygrana I stopnia, 5 trafionych to II stopnia itd.).

Minimalna ilość trafionych liczb aby wypłacić nagrodę to 3.

W pierwszym kroku napiszemy kod, który umożliwi nam sprawdzenie czy podane przez użytkownika liczby się nie powtarzają. W tym celu zastosujemy wspomnianą na początku podwójną konstrukcje For.

Dim a As Integer -> tworzymy sztuczną zmienną a, która umożliwi policzenie ewentualnej liczby powtórzeń w zbiorze

a = 0 -> wartość początkową ustawiamy jako 0

For i = 1 To 6

For j = i To 6

Podwójna konstrukcja For działa w następujący sposób:

Wartość i wynosi 1 następnie przechodzimy do „J”, które również wynosi początkowo 1 wykonuje się działanie wewnątrz pętli. Po jego wykonaniu przechodzimy nie do pierwszej pętli for z wartością „I” do drugiej z wartością „J”, przy czym wartość „I” pozostaje cały czas taką samą wartością (1) a zwiększamy jedynie „J”. Wartość i zostanie zwiększona dopiero po przejściu całej drugiej pętli „J”. Czyli przykładowo:

i =1 j=1

i =1 j=2

i =1 j=3

i =1 j=4

i =1 j=5

i =1 j=6

i =2 j=1

i =2 j=2

i =2 j=3

.

.

.

.

.

I =6 j=6

Dodatkowo wartość początkowa “J” jest równa wartości początkowej „I”, dzięki czemu unikamy sprawdzania liczby przez samą siebie.

If Cells(1, i).Value = Cells(1, j + 1).Value Then -> klasyczna konstrukcja warunkowa, sprawdzenie czy liczba w zbiorze się powtarza, jeśli tak zwiększamy wartość a o jednostkę.

a = a + 1

End If

Next

Next

If a > 0 Then

MsgBox ("Liczba sie powtarza") -> jeżeli liczba powtórzyła się minimum 1 raz to wyświetl komunikat o powtórzeniu.

End If

W kolejnym kroku, wylosujemy 6 liczba z przedziału 1-49.

For liczba = 1 To 6 - > pętla for która umożliwia wylosowanie 6 kolejnych liczb

liczba_losowa = Int((49 - 1 + 1) * Rnd + 1) -> formuła służąca do losowania liczb z wybranego przedziału, jej konstrukcja to :

INT((górny_przedział – dolny_przedział + 1) * Rnd + dolny_przedział)

Cells(2, liczba).Value = liczba_losowa -> wpisywanie kolejnych liczb do kolejnych komórek

Next

Dim trafiony As Integer ->utworzenie sztucznej zmiennej trafiony, która zliczy trafione liczby.

For x = 1 To 6

For y = 1 To 6

Ponowne zastosowane podwójnej konstrukcji for, działa ona antologicznie jak w pierwszym przypadku.

If Cells(1, x).Value = Cells(2, y).Value Then -> instrukcja warunkowa porównująca ze sobą kolejne liczby (wytypowane przez użytkownika i wylosowane przez program)

Cells(1, x).Interior.ColorIndex = 10 -> w przypadku trafienia danej liczby pokoloruj komórkę na zielone.

trafiony = trafiony + 1 -> zliczamy ilość poprawnych typowań

Exit For

Else

Cells(1, x).Interior.ColorIndex = 3 -> w przypadku braku trafienia danej liczby pokoloruj komórkę na czerwono

End If

Next

Next

Cells(3, 1).Value = trafiony -> wpisz w komórkę A3 liczbę trafień

Select Case Cells(3, 1).Value -> na podstawie liczby trafień przy użyciu konstrukcji Salect Case wyświetl odpowiedni komunikat.

Case "0"

Range("C4").Value = "Brak wygranej" -> w odniesieniu do liczby trafień w komórce C4 pojawi się stosowny komunikat.

Case "1"

Range("C4").Value = "Brak wygranej"

Case "2"

Range("C4").Value = "Brak wygranej"

Case "3"

Range("C4").Value = "Wygrana 4 stopnia"

Case "4"

Range("C4").Value = "Wygrana 3 stopnia"

Case "5"

Range("C4").Value = "Wygrana 2 stopnia"

Case "6"

Range("C4").Value = "Wygrana 1 stopnia"

End Select

End Sub

Pobierz gotowy arkusz z lekcji
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu
Kolejne kroki dostępne dla użytkowników którzy wykupili pełny dostęp

Jeszcze się wahasz?

Zobacz, co zyskasz, mając pełny dostęp:

  • Dostęp do wszystkich lekcji video
  • Materiały do ćwiczeń
  • Dodatkowe artykuły z trikami
  • Formularze gotowe od razu do użycia
  • E-booki pogłębiające Twoją wiedzę
  • Certyfikat potwierdzający Twoje umiejętności
Sprawdź co oferuje serwis Sprytny Excel »

Masz już konto w serwisie?

Zaloguj się

Adres e-mail lub login:

Hasło

Nie pamiętam hasła
- Twój pierwszy krok do lepszych wyników
Oglądaj pełne lekcje i wiedz więcej!
Masz już konto w serwisie?
Zaloguj się »

wiper-pixel