Forum www.maciuchnagames.fora.pl Strona Główna
FAQ Szukaj Użytkownicy Grupy Profil Zaloguj się, by sprawdzić wiadomości
Forum www.maciuchnagames.fora.pl Strona Główna  Zaloguj  Rejestracja
Programowanie w języku "batch"- tutorial
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Sob 12:59, 03 Mar 2012    Temat postu: Programowanie w języku "batch"- tutorial

Oto poradnik mojego autorstwa odnośnie programowania w batch'u, przeniesiony ze spore forum:

Do tworzenia plików w języku BATCH wystarczy umiejętność posługiwania się Notatnikiem.
Nazwę programu należy zapisywać z końcówką ".bat" by komputer zrozumiał że użyto języka BATCH.
BATCH nie rozumie polskich znaków językowych takich jak "ą", "ę", "ł" itp. Chyba że korzystacie z odpowiedniego kodowania znaków tekstowych.
BATCH nie rozumie niektórych znaków specjalnych takich jak "|" itp. Ale można ich użyć wstawiając przed nimi znaczek "^" np. "^|"

Prosty kod:

@echo off
echo Siema!
pause

"@echo off" - zawsze należy umieszczać na początku skryptu.
"echo Siema!" - "echo" należy wpisać jeżeli chcemy by dana informacja została wyświetlona, w tym przypadku informacją jest "Siema!". Jeżeli chcemy pozostawić pustą linijkę należy po "echo" postawić "." np.

@echo off
echo.
pause

"pause" - czeka aż ktoś naciśnie dowolny klawisz by program mógł przejść do następnej części.

Zakładki:

@echo off
:menu
echo Siemka! Nie przeszkadzam?
echo 1) Nie skadze znowu.
echo 2) Niestety tak, musze zrobic cos waznego.
set /p letter=
if %letter% == 1 goto opcja1
if %letter% == 2 goto opcja2

:opcja1
echo Bardzo sie ciesze!
pause
goto menu

:opcja2
echo Trudno, pogadamy pozniej.
pause
goto menu

":menu", ":opcja1", ":opcja2" - są to etykiety, tworzymy je za pomocą ":".
"set /p letter=" pozwala użytkownikowi wpisać wartość informacji "letter" i zapisać ją enterem.
"if %letter% == X goto Y" - dzięki tej funkcji program sprawdza czy informacja "letter" wynosi X, a jeżeli tak to przenosi nas do etykiety Y. Zamiast X i Y można wpisać dowolną wartość np. "if %letter% == 1 goto opcja1"
"%letter%" - użycie wartości podanej w "set /p letter". Zamiast "letter" można wstawić dowlony wyrazć ale musi być on identyczny w obu funkcjach, np. jeżeli użyjemy wyrazu "muza" w "set /p muza=" to w "if %muza%" też musimy go użyć.
"goto Z" - program przenosi nas do etykiety "Z", za "Z" można wstawić dowolną wartość np. "goto menu"

Czyszczenie ekranu

@echo off
:menu
cls
echo Siema!
pause
cls
echo Jestem Mietek.
pause
goto menu

"cls" - to wyrażenie mówi programowi że ma on wyczyścić ekran

Kolor

@echo off
:menu
echo Jaki chcesz kolor?
echo 1) Czarny ekran i biale litery
echo 2) Czerwony ekran i czarne litery
echo 3) Niebieski ekran i zolte litery
set /p letter=
if %letter% == 1 color 07
if %letter% == 2 color b0
if %letter% == 3 color 1e

"color XY" - funkcja zmieniająca kolor programu wedle użytego parametru, X oznacza kolor tła a Y kolor czcionki.
Parametry kolorów:

0 - czarny
1 - niebieski
2 - zielony
3 - błękitny
4 - czerwony
5 - purpurowy
6 - żółty
7 - biały
8 - szary
9 - jasnoniebieski
A - jasnozielony
B - jasnoczerwony
D - jasnopurpurowy
C - Jasnoczerwony
E - jasnożółty
F - jaskrawobiały

Otwieranie innych programów

@echo off
start ewolucja.exe

"start ewolucja.exe- funkcja ta pozawala na uruchomienie programu "ewolucja" z końcówką .exe. Aby funkcja poprawnie działała zaleca się umieszczenie programu w tym samym folderze co program który ma zostać uruchomiony lub w folderze w którym jest skrót do danego programu. Funkcja ta czyta jedynie pierwszy wyraz nazwy, więc plik który chcemy uruchomić powinien mieć jeden wyraz w nazwie.

Zakończenie programu:
- normalnie

@echo off
echo Siema!
pause
exit

- po naciśnięciu klawisza

@echo off
:menu
cls
echo Siema! Co robisz?
echo 1) Ponow pytanie.
echo 2) Opusc program.
set /p letter =
if %letter% == 1 goto menu
if %letter% == 2 exit

"exit" - funkcja ta zamyka program

Animacja:

@echo off
:menu
cls
echo -o o-
ping localhost -n 2 >nul
cls
echo -o o-
ping localhost -n 2 >nul
cls
echo -o o-
ping localhost -n 2 >nul
cls
echo -oo-
ping localhost -n 2 >nul
cls
color ce
echo \\\\////
echo BUM!
ping localhost -n 3 >nul
cls
echo KONIEC
ping localhost -n 3 >nul
goto menu

"ping localhost -n X >nul" - ta funkcja mówi po jakim czasie ma wyświetlić się kolejna część zamieszczona w kolejnych linijkach funkcji "echo". "X" to ilość sekund po jakim ma się wyświetlić kolejna część.

Zastosowanie imienia:

@echo off

:Menu
cls
echo Jak sie nazywasz?
set /p type=
echo Jaka masz plec?
echo 1) Kobieta.
echo 2) Mezczyzna.
set /p plec=
if %plec% == 1 goto Kob
if %plec% == 2 goto Men

:Kob
echo A wiec jestes kobieta, a twoje imie to %type%
pause
goto menu

:Men
echo A wiec jestes mezczyzna, a twoje imie to %type%
pause
goto menu

"set /p type=" Jak już wiecie ta funkcja pozwala na wpisanie dowolnej wartości (w naszym przypadku imienia) z czego najważniejszy w naszym skrypcie będzie "type"

"%type%" - Użycie wartości podanej w funkcji "set /p type=" (zamiast "type" może być inny wyraz, ale musi być on identyczny w obu funkcjach)

Czyli tak w skrócie: Gdy w "set /p type=" zostanie podana jakaś wartość to w "%type%" ta wartość zostanie wyświetlona.

Zmienianie wielkości ekranu:

@echo off
:menu
echo Przed zmiana wielkosci ekranu.
pause
mode 1000
echo Po zmianie rozdzielczosci ekranu.
pause
goto menu

"mode X" - funkcja ta pozwala na zmianę wielkości ekranu, zamiast "X" należy wstawić dowolną liczbę.

Odblokowanie:

@echo off
set letter=nie
:gra
cls
echo Siemka. Co robisz?
echo 1) Gram w poziom 1
echo 2) Gram w poziom 2
set /p lol=
if %lol% == 1 goto lvl1
if %lol% == 2 goto sprawdzenie

:lvl1
set letter=tak
echo Odblokowales poziom 2! Gratulacje!
pause
goto gra

:sprawdzenie
if %letter% == tak goto lvl2
if %letter% == nie goto zle

:lvl2
echo Przeszedles gre!
pause
goto gra

:zle
echo Niestety, nie odblokowales poziomu 2. Przejdz najpierw poziom 1!
pause
goto gra

"set" - służy do zmieniania wartości zmiennych przez komputer

1. operatory

jest to rzecz niemal podstawowa przy grach rpg lub hazardowych. Operatorów używa się poprzez komendę set /a (wcześniej poznaliście tylko set i set /p). używa się tego tak: set /a zmienna=zmienna+liczba

pierwsza zmienna oznacza zmienną, która ma być wynikiem działania. druga zmienna oznacza pierwszą część działania. operator "+" oznacza, że jest to działanie dodające, zaś liczba oznacza liczbę do dodania. wie, to dość skomplikowane, dlatego daję poniżej przykład:

@echo off
set zycia=10
set zycia2=5
echo zaatakowal cie potwor. liczba twoich zyc: %zycia%
echo zycia potwora: %zycia2%
echo 1) uderzasz
echo 2) wykonujesz unik
set /p wybor=
if %wybor% == 1 goto x
if %wybor% == 2 goto y

Mad
set /a zycia2=zycia2-4
echo uderzasz. zadane obrazenia: 3
echo liczba pozostalych zyc potwora: %zycia2%
pause
exit

:y
set /a zycia=zycia-1
echo zaslaniasz sie. potwor wyprowadza uderzenie.
echo zadane obrazenia: 1
echo liczba pozostalych zyc: %zycia%
pause
exit

na początku to może się wydawać trudne, ale jeżeli trochę z tym poćwiczycie to prawdopodobnie wszystko zrozumiecie.



2. liczby losowe

liczby losowe tworzy się za pomocą funkcji "random". powinno to wyglądać tak:

%random:~-liczba,liczba%

oczywiście "liczba" oznacza konkretną liczbę, np. 0,1 daje wartość z zakresu 1-9. Teraz trochę praktyki:



a) używanie liczb losowych w funkcji "echo":

@echo off
:menu
echo %random:~-0,1%
pause
goto menu



b) używanie liczb losowych w funkcji "set"

@echo off

:menu

set liczba=%random:~-0,1%

echo %liczba%

pause

goto menu


Ostatnio zmieniony przez maciuchna dnia Sob 13:03, 03 Mar 2012, w całości zmieniany 4 razy
Powrót do góry
Zobacz profil autora
Autor Wiadomość
polek
forumowicz



Dołączył: 21 Sty 2012
Posty: 86
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Polska

PostWysłany: Sob 19:10, 03 Mar 2012    Temat postu:

bardzo dobry poradnik napisz jeszcze :

kodowanie - zestaw znaków środkowoeuropejskich "OEM 852"
najłatwiej to znaleźć w programie notepad++ -- Format>zestaw znaków>Środkoeuropejskie>OEM 852

pause - zawsze musi być gdy program nie ma żadnego zakączenia lub kontynuacji inaczej nie włączy się(jeśli jest kontynuacja tylko menu kontynuacji nie działa).

Losowość - napisz to co mi wytłumaczyłeś
Napisz funkcje if exsist i if not exist
Rozpisz funkcje mode


Ogólnie poradnik bdb.
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Nie 15:45, 04 Mar 2012    Temat postu:

cóż, tutorial jest już skończony i nie będę dopisywał do niego niczego nowego. Poza tym, ze swojego doświadczenia wiem że jeżeli za dużo się ludzie nauczą z zakresu programowania, nawet z tutoriala mojego autorstwa, to wkrótce zaczynają udawać, że są lepsi w programowaniu, tworzyć konkurencyjne gry, mówić że nie umiem programować a oni umieją itp.

Tak więc podałem dwa dobre powody, dlaczego nie zwiększyć ilości komend opisanych w tutorialu Razz

Dociekliwy zawsze wszystko znajdzie sam (przypominam że gdy ja uczyłem się programowania w batch'u nie było w nim tak dobrego i dużego poradnika jak ten, który tutaj zaprezentowałem, sam musiałem się wszystkiego uczyć).


Ostatnio zmieniony przez maciuchna dnia Nie 15:46, 04 Mar 2012, w całości zmieniany 2 razy
Powrót do góry
Zobacz profil autora
Autor Wiadomość
Darkloid
bywalec forum



Dołączył: 19 Wrz 2011
Posty: 197
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Pon 18:14, 05 Mar 2012    Temat postu:

Tacy ludzie to po prostu dzieci. Nie ważne ile mają lat: są dziećmi. Dziecko charakteryzują pewne zachowania. Trudno, Ci co chcą się dalej uczyć języka batch: jest strona: [link widoczny dla zalogowanych]
Powrót do góry
Zobacz profil autora
Autor Wiadomość
polek
forumowicz



Dołączył: 21 Sty 2012
Posty: 86
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Polska

PostWysłany: Wto 21:44, 06 Mar 2012    Temat postu:

eeeeeee tam ja bym wtedy zaserwował najbardziej skomplikowane linijki gry to by się zes$%#li i przestali by gadać że są lepsi
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Sob 16:14, 10 Mar 2012    Temat postu:

no nie wiem no nie wiem... Razz

Jak ktoś by się uwziął to w końcu by to rozszyfrował, a wtedy biada nam Razz
Powrót do góry
Zobacz profil autora
Autor Wiadomość
polek
forumowicz



Dołączył: 21 Sty 2012
Posty: 86
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Polska

PostWysłany: Sob 21:08, 10 Mar 2012    Temat postu:

no nie wiem czy dziecko neo ma wystarczająco dużo iq żeby rozszyfrować zaawansowany kod
Powrót do góry
Zobacz profil autora
Autor Wiadomość
Darkloid
bywalec forum



Dołączył: 19 Wrz 2011
Posty: 197
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Nie 11:40, 18 Mar 2012    Temat postu:

Dziecko neo nie potrafiłoby treści poradnika zebrać w kupę (dosłownie) by zrobić grę o Mietku który najpierw decyduje czy iść na piwo czy grać na kopie a na końcu czy wyjść na dwór czy oglądać TV...
Powrót do góry
Zobacz profil autora
Autor Wiadomość
polek
forumowicz



Dołączył: 21 Sty 2012
Posty: 86
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Polska

PostWysłany: Nie 18:43, 18 Mar 2012    Temat postu:

Racja więc zróbmy więcej poradników

Maciuchna a możemy robić inne poradniki ?


p.s.
dodaj do poradnika to o pauze i o tej losowości
Powrót do góry
Zobacz profil autora
Autor Wiadomość
Darkloid
bywalec forum



Dołączył: 19 Wrz 2011
Posty: 197
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Nie 20:32, 18 Mar 2012    Temat postu:

Yea, jak dobrze pójdzie to dowiem się więcej o Batchu bez przeszukiwaniu bezkresów internetu.
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Pią 17:30, 23 Mar 2012    Temat postu:

polek napisał:

dodaj do poradnika to o pauze i o tej losowości


powiedziałem już: poradnik został skończony i nie będę go modyfikował!


Ostatnio zmieniony przez maciuchna dnia Pią 17:30, 23 Mar 2012, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Autor Wiadomość
Darkloid
bywalec forum



Dołączył: 19 Wrz 2011
Posty: 197
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Pią 19:53, 23 Mar 2012    Temat postu:

polek, to nam wytłumacz co Maciek ci wytłumaczył Razz
Powrót do góry
Zobacz profil autora
Autor Wiadomość
polek
forumowicz



Dołączył: 21 Sty 2012
Posty: 86
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Polska

PostWysłany: Wto 19:45, 27 Mar 2012    Temat postu:

zrobię osobny TuT ...
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maxoim152
forumowicz



Dołączył: 29 Kwi 2012
Posty: 79
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Śro 14:24, 02 Maj 2012    Temat postu:

Cytat:
@echo off
set zycia=10
set zycia2=5
echo zaatakowal cie potwor. liczba twoich zyc: %zycia%
echo zycia potwora: %zycia2%
echo 1) uderzasz
echo 2) wykonujesz unik
set /p wybor=
if %wybor% == 1 goto x
if %wybor% == 2 goto y

Mad
set /a zycia2=zycia2-4
echo uderzasz. zadane obrazenia: 3
echo liczba pozostalych zyc potwora: %zycia2%
pause
exit

:y
set /a zycia=zycia-1
echo zaslaniasz sie. potwor wyprowadza uderzenie.
echo zadane obrazenia: 1
echo liczba pozostalych zyc: %zycia%
pause
exit


a jak HP będzie 0 lub -1 itd. do co zrobić że się już wygra lub coś takiego??? PLS O ODPOWIEDŹ!!! Shocked QuestionQuestionQuestionQuestionQuestion
Powrót do góry
Zobacz profil autora
Autor Wiadomość
Darkloid
bywalec forum



Dołączył: 19 Wrz 2011
Posty: 197
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Śro 15:29, 02 Maj 2012    Temat postu:

To jest tylko przykład. Nie, jesli wrog ma zero to sie nie wygrywa. Trzeba tresc tutoriala polaczyc, by wpasc jak to zrobic, co nie jest trudne.
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie Wszystkie czasy w strefie EET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
BBTech Template by © 2003-04 MDesign
Regulamin