Skocz do zawartości

MZG

Użytkownicy
  • Postów

    65
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez MZG

  1. Nie wiem jak miałoby to działać. Tu właśnie chodzi że floaty nawalają. Kiedy do floata dodaje 0.001 ciągle to wychodzi coś takiego(nie idealnie tak samo, ale na tej zasadzie): 0.00100000000000000001 0.00200000000000000002 0.00300000000000000004 . . . 0.45600000000000000757 0.45699999999999999987 Bardzo dziwny błąd. Tak jakby komputer "niedokładnie dolewał" co już wspomniałem. A czy wszelako różnych konwersjach sprawa się pogarsza. W dodatku napisałem prosty kod if(static_cast<int>(i/0.001) != 0) //obliczanie reszty dzielenia z floata continue; //jezeli reszta nie jest rowna zero to wroc do poczatku petli Jedyne co zobaczyłem to ekran konsoli z jednym zerem. [EDIT] Meh, znalazłem powód tego stanu rzeczy. Te liczby napisanie binarnie są nieskończone, więc komputer nie może ich "skończyć" dziesiętnie. Wychodzi na to że jedynym ratunkiem jest zaokrąglanie. Ale dziwne jest to że w javie tego nie ma. Przecież tam też się oblicza binarnie...
  2. Ja za to za javą zbytnio nie przepadam ;P. Ale uniwersalne zdolności programistyczne i to że jednak na wszelki wypadek mam kompilator również do javy to pozwoliłem sobie to sprawdzić i racja, w javie nie ma tego błędu. Nawet skopiowałem skrypt żeby było 30 liczb po przecinku i tak wszystko dokładnie obliczone. W takim razie czemu w C++ się to rypie? :mellow:
  3. O coś takiego Ci chodzi?: int a = 1000; int b = 1; for(;;){ cout << (static_cast<float>(b) / static_cast<float>(a)); --a; cout << endl; } Spróbowałem i wychodzą dużo gorsze błędy i większe różnice od prawdziwej wartości która powinna być. :/
  4. Witam. Ostatnio czytałem co nieco o typach z ułamkowych i postanowiłem sam sprawdzić kilka kwestii. Słabą dokładność przy dużych liczbach mogę wybaczyć, ale bardzo nietypowego błędu zwykłego dodawania już nie. O co mi chodzi? O to kod obrazujący to doskonale: #include <iostream> #include <iomanip> using namespace std; int main() { double a = 0; //moze byc zarowno float czy long double, efekt jest ten sam cout << a; cout << setprecision(32); //ustalanie precyzji ulamka dziesietnego for(;;) { a += 0.001; cout << a; cout << endl; } } Ten kod powinien dodawać nieskończenie 0.001 zaczynając od zera. I to robi, jednak dzięki funkcji "setprecision" można spojrzeć ukradkiem na część która jest zwykle ukryta. Mianowicie w po tej dodawanej części tysięcznej następuje ciąg zer, i na końcu też pojawiają się cyfry. Ale w kodzie nie dodawane są takie małe ułamki! Porównać to można do tego, że komputer niedokładnie dolewa wody do dzbanka zmiennej "a" że są te "nierówności". Co więcej, po wcale nie długim czasie ten błąd pomiarowy wpływa na wynik. Zamiast "1" dodaje jakimś cudem "0.9999..." i już jest strata jednej wartości. To może być wąż boa wychodowany na gardle jeśli próbujemy wewnętrznie liczyć czas w grze takim typem(bo potrzebowałby dokładności). Dziwi mnie taka kolej rzeczy, przecież komputery(a dokładnie procesory0 powinny być idealnie dokładne. Czym może być spowodowany ten błąd? Może to przez funkcję set precision(w co bardzo wątpie)? Wiem że nie jest to może jakiś critical error który przeszkadza w kompilowaniu programuale trochę mnie to irytuje że do takich zmiennych szczycących się wysoką dokładnością obliczeń po przecinku może wbić się taki błąd... I jestem ciekawy jaki jest tego powód :twisted:
  5. MZG

    Allegro - warstwy rysowania

    Problem rozwiązany :D. Ale nie, nie chodziło o przestawienie (próbowałem wcześniej), tylko o to że napis raz rzutowany na ekran nie był odświeżany. Czyli nie przechodził przez bufora, więc gdyby się ruszał zostawiał by ślady. Teraz jest wszystko dobrze :D Dzięki za to że chciało wam się w ogóle odpisywać, temat do zamknięcia.
  6. MZG

    Allegro - warstwy rysowania

    int draw_ball() { draw_sprite(bufor, kulka, b_x, b_y); blit( bufor1, screen, 0, 0, 0, 0, 1180, 720 ); } Tym kodem rysuje kulkę. int draw_text() { textout_ex(bufor, font, "jakiśtam tekst", 400, 10,makecol(0, 0, 0), -1); } Tym tekst. while (!key[KEY_ESC]) { (...fps...) while(fps_licz > 0) { int fps_stary_licz = fps_licz; hero.move_ball(); hero.speed_ball(); fps_licz--; if(fps_stary_licz <= fps_licz) break; } (...inne fps...) system.draw_text(); hero.draw_ball(); hero.debug(); clear_to_color(bufor, makecol(255,255,255)); textprintf_ex(bufor, font, 10, 10, makecol(0, 0,0),-1, "FPS:%d", fps_fps); } A to pętla gry. Tyle z kodem, jakoś sam nie wiem po co go pokazywać. Chciałbym wiedzieć jak zrobić te warstwy, bo kolejność w przypadku napisów chyba nie ma znaczenia :/
  7. MZG

    Allegro - warstwy rysowania

    No właśnie kolejność nie ma nic do rzeczy. Jakkolwiek bym kolejność nie ułożył ZAWSZE napis będzie za spritem. A co do parametru głębokości - to nigdzie go nie widzę i nie mam pomysłu jak on mógłby działać :/
  8. MZG

    Allegro - warstwy rysowania

    Witam. Próbuje swoich sił w bibliotece Allegro i mam pewien irytujący problem którego nie umiem rozwiązać. (Wspomnę że jestem początkujący, więc to jest błahy problem). Przykładowo - mam grę(jeśli można to tak nazwać) w której chodzę czerwoną kulką po ekranie. Chciałem aby jej prędkość była napisana w środku jej samej, w tym celu użyłem funkcji "textout_ex" z koordynatami skierowanymi na środek owej kulki. I tu pojawia się problem, tekst jest za kulką a nie przed nią. Jest jakiś sposób żeby to kontrolować "co będzie na czym"? Sposób żeby każdy napis lub sprite miał swoją warstwę. Żebym np. kulka była NA obrazku ziemi a POD teoretycznym "dachem"(patrząc z góry kulka po prostu schowała by się pod prostokąt)?
  9. ___________________________________________ ERROR in action number 1 of Step Event for object Real_wire: Error in code at line 3: xx1=start_line.x at position 17: Unknown variable x Wyświetliło się jak miałem klawiatura+Inkrementacja+Emiter Dźwięku ERROR in action number 1 of Step Event for object Gate_Plus: Error in code at line 26: in01=in01_id.out01; at position 15: Unknown variable out01 a to potem i tak na przemian
  10. No to może na poważnie: Grafika 0.5/5 (0.5 za to że grafika w ogóle jest), czy to ludzie, czy coś innego? Na pewno nie przypominają mi człowieka Dźwięki 2/5 No, muzyka czasami drażni moje biedne uszy, ale zawsze mogło być gorzej Grywalność 3/5 jeżeli weźmie się tą grę za żart, a 0/5 jeżeli całkowicie na poważnie. Plusy: + Śmieszne jakby na to patrzeć ale na pewno nie idzie w stronę - "Być dobrym programistą" Np:Czy w GTA chodzimy żółtym murzynem? Minusy: - Sama nazwa: "Seid do pobrania" - Używanie ręki do wspinania się to może był dobry pomysł ale używanie afro?! - Prolog (ta pierwsza misja z kolcami która oficjalnie misją nie jest) jest do bani - Sprity Ludzi (Raczej zwierząt) - Boss trudny że hej... Za pierwszym razem go nawet nie zauważyłem.... - ...a za drugim mnie oślepił (Qwadójkąło?) - Ten gościu co mam mu dać maskę jest... hm... chwile....co by tu powiedzieć....a już wiem.....jest ********************!!!!!!! - Cytat: daj mi tom maske i uciekaj bo jestes zagrożony..... - ... jest nieczytelny, ledwie skoczyłem nacisnąłem "Print Screen" i dopiero zobaczyłem - Ostatni level jest głupi i niema żadnego sensu. No kolce, niewidzialna zapadnia, a na dole jakiś buldożer. Biorąc pod uwagę tą fabułę to był "wrak buldożera" który go wywiózł z "zagrożenia"(czyt. szpitala dla psychopatów) Co to mogło znaczyć? Może wszystkie przygody po "maskę" to był tylko jego sen? Maybe potem jakiś jego kumpel wjechał do szpitala i go zabrał. Może te kolce, te na w pół-ludzie, Qwadójkąło i owy "Szef" to była tylko jego chora wyobraźnia? Dodatkowo jest(znaczy na stronie dyzmaken strona) jeszcze dodatek:The Seid Destiny który (sugerując po nazwie) potwierdza ucieczkę ze szpitala i majaczenie w drodze. Ogólna Ocena: 1/5
  11. gra bardzo słaba, lepiej rób gry prywatnie, a potem je wrzucaj, ok? Grafika 1/5 no, bugi czyli jak utopić się w ścianie Dźwięk 0/5 bo go niema Grywalność 0/5 bo jej też nie ma Ogólna ocena:0.25/5
  12. MZG

    Upadek

    działa ale trzeba było zamiast *2 to /2 bo za dużo hp odbierało THX wszystkim!
  13. MZG

    Upadek

    Tera w ogóle nie odejmuje życia
  14. MZG

    Upadek

    No dobra, ale cały czas są ułamki, przypomni mi ktoś kod na zaokrąglanie?
  15. MZG

    Upadek

    Ja mam grawitacje z FAQ, a tam jest: GML if place_free(x,y+1) {gravity = 0.5} else {gravity = 0} No działa, ale koleś skacze i 36 hp mu odbiera :/ EDIT: Zmniejszyłem skoczność ale i tak duże liczby, w dodatku wychodzą ułamki (zapomniałem kod na zaokrąglanie)
  16. MZG

    Upadek

    tylko jak stoje na ziemi to jest GML gravity = 0 i wywala errora o dzieleniu przez zero
  17. MZG

    Upadek

    jam mam grawitacje z FAQ i nie mam zmiennej SpeedY. Jak takową zadekralować?
  18. Tak jak w temacie, jak zrobić żeby po upadku z danej wysokości odbierało trochę hp w zależności co do szybkości upadku np: z 50 pixeli tracisz 5 hp a z 200 pixeli tracisz 20 hp?
  19. Gra jest znakomita!!!! Super po prostu, 5/5, szkoda że nie można dać 6/5, normalnie istne cudo!! Dobre zrealizowania świata po 3 wojnie światowej, ludzi o 3 wojnie światowej, i dźwięków po 3 wojnie światowej! Czekam z niecierpliwością na "Drógą" część gry : Seid o pobrania 2 żułty Mórzyn we ópałach! Więcej gier od ciebie!
  20. Super gra, 5/5, czekam na full z niecierpliwością :thumbsup: Trochę to opanowałem, tak czy siak to jest trudne ale to jest gra typu sandbox a ja kocham takie gry!
  21. Skoro demo to chyba powinno być w "Dema gier i programów"? Własne piosenki nie działają! -10 pt Fajne animacje 10 pt Fajnie zrobione config 20 pt Kolorowe! xD 10 pt (-10)+10+20+10=? Znasz się na matmie? :) 30 Punktów Ale: Napis "Bagno" +5 pt :D 35 Punktów Ikonki :) + 5 pt Loading + 5pt OOOOO! Piosenki zadziałały! +10 pt!!!!!! 55 pt! 2/5 Bo nie lubie tego typu gier Niech no zobaczę jeszcze jeden taki post, a poleci warn. Nie musisz robić pustej linijki przerwy po każdej jednej. Wbrew temu co najwyraźniej ci się wydaje nie czyni cię to fajnym. A za to utrudnia czytanie posta. Pousuwałem te durne Entery. Platynek
  22. 2 Sposoby: GML sprite_index=spr_jakis //zmiana sprita alarm[0] = 30; //W ALARM 0 sprite_index=spr_costam alarm[1] = 30; //W alarm 1 to samo tylko że alarm[2] //kończysz nie dodając linii alarm</span> albo zrób animacje i daj w Create image_speed = 0.1 i alarm[0] = 90 a w alarm[0] image_speed = 0
  23. Przywitał mnie super loading, który był taki sam jak start gry. Niewiem czy chodziło ci o "ładowanie w tle", ale ten napisŁysy...Trochę mnie powalił :jezor: "Łysy" nie umie stać jak należy. A kiedy spadł, ktoś puścił fajerwerka i mnie trafił! :huh: Skoczyłem i........ platforma mnie walneła w głowa i nabiłem ponad 3000 pt.! Ogólnie Grafa:2.5/5 Osobno Licząc: Gostek:4/5 (Jedyna rzecz dobra, dlatego w ogólnej grafice .5) Platformy; 1.5/5 [Paint] Przeciwnik,Pier...,Strzelanie: 1/5 (Zacieło mi się pierdzenie przy śmierci. :sick: ) Dwienki [specjalnie] 1/5 Pier.... 0.000000000000000000000[560].1/5 Dźwięków z Game Makera nie będe oceniał, tylko ich wykorzystanie 2/5 Fabuła:Krótko 2/5 PLUSY + Długa +5 pt + Innowacyjana +5pt Pośrodku Strzelanie +1pt MINUSY -Tło -5pt- Pier... -5pt-Fabuła [Raczej jej brak] -1pt Gra tak słaba, że aż śmieszna. Jednak robiona przez new usera'a dodaje 20 pt Za grafe 25 pt Za dźwięki 10 pt Ogółem 55 pt Czyli 2/5
  24. w kliknięciu na ball_football dajesz: GML image_index=football //jeszcze może coś takiego, masz np: 5 piłek i: football = true; blue = false; [jakastam pilka] = false; [jakastam pilka] = false; [jakastam pilka] = false; A w kliknieciu na blue = true; a inne false, a w image_index sprite_blue itd. I w object piłka (ogólnie, bo wystarczy jeden object piłka, i dużo spritów) GML if (football) { image_index=sprite_football } else if (blue) { image_index=sprite_blue } else if (jakastam pilka} { image_index=spritejakastam pilka } else if (jakastam pilka) { image_index=jakastam pilka } // jeszcze jeden możesz sobie dorobić</span>
  25. To jest gra z grawitacją? W step objektu wklej grawitacje! W Keyboard left= GML sprite_index=Hero_w_lewo image_speed=0.25//tu możesz sobie wstawić inną predkosc //W keyboard right= sprite_index=Hero_w_prawo image_speed=0.25//tu możesz sobie wstawić inną predkosc //no i jeszcze w w prawo if place_free(x+4,y) {x+=4} //no i oczywiście w lewo if place_free(x-4,y) {x-=4} Jeśli nie jest to gra platformowa to: W keyboard wszystkich szczałkach : lewo, góra, dół, prawo Dajesz: GML image_index=???? image_speed=0.25//tu wstawiasz sobie inna prędkosc</span> w ???? wstawiasz odpowiedniego sprita (góra,dół,lewo,prawo) którym postać się rusza. A, i nie zapownij o poruszaniu: GML action_move("010000000",5);//góra action_move("000100000",5); // lewo action_move("000001000",5); // prawo action_move("000000010",5); // dół</span>
×
×
  • Dodaj nową pozycję...