Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Gość Qn`ik

Programowanie

Polecane posty

CLS
ECHO                      1. Gra 1
ECHO                      2. Gra 2
ECHO                      3. Gra 3
ECHO                      4. Gra 4
ECHO                      Q. Zakończ
CHOICE /C:1234Q /N "Wybierz grę, którą chcesz uruchomić : "
IF ERRORLEVEL 5 GOTO Koniec
IF ERRORLEVEL 4 GOTO Gra4
IF ERRORLEVEL 3 GOTO Gra3
IF ERRORLEVEL 2 GOTO Gra2

ECHO Trwa uruchamianie Gry1...
ścieżka_do_gry1

GOTO Koniec

:Gra4

ECHO Trwa uruchamianie Gry4...
ścieżka_do_gry4

GOTO Koniec

:Gra3

ECHO Trwa uruchamianie Gry3...
ścieżka_do_gry3

GOTO Koniec

:Gra2

ECHO Trwa uruchamianie Gry2...
ścieżka_do_gry2

GOTO Koniec

:Koniec

Czy jakoś tak. Kolejność wywoływania if-ów jest istotna.

Link do komentarza
Udostępnij na innych stronach

Jakiś czas temu w ramach projektu na studiach napisałem programik do konwersji bitmap na jpg. Nic odkrywczego, ale dla mnie wyzwanie, bo konwersję pisałem sam, a nie korzystałem z gotowej, dostępnej biblioteki.

W każdym razie parę słów o programie:

- kod napisany jest w C++, kawałek konwersji jest w osobnej bibliotece zakodowanej w asemblerze (przy czym nie korzystałem z fpu - liczyłem na całkowitych),

- międzymordzie zrobione jest w czystym winapi,

- program potrafi przetwarzać wiele plików jednocześnie, tj. pozwala na stworzenie listy plików do przetwarzania,

- aplikacja jest wielowątkowa - potrafi przetwarzać 4 pliki, każdy w osobnym wątku. Jest to zaszyte na sztywno w kodzie, ale wystarczy przedefiniować PARALLEL_THREADS_COUNT.

- aplikacja napisana została w visual studio 2008. W razie problemów z odpaleniem, potrzebny jest pakiecik Microsoft Visual C++ 2008 Redistributable Package (x86)

- dwa tryby pracy: klasyczny, gdzie user wybiera jakość kompresji; mój własny (bo nigdzie czegoś takiego nie widziałem), gdzie ustala się wielkość pliku wynikowego, a program szuka najlepszej jakości aby zmieścić się w zadanej wielkości pliku.

Ten drugi tryb wykorzystuję przy konwersji zdjęć na potrzeby allegro, spisuje się rewelacyjnie :-)

Program wrzuciłbym wcześniej, ale liczyłem, że znajdę czas na jeg rozbudowanie i pewne poprawki. Niestety czasu brak, ale może komuś się przyda.

W załączniku są skompilowane binarki, kod źródłowy w formie projektu VS 2008 oraz (skąpa) dokumentacja.

Gdyby ktoś był chętny do współpracy nad rozwojem programu, to zapraszam :-) Co planuję (na daleką przyszłość, pewnie wakacje)? Przerobienie interfejsu tak, by w pełni opierał się na plikach zasobów, wywalenie globalnych uchwytów na kontrolki (wiem, głupio to napisałem), dodanie konwersji z jpg na bmp (to pozwoli na przerabianie plików jpg -> jpg), wzbogacenie opcji konwersji - dodanie obsługi downsamplingu, obsługa obrazków o innej palecie kolorów niż 24-bitowa.

Rozważam wywalenie części asemblerowej i zastąpienie jej zwykłym kodem w C++ (który nawiasem mówiąc mam). Na dłuższą metę warto rozważyć wsparcie dla innych formatów plików :-)

W każdym razie zapraszam do testowania, zabawy itd itd :-) Opinie mile widziane.

Aha! Wiem, że program wygląda średnio - brzydko, ale tyle udało mi się wyciągnąć z czystego winapi, a nie miałem więcej czasu, by dokładnie szukać i bawić się w cuda niewidy :-)

bmp2jpg.zip

Link do komentarza
Udostępnij na innych stronach

eee... jakoś nie mam zapędów hakerskich :) ale w następnej wersji można by program dodać do autostartu , ale ustawić na nieskończony czas i ciekawe jak tu się pozbyć tego :) miganie diodek ciekawe ale na razie jednak nie wiem jak ale ostatecznie mogłoby być pikanie

Link do komentarza
Udostępnij na innych stronach

Bez problemu - w awaryjnym, spod konsoli odzyskiwania albo spod innego systemu. A jeśli wrzucisz do autostartu w menu start, to wystarczy shift przytrzymać by się nie włączyło.

Keyloggery to przykład. Kolega pisał aplikację przechowującą hasła do stron i jednocześnie zabezpieczającą przed keyloggerami. Aplikacja pracuje sobie w tle, kiedy wywołasz ją jakimś klawiszem, wpisujesz jakieś hasło, program w tym momencie wyświetla Ci listę zgromadzonych haseł (oczywiście nie wyświetla ich żywcem, tylko wypisuje informacje do czego hasła posiada). Ty wybierasz, a program w odpowiednie pole sam wstawia właściwe hasło.

W ten sposób nawet jeśli keylogger zapisze sobie, co użytkownik wpisał, to nic mu to nie da, bo nie będzie to hasło właściwe dla danej strony czy programu.

A o diodkach masz np. tu http://www.benibela.de/jokeprograms_en.html

Z tego co widzę, używasz kompilatora dev. Czy to, co udostępniłeś (tzn. binarka) jest skompilowana w trybie release? Sądząc po wielkości powiedziałbym, że debug (czyli niezbyt nadająca się do udostępniania).

Link do komentarza
Udostępnij na innych stronach

@Elar

Ściągnąłem sobie, skompilowałem i uruchomiłem Twój program. Dzięki Tobie miałem minutę, żeby poznać nową funkcję :P Tak swoją drogą, to możesz usunąć te komunikaty z konsoli, bo one i tak się nie wyświetlają. A przynajmniej u mnie ;)

@wies.niak

Taka mała prośba - mógłbyś w dokumentacji pisać "wies.niak" bo bez tej kropki wygląda to trochę niepoważnie. Kod co prawda obejrzałem, ale powiedział mi mniej więcej tyle, że przede mną jeszcze dużo nauki :]

Sam program - fajny, ciekawa jest ta opcja z wybieraniem rozmiaru konwersji - to się czasem przydaje. Konwersja szybka, a interfejs jasny więc wygodnie się tego używa. Jednak mam dwie uwagi - po pierwsze nie za bardzo wiadomo jakie to procenty wybiera się w opcji "Określona jakość". Szczerze mówiąc to nie wiem, czy większa liczba poprawi jakość czy zmniejszy rozmiar - przydałoby się jakieś małe wyjaśnienie. Po drugie - zmień ikonę programu, bo ciągle mam wrażenie, że jakiś error mi wyskoczył ;)

Parę innych spraw sam wymieniłeś - czyli głównie konwersję jpg->jpg. I tak chylę czoła, bo i kod i algorytm wyglądają na skomplikowane :)

PS. Przy okazji zadziwia mnie potęga WinRara - folder z Twoim programem zajmuje 11MB, a archiwum .rar niecałe 0,5 MB

Link do komentarza
Udostępnij na innych stronach

Taka mała prośba - mógłbyś w dokumentacji pisać "wies.niak" bo bez tej kropki wygląda to trochę niepoważnie.

Wiesz, wiesniak to moja oryginalna ksywka :D Kropka występuje tylko tu na FA (mniejsza o przyczyny).

Kod co prawda obejrzałem, ale powiedział mi mniej więcej tyle, że przede mną jeszcze dużo nauki :]

Pomijając algorytm, do którego zrozumienia wypada trochę poczytać o kompresji jpeg, to tak na prawdę nie ma w kodzie nic wyszukanego. Jedynie winapi wymaga trochę czasu na zrozumenie. Tu bolączką internetu jest brak konkretniejszych tutoriali - często omawiane są fragmenty kodu, ale nie wiadomo tak właściwie, gdzie ten kod wstawić. Sam zgryzłem na tym zęby, szczególnie jeśli chodzi o drzewo katalogów.

Poza tym zawsze możesz spytać o coś, a ja postaram się wyjaśnić co i jak.

nie za bardzo wiadomo jakie to procenty wybiera się w opcji "Określona jakość". Szczerze mówiąc to nie wiem, czy większa liczba poprawi jakość czy zmniejszy rozmiar

Dokumentacja, strona 6 :-) Ale fakt, jest to troszkę niejasno oznaczone. Chodzi o jakość obrazka, czyli 100% najlepsza, 1% najgorsza. Tu polecam lekturę podstaw kompresji jpg, bo tak naprawdę 85% jest wartością dość optymalną - ubytek na skutek kompresji jest minimalny, a wielkość pliku wynikowego zdecydowanie mniejsza w porównaniu do bitmapy.

Na ikonkę nie miałem pomysłu, wziąłem pierwszą z brzegu, więc to kolejna rzecz do listy zmian :-)

Jak usuniesz pliki stworzone przez kompilator to zejdziesz do ~1,1 MB. Poza tym uha jest lepsze od winrara :-)

Link do komentarza
Udostępnij na innych stronach

Mam wrażenie, że program skompilowałeś jednak w trybie "release". Choć, żeby być dokładnym, w Devie nie ma takich nazw, tylko wybierasz jak bardzo ma optymalizować kod i czy generować informacje dla debuggera. Jeśli włączysz tę ostatnią opcję, podany kod kompiluje się do 1,23 MB. Z wyłączoną, program ma w rezultacie około 400 kB, czyli tyle ile miał ten wrzucony przez Elara.

@wies.niak

Akurat tutorial WinApi jest całkiem długi w rozdziale 3.1 "Od zera do gier kodera" :) Zamierzam się do niego zabrać, ale chwilowo moja informatyczka każe mi robić zadania z olimpiady informatycznej (żeby być dokładnym, to zadania na nią wzorowane, ale wychodzi na to samo) i raczej piszę na nią programy. Co nie zmienia faktu, że kompletnie mi się nie chce, bo te zadania są jakieś takie bez sensu i bez jaj, ech...

A co do tych procentów - w sumie masz rację, co nie zmienia faktu, że na przykład w IrfanView 100% oznacza beznadziejną jakość i maleńki rozmiar, a jako że ja głównie z tego programu do tej pory korzystałem, to miałem z tym małą zagwozdkę. A nie można wymagać od każdego czytania tej dokumentacji, sam chyba przyznasz :]

Link do komentarza
Udostępnij na innych stronach

A gdzie to jest bo nigdzie w opcjach nie znalazłem co do olimpiady to też brałem udział ale tak nigdzie nie trzeba było raczej pisać programów. "od zera do gierkodera" to najlepsza książka moim zdaniem i w dodatku z free z niej się zacząłęm uczyć programowania. A i twoja informatyczka to zna się trochę na programowaniu ? bo ja mam taką która sprawia wrażenie jakby na przerwie czytała tutorial do exela a później szpanowała tą wiedzą na lekcji...

Czy też piszesz w devie ? mógłbyś się podzielić jakimiś programami :)

Link do komentarza
Udostępnij na innych stronach

alton -> Nigdy deva nie używałem. Raz czy dwa odpaliłem, ale mając świetne VS dałem sobie spokój. 400KB w release - OMG! Dla porównania, visual studio 2008 - 9,5KB :-)

WinAPI@gamedev - dzięki za zwrócenie uwagi (przy czym nie należy to do megatutorialu, o którym wspominasz). Teraz sobie przejrzałem i całkiem ciekawe rzeczy tam są. Ale jednego nie ma - opisu konkretnych kontrolek. I tu jest kanał, bo o ile label czy button są proste, to bardziej zaawansowane rzeczy typu właśnie drzewo, to jest koszmar. A bez kontrolek nie ma okna w zasadzie.

Poza tym z tego co widziałem, jest tam przykład zrobienia okna w całości od zera. Ja właśnie tak robiłem, a chcę to zmienić i przejść na wykorzystanie zasobów - jest to w gruncie rzeczy ułatwienie, bo wykorzystuje się graficznego designera, a w kodzie korzysta tylko z nadanych numerów kontrolek.

Irfana kiedyś miałem, ale nie przekonał mnie do siebie interfejsem. Najwidoczniej tam reguluje się nie jakość obrazu a siłę kompresji :-) Oczywiście masz rację pisząc, że znajomość dokumentacji nie powinna być potrzebna - jak wcześniej pisałem jest to kolejny element do poprawy :-)

Link do komentarza
Udostępnij na innych stronach

Właśnie przemęczam ten fragment o WinAPI i dochodzę do wniosku, że jednak Delphi/C++ Builder/VC++ mają wygodniejsze narzędzia do tworzenia okienek. Choć właściwie dobrze wiedzieć, jak to się właściwie robi od zera :) A tak przy okazji to przecież ten fragment o WinAPI należy do wspomnianego tutoriala: http://www.gamedev.pl/tutorials.php?x=category&id=18

@Elar

Na komputerze mam zarówno Deva jak i Visual Studio. Dev jest w sumie wygodny, szczególnie, że jeśli chce się napisać krótki program, zawierający tylko jeden plik kodu. W Visual Studio trzeba się przebijać przez ten kreator, stworzyć cały folder dla solution (solucji? rozwiązania?) a w środku dla konkretnego programu. Niestety, wygrywa za to uzupełnianiem kodu i pewną ilością innych podobnych ułatwień, jak na przykład pokazywaniu definicji makra po wskazaniu na jego użycie. I to powoduje, że praktycznie ciągle z niego korzystam. Choć i tak nie przebija to świetnego edytora Borland Developer Studio 2006. Takie smaczki jak synchronizacja zmian (tzn. w zaznaczonym fragmencie zmienia wszystkie wystąpienia jakiegoś wyrazu na inny. Świetne jeśli część kodu powstaje metodą kopiuj-wklej) czy sprawdzanie składni na bieżąco (podkreśla błędy tak jak Word) wymiatają, ale (nie)stety to jest środowisko dla Delphi, nie C++. W devie za to programuję do szkoły, bo nauczycielka tak każe. A jeśli o niej mowa, to jest to straszliwa istota, która uwielbia wspomnianą właśnie olimpiadę i robienie takich zadań jakie na niej są, a kompletnie nie rozumie, że mnie bardziej ciągnie robienie programów użytkowych, w rodzaju tego menu do covera CDA które zamieściłem wcześniej.

Programami nie mam za bardzo co szpanować, bo tak naprawdę to nic szczególnego nie napisałem. W C++ to tylko konsolowe kółko i krzyżyk. W zasadzie jedyne co w nim ciekawego to to, że można sobie ustawić planszę nawet 20*20 :) Jak chce ktoś obejrzeć to stąd można ściągnąć: http://ifile.it/n1sb62h

Oprócz tego są jeszcze dwa programy w Delphi. Jeden to instalator modów do NWN1 - wybierasz w nim folder gdzie są pliki modułu, a on kopiuje je do odpowiednich folderów w folderze z grą. Banalne, ale może komuś się przyda: http://ifile.it/qd6be1/nwnmodinstaller.exe

No i troszkę dziwny program do zmiany tapet. Można sobie np. ustalić żeby zmieniał ją przy każdym włączeniu kompa ^^. Link tutaj: http://ifile.it/ahjogt2/zmieniacz_tapet.rar

Oczywiście zrobiłem dużo innych programów, ale raczej niewartych wzmianki ;)

Link do komentarza
Udostępnij na innych stronach

Delphi/C++ Builder/VC++ mają wygodniejsze narzędzia do tworzenia okienek.

Zwróć uwagę, że np. C++ Builder to już wyższy poziom niż winapi - korzystasz z gotowych form i kontrolek. Kiedyś chyba nawet próbowałem, a jakiś czas temu widziałem kolegów dłubiących program w tym, ale częstotliwość wywalania się środowiska mnie zniechęciła (rozumiem, że coś źle napisałem, ale żeby to rozwalało całe IDE? kpina IMO). Tak jak wspominałem, przy pisaniu okien z użyciem winapi, można posłużyć się plikami zasobów, ale jest też MFC - biblioteka oparta na winapi, ułatwiająca pewne rzeczy. Poza tym można przerzucić się na zarządzalny C++ i skorzystać z CLR (czyli formy jak w C#, ale pod C++).

A tak przy okazji to przecież ten fragment o WinAPI należy do wspomnianego tutoriala

Jakoś link skojarzył mi się z plikiem do podstaw C++, a nie przejściem do tutoriali :-)

Dev jest w sumie wygodny, szczególnie, że jeśli chce się napisać krótki program, zawierający tylko jeden plik kodu.

Dev ma tę wadę, że czasem przepuszcza coś, czego nie powinien w czasie kompilacji. Kod z VS można odpalić pod każdym kompilatorem, czego nie można powiedzieć o kodzie z deva :-)

W Visual Studio trzeba się przebijać przez ten kreator, stworzyć cały folder dla solution (solucji? rozwiązania?) a w środku dla konkretnego programu.

Demonizujesz :-) Poza tym podpinanie wielu projektów pod jeden solution jest wygodne - przykładem niech będzie ten mój program, gdzie masz projekt w C++, drugi w asemblerze, a jeszcze był trzeci z instalatorem :-)

Takie smaczki jak synchronizacja zmian (tzn. w zaznaczonym fragmencie zmienia wszystkie wystąpienia jakiegoś wyrazu na inny.

Refactoring. VS to obsługuje dla C#. Dla C++ http://msdn.microsoft.com/en-us/visualc/bb737896.aspx - jest napisane 2005, ale pod 2008 chyba też działa (zaraz zresztą pobiorę na próbę).

Świetne jeśli część kodu powstaje metodą kopiuj-wklej) czy sprawdzanie składni na bieżąco (podkreśla błędy tak jak Word) wymiatają, ale (nie)stety to jest środowisko dla Delphi, nie C++.

Tak samo jak wyżej - dla C# jest.

Rzuciłem okiem na zadanie z olimpiady - ale dzikie. Nie dziwię Ci się.

W C++ to tylko konsolowe kółko i krzyżyk. W zasadzie jedyne co w nim ciekawego to to, że można sobie ustawić planszę nawet 20*20 :)

Heh, mam dokładnie to samo, tylko w pascalu:D

Btw: https://connect.microsoft.com/VisualStudio/...?ContentID=9790 :D

Link do komentarza
Udostępnij na innych stronach

W takim razie ja jestem dziwny, bo właśnie tego typu zadania uważałem zawsze za najciekawsze. Związałbym się z programowaniem, gdyby to tak właśnie wyłącznie wyglądało - a nie jakieś interfejsy użytkownika (obrzydliwość) czy wygoda użytkowania... Dobry program ma być szybki i bezużyteczny, a jego napisanie ma wymagać wysiłku intelektualnego i sporej znajomości matmy ;).

Link do komentarza
Udostępnij na innych stronach

Raczej nie ma. Z drugiej jednak strony tak naprawdę niewiele raczej trzeba rozumieć - gorzej tylko z komunikatami o błędach, bo czasem są dość pokręcone.

Jeśli chcesz po polsku, to masz chyba tylko Dev C++. Praktycznie rzecz biorąc, można się na nim uczyć tego co jest w tutorialu z Warsztatu - jedynie nie ma kreatora na początku. I nie za bardzo da się używać zmiennych wstring - mi się przynajmniej nie udało*

*Choć z drugiej strony absolutnie nie trzeba ich używać :)

Link do komentarza
Udostępnij na innych stronach

Gość
Temat jest zablokowany i nie można w nim pisać.


  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.

×
×
  • Utwórz nowe...