Archiwum
- LATANIE W KATARZE
- Przyznaj to ,przyznaj tamto ... czyli ... ?
- Telewizory 3D i odtwarzacze Blu-ray 3D w USA, czyli ogromna ofensywa marketingowa i r
- dot A i dot U, czyli nowe, cienkie notebooki od Packard Bell
- Mass Effect 3, Dragon Age II oraz Dead or Alive 5 - czyli plotek o E3 ciąg dalszy
- Bitwa z żołnierzami Imperium, czyli nowy film z gry Star Wars: The Old Republic
- AMD Fusion, czyli procesor centralny i grafika DirectX 11 w jednym układzie
- Instalowanie gier i system osiągnięć w 3DS? Czyli plotek o nowej konsolce Nintendo ci
- Sterowanie systemem Windows za pomocą programu NirCmd (Windows XP, Vista, 7)
- ASUS Eee PC 1015T, czyli netbook z AMD i ATI na pokładzie
- Hyper-X blu, czyli nowa seria modułów pamięci RAM, od firmy Kingston
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- kajaszek.htw.pl
Cytat
Długie szaty krępują ciało, a bogactwa duszę. Sokrates
I byłem królem. Lecz sen przepadł rankiem. William Szekspir (właść. William Shakespeare, 1564 - 1616)
Dalsza krewna: Czy śmierć to krewna? - życia pytasz się kochanie, tak krewna, ale dalsza, już na ostatnim planie. Sztaudynger Jan
Dla aktywnego człowieka świat jest tym, czym powinien być, to znaczy pełen przeciwności. Luc de Clapiers de Vauvenargues (1715 - 1747)
A ludzie rzekną, że nieba szaleją, a nieba rzekną: że przyszedł dzień Wiary. Cyprian Kamil Norwid (1821-1883)
aaaaLATANIE W KATARZEaaaa
Witam serdecznie w drugiej części tutoriala dot. tworzenia botów. Dzisiaj chciałbym powiedzieć wam co nieco o zmiennych. Żywiąc szczerą nadzieję, że zrozumieliście poprzednią część, wiedząc że dzisiaj nie wiele zrozumiecie i będąc przekonanym, że wszystko rozjaśni się w kolejnych częściach zapraszam do lektury :).Może na początek malutki fragment kodu:
$Czas=0
Jeśli ktoś przemierzał bezkresy forum [Only registered and activated users can see links. Click Here To Register...]zapewne wiele razy spotkał się z podobnym zapisem i teraz może zadawać sobie pytanie: "No właśnie! Co to u diabła jest". Żeby nie przedłużać rozwarzmy następującą sytuację:
Maciek chce napisać bota, który co określony czas będzie wyrzucał na ekran komunikat z przypomnieniem, o określonej treści. Oczywiście od razu wpadł na pomysł, aby zastosować funkcję InputBox. Spróbujmy sami podążyć jego tokiem myślenia.
Zakładając, że Maciek ma wywiesić pranie wyobrażamy sobie jak powinien wyglądać nasz kod (z poprzedniej lekcji):
MsgBox(0, "Przypomnienie", "Wywies pranie!")
Hola, hola! Przecież to się pojawi raz i to w momencie uruchomienia programu! A miało się pojawiać co określony(czyli podany przez użytkownika czas). No to weźmy sobie ten czas za pomocą wsomnianej przez maćka funkcji InputBox. Zobaczmy co nam na jej temat powie zestaw pomocy AutoIt:
InputBox
--------------------------------------------------------------------------------
Displays an input box to ask the user to enter a string.
InputBox ( "title", "prompt" [, "default" [, "password char" [, width [, height [, left [, top [, timeout [, hwnd]]]]]]]] ) Dla nieumnych angielskiego jedno z niewielu tłumaczeń w tym tutorialu:
InputBox
--------------------------------------------------------------------------------
Wyświetla komunikat z polem do wpisania wartości tekstowej.
InputBox ( "tytul", "tresc" [, "wartosc domyslna" [, "kodowanie" [, szerokosc [, wysokosc [, odleglosc od lewej krawedzi ekranu [, odleglosc od gornej krawedzi ekranu [, czas po jakim okno zniknie automatycznie [, uchwyt okna rodzica]]]]]]]] ) O uchwycie okna rodzica dowiemy się w części o tworzeniu okien. Najpierw pomyślmy co powinniśmy zrobić. Nasz pierwszy komunikat będzie przypominał o wywieszeniu prania co 10minut.
Powiem wam w sekrecie, że jeśli chcemy żeby jakaś część kodu wykonywała się non-stop musimy ją umieścić pomiędzy słowami kluczowymi:
While 1
...
WEnd
No więc przekształćmy odpowiednio nasz program:
While 1
MsgBox(0, "Przypomnienie", "Wywies pranie!")
WEnd
Jeśli ktoś był na tyle odważny, żeby skompilować taki kod to musiał się nieźle zdenerwować. Okienko wyskoczyło, owszem, ale nie chciało się zamknąć. Dlaczego? Spójrzmy jeszcze raz na nasz program. W momencie pojawienia się komunikatu program wstrzymuje działanie. Po zareagowaniu (wcisnieciu ok) program wkracza do akcji, czyli... Wywala komunikat. (jakby ktos nie wiedzial, to program mozna wylaczyc uzywajac ikonki w tray'u). A my chcemy, zeby program czekal 20min. Posluzmy sie zatem funkcja o tajemniczej(:)) nazwie Sleep(). Nie będziemy się odwoływać do pomocy, gdyż funkcja ta przyjmuje tylko jeden argument i jest to czas oczekiwania w milisekundach. Dodajmy ją zatem do naszego kodu:
While 1
MsgBox(0, "Przypomnienie", "Wywies pranie!")
Sleep(20*60*1000)
WEnd
Oczywiste przekształcenie: 1000 milisekund to jedna sekunda, 60 sekund to jedna minuta, a takich minut chcemy czekać 20. W sumie to program możemy uznać za skończony, gdyby nie jeden drobny szczegół. Czas miał być podany przez użytkownika, a nie programiste. Co bardziej cwani zmienią sobie kod i im wystarczy, ale jeśli Maciek chciałby pożyczyć kolegom swój program? No więc naprawmy to (wreszcie dowiemy się czym są zmienne).
Zmienna - jak sama nazwa wskazuje jest to coś co się zmienia. A skoro się zmienia, to użytkownik też może to zmienić. Zazwyczaj tłumaczy się to na szufladkach, ale ja jestem inny i posłuże się kopertami :). Wyobraźmy sobie, że nasz program to listonosz. Jeśli użytkownik chce wyświetlić okno musi napisać list do systemu, albo poprosić listonosza, aby przekazał wiadomość. W naszym przypadku prosimy listonosza, aby przekazał wiadomość, ale czy nie lepiej napisać list?! Zmienna jest właśnie taką kopertą do której wkładamy list. A jeśli używamy funkcji InputBox, to tak jakby listonosz poprosił użytkownika o napisanie listu. Więc jeśli napiszemy tak:
InputBox("Czas", "Podaj czas miedzy pojawieniem sie komunikatow w minutach:", 1200)
powinniśmy otrzymać koperte z listem napisanym przez użytkownika. Ale gdzie jest ta koperta?! Listonosz zapomniał ją zabrać! Ba! Nawet nie dał jej użytkownikowi. Wróćmy do kodu na początku tematu:
$Czas=0
Symbol dolara nie symbolizyje nic innego jak napiwek dla listonosza, który rozdaje koperty :) (Dla czystego sumienia: to był żart).
Widzimy wyraźnie, że zmienna poprzedzona jest symbolem $ - dolara. Jeśli chcecie programować w AutoIT musicie się do tego przyzwyczaić. KAŻDA ZMIENNA JEST POPRZEDZONA $!
Zobaczmy co mamy tu napisane: $Czas=0 - Do koperty czas włóż 0, czyli nic. Zmieńmy to trochę :)
$Czas=InputBox("Czas", "Podaj czas miedzy pojawieniem sie komunikatow w minutach:", 1200)
No i mamy naszą wartość w kopercie podpisanej czas. W tym miejscu małe wtrącenie: Zmienne możecie nazywać niemal dowolnie. Nazwa zmiennej nie może jednak zawierać białych znaków(spacja, enter, tab), nie może zaczynać się od cyfry, nie może się powtarzać, musi być poprzedzona znakiem $ - dolara. Jeśli o czymś zapomniałem, to dopiszę :). Teraz czas użyć naszej koperty. Ponieważ nie chcemy, żeby nasze pytanie powtarzało się co podany czas, a jedynie komunikat użyjmy takiego zapisu:
$Czas=0
$Czas=InputBox("Czas", "Podaj czas miedzy pojawieniem sie komunikatow w minutach:", 1200)
While 1
MsgBox(0, "Przypomnienie", "Wywies pranie!")
Sleep($Czas*1000)
WEnd
Dlaczego wcześniej napisałem $Czas=0? Po prostu chciałem pokazać programowi, że taka zmienna wogóle istnieje, żeby uniknąć niepotrzebnych problemów (w większych programach mogą wystąpić). Widzimy też zastosowanie naszej zmiennej:
Sleep($Czas*1000)
*1000, bo czas podawaliśmy w sekundach. Mam nadzieję, że każdy z was będzie teraz wiedział jak przekształcić kod, abyśmy mogli wyświetlić określony komunikat. Będzie to dla was praca domowa, a jeśli nie będzie wam wychodziło, to dodam trochę niżej :)
O Boże! Ale się rozpisałem myślę, że po takiej dawce zrozumiecie czym są zmienne i do czego służą. W każdym razie doszedłem do wniosku, że nie będę wklejał cytatów z pomocy AutoIT. Możecie ją znaleźć w folderze z oprogramowaniem plik:AutoIt3Help.exe
A w następnym odcinku:
Brooke nauczy się pisać programy kontrolujące mysz i klawiaturę. Dowie się też jak uruchamiać konkretne programy. "Bridge" niezwykle się zdenerwuje widząc co się dzieje z jego komputerem. Postanowi opanować sztukę tworzenia okien, aby zawstydzić "kostkę bruckową".
Byłbym niezmiernie wdzięczny, gdyby ktoś zechciał wrzucić Screeny, bo informatycy, to z natury leniwe bestie :].
Zezwalam na kopiowanie poradnika tylko z dołączonym linkiem i BANNEREM swiata gier! (tego serwisu) i oczywiście tylko i wyłącznie z tym dopiskiem.
Pozdrawiam:
WaY
Masz błąd :) InputBox("Czas", "Podaj czas miedzy pojawieniem sie komunikatow w minutach:", 1200)
Zamiast w minutach to w sekundach :P kogos kto to odpali moze niezle zmylić :P
Screnschoty:
[Only registered and activated users can see links. Click Here To Register...]
W tym ss są 3 błędy: obok While ma byc 1 $Czas na koncu pętli ma być *1000 oraz ma byc MsgBox a nie MxBox mój błąd ^^
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
ps. "A w następnym odcinku" Leze i kwicze to serial jest??:D:D:D:grinser045::grinser045::grinser045:
Wywal te obrazki, a linki zostaw ;p kiedyś poprawie wszystkie tematy. (Piwo w innym wątku)