donway Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 Oddaje do oceny pierwszy mój projekt w c++ w allegro, mianowicie mini szkielet gry platformowej. Download
PsichiX Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 to gra mi tak tnie czy jakims cudem zrobiles dziwnie klatkujacy ruch? :0
donway Opublikowano 12 Listopada 2009 Autor Opublikowano 12 Listopada 2009 tzn ruch jest o 40 pixeli, za chwilkę poprawie : p
PsichiX Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 ale dziwne ze mi tak klatkuje, jakby bylo z 10 fps
lenin Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 Czy ja wiem, wydaje mi się, że tylko przeskoki są takie i wygląda jakby się ścinało. tzn ruch jest o 40 pixeli Zdecydowanie do poprawy :P
donway Opublikowano 12 Listopada 2009 Autor Opublikowano 12 Listopada 2009 Proszę : Download Jest tam : Rungame - o 40 pixeli Rungame2 - o 20 pixeli Rungame3 - o 10 pixeli Sami oceńcie ; D
qanaroo Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 Wspaniałe, miniszkielet... Będzie się skakać w tej grze? Czyli czekaj, zrobiłeś przesuwanie się tła, tak? To wszystko? Dałbym 1- na zachętę, ale nie ma tu oceniania. Strasznie dupnie się przesuwa, zero płynności.
donway Opublikowano 12 Listopada 2009 Autor Opublikowano 12 Listopada 2009 Tylko, że zrobiłem to tak, że ani tło, ani ludzik się nie przesuwa ; > Przesuwają się tylko obiekty na tle co daje efekt jakby ludzik się przemieszczał, zresztą napisałem, że to pierwszy projekt.
PsichiX Opublikowano 12 Listopada 2009 Opublikowano 12 Listopada 2009 lepiej zrobić viewa ktory bedzie ustawial kamere na danej pozycji.
donway Opublikowano 12 Listopada 2009 Autor Opublikowano 12 Listopada 2009 tylko, że nie wiem jak, dlatego wymyśliłem ten patent z przesuwającymi się obiektami =x
Dawidds Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 Przesuwają się tylko obiekty na tle co daje efekt jakby ludzik się przemieszczał,Hehe, dzięki za wyjaśnienie. Dopiero co zastanawiałem się, po kiego grzyba nie mogę sterować ludkiem tylko jakąś rurą, i to na dodatek sterowanie jest odwrotne... ;| W ilu klatkach działa ta gra? Bo serio sprawia wrażenie, jakby działała w 15, a fraps nie działa na Allegro, więc nie sprawdzę.
PsichiX Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 tylko, że nie wiem jak, dlatego wymyśliłem ten patent z przesuwającymi się obiektami =x W weekend pisze tutek, więc się nauczysz tego i wielu innych rzeczy ;) Ale generalnie pomysł masz dobry, jeśli w Allegro nie ma macierzy transformacji, to poszedłeś dobrą drogą by robić przesuwany view, tylko pewnie mocno namieszane i zastosowane spore obejście na około, ale to sie da poprawić.
PsichiX Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 liczysz ilosc wystapien klatek w ciagu sekundy. jak masz petle glowna gry: // deklarujesz sobie zmienne fps=0; klatki=0; sekunda=0; // petla glowna gry while(wykonuj==true) { <rysujesz i aktualizujesz gre> // obliczanie fps klatki++; sekunda+=deltatime; // deltatime to czas w sekundach trwania ostatniej klatki if(sekunda>1) { sekunda=0; fps=klatki; klatki=0; } } no chyba ze allegro ma w sobie wbudowane obliczanie fps wiec poszukaj jak ta wartosc z niego pobrac
en_6280 Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 Przesuwają się tylko obiekty na tle co daje efekt jakby ludzik się przemieszczał, No gdybyś dodał chociaż prostą animację ruchu nagami to tak, niestety na moje Tobie to nie wyszło. Odczuwam głupi efekt przesuwania rury i tyle.
RaistlinBlackRobe Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 No cóż. Jak zapewne sam zauważyłeś otrzymujesz tutaj w znacznej większości komentarze negatywne(tak stało się również w przypadku twojego poprzedniego tematu). Etap, na którym aktualnie jesteś, to początki twojej nauki c++. Rzecz w tym, że w tym momencie publikowanie przez ciebie twoich aplikacji, które stworzyłeś ucząc się, bądźmy szczerzy, nie ma sensu. Musisz wiedzieć, że to co tutaj umieściłeś nie jest: ani dobrym przykładem, z którego inni mogli by się uczyć(zresztą po braku sourcea widać, że to nie było zamierzeniem), ani dobrze rokującym silnikiem, który inni mogliby skomentować i doradzić jak dalej rozwijać, ani grywalną grą(bądź demem, betą, alfą, czy jąkąś inną omegą), w którą można by popykać i podzielić się wrażeniami. To jest po prostu zarys twojego aktualnego etapu w nauce, twoje pierwsze kroki. To nie jest rzecz, którą powinneneś się dzielić z szerszą społecznością(ewentualnie, gdy prosisz o pomoc w odnalezieniu w niej błędu, czy masz inny problem jej dotyczący). Na to powinieneś poczekać. Jeżeli będziesz wytrwały, kreatywny i będziesz się przykładał do nauki korzystania z języka, to w końcu podzielisz się z nami swoją grą(tudzież inną aplikacją) i wtedy na pewno będziesz mógł liczyć po pierwsze na ocenienie i konstruktywny komentarz, a po drugie na to, że te oceny i komentarze będą pozytywne.
Jaklub Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 ja uważam, że jakby zrobił dużą część gry w ten sposób, byłoby za późno na zmiany i mielibyśmy crapa. ja tam scrolling realizuję w ten sposób: mam dwie wartości: view_xview i view_yview (nawyk z GMa ;p). kiedy rysuję obiekty, odejmuję od współrzędnych te wartości. tego, co jest w tym twoim demie, nie skomentuję. jeszcze oddzielne pliki dat dla wszystkich grafik. jak już to robisz w ten sposób, to spakuj potrzebne grafiki w jeden plik, bo inaczej to jest zbędne zawracanie swojej dupy, a można też wrzucić niekonwertowane grafiki. i tak twoich nikt nie będzie chciał kraść (na tym etapie, mam nadzieję)
donway Opublikowano 13 Listopada 2009 Autor Opublikowano 13 Listopada 2009 próbowałem wrzucić do 1 pliku dat ale byly jakies bledy wiec lepiej narazie tak, wytlumaczylbys bardziej szczegolowo swoj scrolling ? ;]
RaistlinBlackRobe Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 próbowałem wrzucić do 1 pliku dat ale byly jakies bledy wiec lepiej narazie tak, wytlumaczylbys bardziej szczegolowo swoj scrolling ? ;] Jemu chodzi o to, że tworzysz dwie zmienne: int view_xview = 0; //pozycja x kamery, czyli punkt o współrzędnej x takiej jak ta zmienna będzie w lewym dolnym rogu int view_yview = 0; //pozycja y kamery, czyli punkt o współrzędnej y takiej jak ta zmienna będzie w lewym dolnym rogu Następnie, gdy przychodzi do rysowania, to grafikę zamiast rysować w punkcie (x, y), to rysujesz ją w punkcie (x-view_xview, y-view_yview)
donway Opublikowano 13 Listopada 2009 Autor Opublikowano 13 Listopada 2009 dziękuję za pomoc, niedługo pewnie wstawię swoją pierwszą grę ;-)
qanaroo Opublikowano 13 Listopada 2009 Opublikowano 13 Listopada 2009 I jak idziesz w prawo to dodajesz do view_xview, w lewo odejmujesz, jak podskakujesz to dodajesz do y. Lepiej z tym wstawianiem się nie spiesz, wolimy zobaczyć dokończoną i dopracowaną grę. I ty zapewne będziesz wolał czytać komentarze na temat dopracowanej wersji. Mnie już samo słowo "niedługo", po tym, gdy jeszcze nic nie umiałeś odrzuca. I pamiętaj, że samo napisanie w C++ platformówki nie doda ci +2 do oceny, ludzie ocenią ją tak samo jakbyś napisał ją w GML, czy czymśtam.
donway Opublikowano 13 Listopada 2009 Autor Opublikowano 13 Listopada 2009 mam taki kod ale za **** nie mogę zrobić tego xview i yview zeby ekran sie przewijal. Dam kod i prosiłbym, żeby ktoś mi pomógł bo sam nie wyrabiam ;> #include <allegro.h> #include "uni01.h" #include "uni02.h" #include "uni03.h" #include "uni04.h" int main() { allegro_init(); install_keyboard(); set_color_depth(16); set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0); clear_to_color(screen,-1); BITMAP *bufor = NULL; bufor = create_bitmap(800,600); if(!bufor) { set_gfx_mode(GFX_TEXT,0,0,0,0); allegro_message("Blad bufora!"); allegro_exit(); } DATAFILE *uni01 = NULL; uni01 = load_datafile("uni01.dat"); if(!uni01) { set_gfx_mode(GFX_TEXT,0,0,0,0); allegro_message("Nie mozna wczytac uni01!"); allegro_exit(); } DATAFILE *uni02 = NULL; uni02 = load_datafile("uni02.dat"); if(!uni02) { set_gfx_mode(GFX_TEXT,0,0,0,0); allegro_message("Nie mozna wczytac uni02!"); allegro_exit(); } DATAFILE *uni03 = NULL; uni03 = load_datafile("uni03.dat"); if(!uni03) { set_gfx_mode(GFX_TEXT,0,0,0,0); allegro_message("Nie mozna wczytac uni03!"); allegro_exit(); } DATAFILE *uni04 = NULL; uni04 = load_datafile("uni04.dat"); if(!uni04) { set_gfx_mode(GFX_TEXT,0,0,0,0); allegro_message("Nie mozna wczytac uni04!"); allegro_exit(); } int lx=200,ly=450; //Zmienne bohatera int plx=300,ply=350; while (!key[KEY_ESC]) { if(key[KEY_LEFT])plx+=10,masked_blit((BITMAP*)uni02[heros].dat,bufor,0,0,lx,ly,40,60); if(key[KEY_RIGHT])plx-=10,masked_blit((BITMAP*)uni01[hero].dat,bufor,0,0,lx,ly,40,60); if(key[KEY_UP])ly==400; if(ly<=400)ly==450; rest(80); clear_to_color(bufor,-1); blit((BITMAP*)uni03[podloga].dat,bufor,0,0,0,500,600,150); blit((BITMAP*)uni03[podloga].dat,bufor,0,0,200,500,600,150); masked_blit((BITMAP*)uni04[platforma].dat,bufor,0,0,plx,ply,80,155); masked_blit((BITMAP*)uni01[hero].dat,bufor,0,0,lx,ly,40,60); blit(bufor,screen,0,0,0,0,800,600); } allegro_exit(); return 0; } END_OF_MAIN()
Jaklub Opublikowano 14 Listopada 2009 Opublikowano 14 Listopada 2009 nie, nie będę przerabiał twojego kodu tak, aby zrobić kamerę. aż strach pomyśleć, jak ty zrobisz kolizje i skakanie. weź się za coś prostszego. a jak chcesz to skończyć: ustawiaj view_xview i view_yview na pozycję bohatera i odejmuj połowę rozmiaru ekranu.
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się