Taaaa..."piekna mamy jesień tego lata"...co prawda
gdy to czytacie, to rzeczywiście jest juz jesień, ale dla mnie
w tej chwili jest środek "lata"...rower stoi w garażu,
strój kąpielowy upchnięty głęboko w szafie, a ja witam Was w
czwartej części zmagań z QBasiciem - jednym słowem siedzę
przy kompie zamiast opalać się na piaszczystej plaży u
boku...no dobra, przecież nie o tym miałam pisać. :)) W każdym
razie należy Wam się wyjaśnienie. W ostatnim numerze AM nie było
kursu Wybaczcie, po prostu sobie wyjechałam. :) Taki..odpoczynek
od kompa. :) W każdym razie juz jestem i mogę Wam obiecać, ze
taka sytuacja juz się nie powtorzy...no, chyba, ze za pól roku
jak sobie pojadę gdzieś na ferie ;)
{Oby, oby :)))}
No, włączyłam czadowa muzylę i teraz zaczynam szalec...czyli:
bierzemy się do pracy ludziska!!! :)
Ostatnio obiecałam skończyć pętelki czyż nie? Ano jasne, ze
tak ;) a wiec dwie następne bardzo podobne do siebie, różniące
się tylko odwrotnością sprawdzanych warunków.
Pętla typu <<<DO WHILE>>>
Pętla ta przydaje się w momencie gdy nie wiemy ile razy
procedura będzie musiała być powtórzona. Z samej nazwy pętli
(wykonuj dopóki) wynika, iż pętla zakończy powtarzanie
procedury w momencie gdy zostanie spełniony określony warunek.
Przykład 1
-------------------------------------------------------
CLS
DO
PRINT "Devi pisze 4 czesc kursu"
INPUT "Jeszcze raz (t/n)"; odp$
LOOP WHILE (odp$ = "T" OR odp$ = "t")
END
-------------------------------------------------------
Pętla typu <<<DO UNTIL>>>
Ta pętla jest bardzo podobna do poprzedniej, jednak warunek zakończenia
pętli jest odwrotny (pętla wykonuj dopóki nie).
Przykład 2
-------------------------------------------------------
CLS
DO
PRINT "Devi pisze 4 czesc kursu"
INPUT "Jeszcze raz (t/n)"; odp$
LOOP UNTIL (odp$ = "N" OR odp$ = "n")
END
-------------------------------------------------------
Zapytacie: czym tak właściwie różnią się te dwie pętle?
Wyobraźcie sobie, ze musicie powpisywać na listę masę nazwisk
i każdemu z nich przypasować jakaś tam dana. Wystarczy wtedy,
ze zastosujecie pętle Do WHILE która powtarzać będzie
procedurę do momentu wyczerpania się nazwisk. Gdy natomiast
napiszecie program/grę gdzie zadaniem użytkownika będzie
odgadniecie losowo generowanej liczby pętla typu DO UNTIL
powtarzać będzie procedurę do momentu gdy prawidłowa liczba
zostanie przez użytkownika podana. Zasadniczo jednak pętlę tę
można stosować zamiennie.
Uff, czyżbyśmy uporali się do końca z pętlami? Ano, ano...:)
A teraz pomaltretuję Was czym innym...hehe! :) Taaak, wiem, ze
czekacie na grafikę, ale to za miesiąc. Teraz troszke...muzyki!
Panie Szlachcianki (chlip, dziewczyny, czemu mnie nie czytacie,
czy tylko mnie interesuje QBasic?!?!?), Panowie Szlachta -
poloneza czas zacząć!!!
Wiecie, ze Wasz PC ma w swych wnętrznościach wbudowany taki
maleńki glośniczek? To on właśnie odgrywa piękna,
charakterystyczna symfonie gdy łączycie się z netem. Jeżeli
graliście kiedyś w dosowe banalnie proste gry wiecie również,
ze może on odegrać całkiem ciekawa melodyjke...ja pamiętam
np. melodie z jednej gierki...to był "Skrzypek na
dachu". :)
QBasic daje możliwość nakłonienia tego właśnie glośniczka
do wydania pojedynczego dźwięku, szeregu dźwięków,
melodii...mozecie się nawet pobawić w kompozytorow...no, ale
przejdę do konkretów.
***Pojedynczy dzwięk***
Aby komp takowy wydal wystarczy instrukcja BEEP. :) I tyle. :)
Przykładu dawać nie musze prawda?
***Szereg dzwiekow***
Potrzebna jest nam do tego juz inna instrukcja. Jest nią SOUND.
Określają ja dwa parametry. Częstotliwość dźwięku (w
hercach) i jego dlugość.
%%% WAŻNE %%%
Czestotliwość:
Nuta C (do) - 440 Hz, każde następne C o oktawę niżej to częstotliwość
poprzedniego C podzielona przez dwa. Czyli C o oktawę niżej od
C = 440 Hz to 220 Hz, następne to 110 Hz, następne 55 Hz itd.
Czas trwania:
Mierzony liczba impulsów zegarowych w czasie trwania dźwięku.
Zegar procesora generuje 18,2 impulsu na sekundę, czyli dźwięk
o wartości 18 będzie trwał prawie sekundę.
Przykład 3
----------------------------------------------------------
CLS
SOUND 440, 18 'Nuta C trwajaca sekunde
END
----------------------------------------------------------
Aby komp wydal z siebie jakiś przyzwoity szereg dźwięków należy
wpisać w jakim przedziale częstotliwości te dźwięki maja być
oraz to , czy maja być odegrane wszystkie możliwe dźwięki z
podanego przedziału, czy tylko określone.
Przykład 4
----------------------------------------------------------
CLS
PRINT "Generuje szereg dzwiekow"
FOR nuta 440 TO 880 STEP 5
SOUND nuta, 5
NEXT nuta
END
----------------------------------------------------------
FOR nuta 440 TO 880 STEP 5 - podajemy zakres częstotliwości
oraz co jaka ilość herców ma następować skok.
***Troche muzyki***
Jak juz wspominałam QBasic daje również możliwość
stworzenia własnej melodii. Służy do tego instrukcja PLAY. Dzięki
niej możemy z łatwością zakodować jednogłosową melodie.
Tabela 1
-------------------------
L - lenth - długość (jak długo dany dźwięk ma być
odtwarzany).
To może być dlugość:
L16 - szesnastki
L4 - ćwierćnuty
L3 - półnuty
L2 - półnuty z kropka
L1 - calej nuty
P - pause - pauza (czas trwania pauzy).
To może być dlugość:
P16 - szesnastki
P4 - ćwierćnuty
P3 - półnuty
P2 - półnuty z kropka
P1 - calej nuty
CDEFGAH - alfabet muzyczny.
< - zmiana oktawy w dół
> - zmiana oktawy w gore
. (kropka) przy nucie wydłuża czas jej trwania o polowe
C2 - liczba przy nucie zmienia jej czas trwania. (Zmiana dotyczy
jednak tylko tej konkretnej nuty a nie ciągu nut następujących
za nią).
No! Koniec na dziś. Życzę Wam miłego komponowania...aha...i
przyślijcie to co stworzyliście, z chęcią posłucham. Oczywiście
programy nie mogą być skompilowane, execow nie odpalam. Za
miesiąc zaczynamy grafikę.
Z tym odcinkiem macie jeden programik. Przejrzyjcie kod,
odpalcie...calkiem ładna syrena mi wyszła. ;) A co do
pytan...ostatnio dostałam masę maili z jednym tylko: Jak z
*.bas zrobić *.exe. To proste, skompilować program. W edytorze
tego zrobić nie można, trza mieć kompilator (heh, w tym
przypadku interpreter). Gdzie go znaleźć? W sieci. Jest na większości
stron traktujących o QBasicu. :) Poszukajcie, z pewnością
znajdziecie.
Ok, pozdrawiam Was serdecznie. Jak zwykle pytania i uwagi ślijcie
na adres:
kursqbasic@pf.pl
Devi