kilroy Temat założony przez niniejszego użytkownika |
» 2013-01-03 19:10:58 System mam 64-bitowy.
Gdy set_color_depth ustawiłem na 32. Pojawiły się problemy:
- ludek, który pojawia się na ekranie, niestety ma widoczne tło (różowe) - znów nie mogłem poruszać ludkiem (to znaczy mogłem, ale tylko raz. Potem nastąpiło minimalne rozjaśnienie obrazu i już ludek się nie poruszał - tak miałem już przy poprzedniej lekcji - bez podwójnego buforowania, gdy nie czyściłem ekranu)
Natomiast timera zainstalowałem tylko dlatego, że w kursie rozpocząłem już kolejną lekcją. Bez tajmera, czy z nim w programie pojawiają się takie same błędy (przy okazji ludek może poruszać się trochę wolniej)
Jeszcze panowie - czym jest ten tajemniczy moment rozjaśnienia obrazu w tym programie?
Występuje za każdym razem. W najlepiej działającej u mnie wersji, czyli w tej gdzie pozostaje ślad z początkowego ustawienia. Sprawa wygląda tak: Start programu -> ruszam ludkiem, ale wspomniany ślad pozostaje -> następuje rozjaśnienie obrazu -> ślady znikają, ale ta pozycja, w której w tej chwili był ludek, staje się początkową i tam od tej chwili zostają ślady.
Przypomnę, że kiedy czyszczę ekran to ślad znika, ale znowu pojawia się miganie. I czy ktoś ma pomysł dlaczego w programie jeśli wrzucam własne tło, to mogę ruszać ludkiem bez czyszczenia ekranu, a bez dodatkowego wczytywania tła nie mogę ludkiem ruszać. |
|
unimator |
» 2013-01-05 10:44:31 Prawdopodobnie możesz ruszać ludkiem tak czy inaczej tylko z wyświetlaniem są jakieś problemy. Innymi słowy, logika działa jak trzeba ale to z wyświetleniem jest problem. Żeby się upewnić możesz np. przebudować aplikację do konsolowej i w konsoli wyświetlać zmienna ludek_x/ludek_y co obieg pętli.
(...) ludek = load_bmp( "D:\\Programy\\Programowanie\\CodeBlocks/Moje\\Dodatki/Obrazki/ludek.bmp", default_palette ); (...)
|
Pierwszy raz widzę taką praktykę, że ktoś stosuje zarówno backslashe jak i slashe we wprowadzaniu ścieżki. Nie jest to zapewne przyczyną błędów ale dla czystej przejrzystości kodu i jego jasności wypadałoby używać tylko jednej wersji. We właściwościach zbudowanego pliku .exe w zakładce zgodność zaznacz "Uruchom ten program w trybie zgodności z: " i z listy wybierz np. WinXP. Mamy również rozumieć, że kody z poprzednich lekcji np. 4 (rysowanie prymitywów) działają poprawnie? |
|
kilroy Temat założony przez niniejszego użytkownika |
» 2013-01-05 11:39:04 unimator: "Żeby się upewnić możesz np. przebudować aplikację do konsolowej i w konsoli wyświetlać zmienna ludek_x/ludek_y co obieg pętli." a nie odpowiada za to linia: masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h ); ? Mieszanka backslashy i slashy przy ładowaniu obrazka w moim programie, to tak aby łatwiej mi było zapamiętać, że można je stosować zamiennie. Ale ok, zmienię to, bo rzeczywiście nieładnie to wygląda. Zmiana zgodności nie pomaga. Nie ma żadnych zmian. Prymitywy działają poprawnie. Problemy pojawiły się właśnie przy poruszaniu obrazka. Odkąd do pętli dorzuciłem:
masked_blit( ludek, screen, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
Ludek mi się nie porusza (ruszył się tylko raz - podczas wspominanego rozjaśnienia), a powinien według autora lekcji. czyszczenie ekranu miało tylko pomagać w tym, aby ludek się nie rozmazywał. |
|
unimator |
» 2013-01-05 12:47:34 masked_blit(...) odpowiada za wyświetlanie obrazka. A nam chodzi o wyświetlenie wartości jakie przyjmują zmienne ludek_x/ludek_y. I najlepiej do sprawdzenia tego nadaje się właśnie konsola :P. Innymi słowy, możliwe, że jak wciskasz przycisk odpowiedzialny za przesuwanie to ludek się przesuwa, tylko się nie wyświetla jak trzeba.
Wpadłem na pomysł, żebyś sprawdził może jeszcze czy np. z biblioteką SDL będziesz miał takie problemy. Obie biblioteki są dosyć podobne więc ewentualne przerzucenie się na SDL nie powinno Ci raczej sprawić kłopotu. |
|
pekfos |
» 2013-01-05 15:26:20 Masz komputer 16 bitowy? O.o |
16 bitowa głębia nie oznacza, że komputer jest 16 bitowy. |
|
kilroy Temat założony przez niniejszego użytkownika |
» 2013-01-05 20:49:34 unimator: " przerzuć się na SDL"
Chyba tak zrobię. Wybrałem Allegro bo pierwsze było na liście:) Mogłem spróbować też w nowszej wersji Allegro, ale kurs był dla "4". Gdzieś wyczytałem, że różnice są spore i obawiałem się, że nawet z prymitywami miałbym problemy.
Szkoda, że problem nie został rozwikłany, wrócę tu, gdy dojdę do tego w SDL-u |
|
1 « 2 » |