Instrukcja2 GG

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 1

Visual Basic dla aplikacji w Excelu

Ćwiczenie 2 - pętle i instrukcje warunkowe


Ułożyć program gry komputerowej „Gra w numerki”. Zasady gry są następujące: komputer losuje liczbę a Ty Biedaku
masz 10 szans aby ją odgadnąć.

ETAP I - wersja podstawowa zawierająca procedury:

losowanie

losuje liczbę z zakresu 1-99,

wstawianie_liczby wczytuje Twoją liczbę za pomocą funkcji InputBox i wstawia ją do komórki moje,

porównywanie

wpisuje do komórki wynik tekst ZA DUŻO, ZA MAŁO, zależnie od tego jak

wypadło porównanie Twojej liczby z liczbą wylosowaną przez komputer,

zgadywanie

daje 10-krotną szansę na odgadnięcie liczby, jeśli zgadniesz do komórki wynik wstawi

tekst
SUKCES,

czyszczenie

przywraca pierwotny stan ekranu.


1.

W skoroszycie zostaw tylko jeden arkusz o nazwie Gra.

2.

Nadaj nazwy komórkom:

moje - komórka F4, będzie tu wpisywana Twoja liczba,

wynik - komórka F2, będzie tu wpisywany komunikat o wyniku zgadywania.

3.

Do komórki E4 wpisz tekst MOJA LICZBA, do E2 tekst WYNIK.

4.

Wstaw arkusz modułu i wpisz polecenie wymuszające deklarację zmiennych Option Explicit. Wpisz deklarację
zmiennych dostępnych we wszystkich procedurach: liczba_losowa (liczba całkowita), skok (liczba całkowita),
sukces (warto
ść logiczna).

Option Explicit
Dim liczba_losowa As Integer, skok As Integer
Dim sukces As Boolean

5.

Napisz procedurę losowanie - procedura Randomize uruchamia generator liczb losowych, funkcja Rnd losuje liczbę
z zakresu <0,1), Int zwraca część całkowitą liczby.

Sub losowanie()
Randomize
liczba_losowa = Int(Rnd() * 99) + 1
End Sub

6.

Napisz procedurę wstawianie_liczby, która wczytuje Twoją liczbę za pomocą funkcji InputBox i wstawia ją do
komórki moje.

Sub wstawianie_liczby()
Dim liczba_moja As Integer
Dim wynik As String
wynik = InputBox("Wpisz liczb

ę

z zakresu 1-99", "Czy zgadniesz?", , _

100, 120)
liczba_moja = CInt(wynik)

Tu uzupełnij procedur

ę

, wstaw liczb

ę

do komórki moje

End Sub

7.

Napisz procedurę porównanie, która porównuje liczbę z komórki moje z liczbą losową i wpisuje do komórki
wynik tekst ”ZA DUŻO” lub ”ZA MAŁO” oraz ustawia wartość zmiennej sukces.

Sub porównanie()
Dim liczba_moja As Integer
sukces=False

liczba_moja = Range("moje")
If liczba_moja = liczba_losowa Then
sukces = True
End If

If liczba_moja < liczba_losowa Then

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 2

Range("wynik") = "ZA MAŁO"

End If
If liczba_moja > liczba_losowa Then

Range("wynik") = "ZA DU

Ż

O"

End If

End Sub

9.

Napisz procedurę zgadywanie. Procedura ta losuje liczbę, a następnie 10 razy umożliwia zgadywanie (wstawianie
liczby i porównywanie). Procedura jest przerywana gdy zmienna sukces otrzyma wartość True.

Sub zgadywanie()
Dim i As Integer
losowanie
For i = 1 To 10
skok=i
wstawianie_liczby
porównanie
If sukces = True Then
Range("wynik") = "SUKCES”
‘Zako

ń

czenie procedury - sukces

Exit Sub
End If
Next i

‘Zako

ń

czenie procedury - pora

ż

ka

End Sub

10.

Wstaw przycisk START i przypisz do niego procedurę zgadywanie. Przetestuj jego działanie. Przed każdą
powtórką gry wyczyść komórki moje oraz wynik.

11.

Zmodyfikuj procedurę zgadywanie:

w przypadku sukcesu dla komórki wynik:

- wpisz wartość: "SUKCES - liczba prób " & i

- ustaw właściwość Font.Bold na True oraz Font.Color na czerwony (stała vbRed)

w przypadku porażki dla komórki wynik:

- wpisz wartość: "CHA! CHA! CHA! - to była liczba " & liczba_losowa

- ustaw właściwość Font.Bold na True oraz Font.Color na niebieski (stała vbBlue)

Uwaga: Operator & realizuje konkatenację(łączenie) napisów. Zmienna liczbowa w ww. instrukcji zostanie
automatycznie zamieniona na napis.

12.

Przetestuj.

13.

Napisz procedurę czyszczenie przywracającą pierwotny stan ekranu:

wyczyść zawartość komórek: wynik, moje wykonując na ich rzecz metodę Clear,

przywróć standardowe formatowanie komórki wynik - wyłącz Bold i ustaw kolor czarny (vbBlack)

14.

Wywołaj procedurę czyszczenie w odpowiednim miejscu procedury zgadywanie.

15.

Ponownie przetestuj działanie przycisku START.

ETAP II - wersja testująca poprawność Twoich liczb.

1.

Zmodyfikuj procedurę wstawianie_liczby. W przypadku nie wprowadzenia żadnej liczby (puste pole wejściowe i
przycisk OK w oknie InputBox), rezygnacji (przycisk Anuluj w oknie InputBox) lub złego formatu liczby mamy
stratę gracza (zaprzepaszczona jedna szansa na odgadnięcie liczby). Zastosuj pułapkę na błędy On Error Goto
etykieta
. W przypadku wprowadzenia liczby spoza zakresu <1,99> również mamy stratę gracza. Ten przypadek
wykrywa się za pomocą instrukcji if.
W Module1 zadeklaruj dodatkową zmienną wpis (boolean).

Sub wstawianie_liczby()
Dim liczba_moja As Integer
Dim wynik As String
wynik = InputBox("Wpisz liczb

ę

z zakresu 1-99", "Czy zgadniesz?", , _

100, 120)
On Error GoTo blad
liczba_moja = CInt(wynik)

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 3

If liczba_moja <= 0 Or liczba_moja > 99 Then
wpis = False
Range("moje").Clear
MsgBox "Liczba poza zakresem" & Chr(13) & "-STRATA-"
Else
wpis = True
Range("moje") = liczba_moja
End If
Exit Sub
blad:
wpis = False
Range("moje").Clear
MsgBox "Bł

ę

dny zapis liczby" & Chr(13) & "-STRATA-"

End Sub

2.

W procedurze porównanie uwzględnij przypadek straty gracza:

ustal miejsce w procedurze, w którym należy sprawdzić zaistnienie tego przypadku a następnie

jeśli zmienna wpis ma wartość False do komórki wynik wpisz tekst ”STRATA” i zakończ wykonywanie
procedury porównanie (Exit Sub)

ETAP III - wersja rozszerzona wyświetlająca dodatkowo ciąg wprowadzanych liczb w następującej formie

ZA MAŁO

ZA DUŻO

20

39

50

1.

Nadaj nazwy komórkom:

próby - zakres komórek B8:C17, będą tam wprowadzone twoje kolejne próby zgadywania

za_mało - komórka B7, poniżej będą wpisywane Twoje za małe liczby,

za_dużo - komórka C7, poniże będą wpisywane Twoje za duże liczby,

2.

Wpisz do komórki za_mało słowa ZA MAŁO, a do komórki za_dużo słowa ZA DUŻO.

3.

Zmodyfikuj procedurę porównanie wpisując dodatkowe instrukcje wstawiające wartość zmiennej liczba_moja do
komórek:

Range("za_dużo").Offset(skok, 0) jeśli w komórce wynik jest wartość „ZA DUŻO”

Range("za_mało").Offset(skok, 0) jeśli w komórce wynik jest wartość „ZA MAŁO”

4.

W procedurze czyszczenie dodaj czyszczenie bloku próba.

5.

Przetestuj działanie gry.

ETAP IV- obiekty graficzne

1.

Utwórz obiekt graficzny. Narysuj kolorową twarz pajaca połącz wszystkie elementy (opcja grupuj). Narysuj smutne
i uśmiechnięte usta. Przesuń usta w odpowiednie miejsce twarzy umieszczając je jedne na drugich.








2.

Nazwij pierwszy obiekt twarz, drugi uśmiech, a trzeci smutek.

3.

Utwórz nowy moduł (Moduł2), a w nim poniższe procedury.

background image

Informatyka – programowanie, Politechnika Świętokrzyska

str. 4

4.

Utwórz procedurę smutas składające się z następujących akcji:

przesuń usta wesołe na sam spód

przesuń usta smutne na wierzch


Sub smutas()
ActiveSheet.DrawingObjects("u

ś

miech").Select

Selection.SendToBack
ActiveSheet.DrawingObjects("smutek").Select
Selection.BringToFront
Range("A1").Select
End Sub


5.

Przesuń twarz na wierzch i uruchom procedurę smutas.

6.

Utwórz procedurę wesołek, składającą się z następujących akcji:

przesuń usta smutne na sam spód

przesuń usta wesołe na wierzch


Sub wesołek()
ActiveSheet.DrawingObjects("smutek").Select
Selection.SendToBack
ActiveSheet.DrawingObjects("u

ś

miech").Select

Selection.BringToFront
Range("A1").Select
End Sub


7.

Przesuń twarz na wierzch i uruchom procedurę wesołek.

8.

Utwórz makro bez_wyrazu składające się z jednej akcji przesuwania twarzy na wierzch.

9.

Zmodyfikuj procedurę zgadywanie, tak aby wesołek pojawiał się w przypadku sukcesu, a smutas w przypadku
porażki.

10.

Zmodyfikuj procedurę czyszczenie wywołując w niej dodatkowo procedurę bez_wyrazu.

11.

Napisz procedurę auto_open uruchamianą automatycznie w momencie otwierania skoroszytu. Procedura powinna
ustawiać pełny ekran dla aplikacji.


Sub auto_open()
Application.DisplayFullScreen = True
End Sub

12.

Narysuj przycisk KONIEC GRY i przypisz do niego poniższą procedurę:


Sub koniec()
Application.DisplayFullScreen = False
ActiveWorkbook.Close
End Sub


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron