Skocz do zawartości

Pisanie Gier Pytanko


KozakPL

Rekomendowane odpowiedzi

Znajomość jakiejś biblioteki graficznej i ewentualnie dźwiękowej, lub silnika jak nie chcesz spędzić kupe czasu na jego tworzenie.

Odnośnik do komentarza
Udostępnij na innych stronach

Wolał bym sam napisać :P Tylko jakieś wskazówki jak :P Wiem jak się tworzy klasy i Obiekty itp...wszystko co trzeba.Słyszałem że od WinApi Lepsze OpenGL

 

To prawda? Czy open gl trzeba się uczyć od nowa? Jakiś mały przykład jak można poprosił bym :)

Odnośnik do komentarza
Udostępnij na innych stronach

weź się pierw za allegro czy SDL bo z Twoim słomianym zapałem wątpie że sobie jakikolwiek silniczek na OGL zrobisz

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Do napisania gry potrzebne oprócz C++ potzrebne ci jest zaparcie i samodzielność oraz umiejętność szukania tematów sprzed kilku dni na forum, gdzie poruszany był ten temat 100 razy.

Poza tym nie wiem czy "najprostszym" rozwiązaniem będzie OpenGL.

Odnośnik do komentarza
Udostępnij na innych stronach

Gnysek: Kogo zbanujesz xD ;]

 

mam problem już:W kursie jest taki kod:

#include <allegro.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, makecol(128,128,128));
  
  BITMAP *ludek = NULL;
  
  ludek = load_bmp("kolo.bmp",default_palette);
  if (!ludek)
  { 
  set_gfx_mode(GFX_TEXT,0,0,0,0);
  allegro_message("Error: Brak Pliku kolo.bmp");
  allegro_exit();
  return 0;
  }
  
  blit( ludek, screen, 0,0, 100,100, ludek->w, ludek->h);
  readkey();
  
  destroy_bitmap(ludek); 
  
  allegro_exit();
  return 0;
} 
END_OF_MAIN();

Ale obrazek jest z tłem...więc tak:

#include <allegro.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, makecol(128,128,128));
  
  BITMAP *ludek = NULL;
  
  ludek = load_bmp("kolo.bmp",default_palette);
  if (!ludek)
  { 
  set_gfx_mode(GFX_TEXT,0,0,0,0);
  allegro_message("Error: Brak Pliku kolo.bmp");
  allegro_exit();
  return 0;
  }
  
  blit( ludek, screen, 0,0, 100,100, ludek->w, ludek->h);
  masked_blit( ludek, screen, 0,0, 200,100, ludek->w, ludek->h);
  readkey();
  
  destroy_bitmap(ludek); 
  
  allegro_exit();
  return 0;
} 
END_OF_MAIN();

Teraz tworzy się 2 kolesi i w dodatku trzymają się za ręce(haha xD Serio xD ).Ten po lewej jest z tłem a ten po prawej nie ma tła xD

O co chodzi? xD

 

E:A to muj ludzik: https://gmclan.org/up5646_4_kolo.html

 

E2:Oto screen https://gmclan.org/up5646_4_ekran.html ;/ Czemu jest ich 2?

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra OpenGl też jest zbiorem funkcji API. Kiedyś cię zbanuję, naprawdę <_<

Może mi nie chodziło o OGL, tylko o to co powiedziałeś o WinAPI, bo z Tego ze Snakem mieliśmy niezły polew :D ( P.S. Źle zacytowałem )

 

Widzę, że powoływałeś się na polską wikipedię,a tam akurat definicja jest do dupy. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Mam problem:

kod:

#include <allegro.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, makecol(128,128,128));

  install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,"");
  set_volume(255,255);

  BITMAP *bufor = NULL;
  SAMPLE *dzwiek = NULL;


  bufor = create_bitmap(640,480);
  if (!bufor)
  {
    set_gfx_mode(GFX_TEXT,0,0,0,0);
    allegro_message("Nie mogę utworzyć bufora !");
    allegro_exit();
    return 0; }

  dzwiek = load_sample("brum.wav");
  if (!dzwiek)
  {
    set_gfx_mode(GFX_TEXT,0,0,0,0);
    allegro_message("nie mogę załadować dzwieku !");
    allegro_exit();
    return 0;
  }

  play_sample(dzwiek, 255,127,1000,1);

  while( !key[KEY_ESC])
  {
    if( key[KEY_A]) { adjust_sample( dzwiek,255,127,500,1); }
    if( key[KEY_S]) { adjust_sample( dzwiek,255,127,2000,1); }
    if( key[KEY_D]) { adjust_sample( dzwiek,255,0,1000,1); }
    if( key[KEY_F]) { adjust_sample( dzwiek,255,255,1000,1); }

  }
  stop_sample(dzwiek);
  destroy_bitmap(bufor);
  destroy_sample(dzwiek);

  allegro_exit();
  return 0;
}
END_OF_MAIN();

Kompiluje i uruchamiam(F9) i wyskakuje że Projekt nie jest skompilowany ;/

Odnośnik do komentarza
Udostępnij na innych stronach

Nie rozumiem.Możesz jaśniej?

 

Lols.W Pliku jest skompilowany program.działa.Jak mam włączony kompilator i daje kompiluj i uruchom to kompiluje się i nie uruchamia xD ;]

 

Ale ważne że działa xD ;]

 

E:Zna ktoś jakąś stronę z przykładami do allegro?Jak zrobić skakanie,grawitacje,kolizje itp ;]

Odnośnik do komentarza
Udostępnij na innych stronach

A reszte normalnie pisze w C++

Tak wać, resztę normalnie, choć kłócił bym się ze stwierdzeniem, iż pisząc z pomocą allegro, pisze się nienormalnie ;P

Odnośnik do komentarza
Udostępnij na innych stronach

algorytm podobny do takiego jaki byś napisał w GM, a o platformerach masz w faq napisane

 

Wielu się to przyda

"Wielu" idzie do wujka google i po rozum do głowy, Ty też bądź "wielu"

Odnośnik do komentarza
Udostępnij na innych stronach

A możesz dać taki przykład? ;p

nie, bo mi sie najzwyczajniej nie chce tracić czasu na coś co możesz znaleźć w googlach.

 

A SDL nie jest prostrzy od allegro czasem?

nie mnie to oceniać, nie używałem ani tego ani tamtego

Odnośnik do komentarza
Udostępnij na innych stronach

to próbuj inne hasła. Masz mózg to używaj. Jak tak dalej pójdzie to niestety kiedyś zostaniesz pierwszym zbanowanym za pure stupidity, serio.. bo aż jasna cholera strzela jak się czyta to co piszesz.

Odnośnik do komentarza
Udostępnij na innych stronach

No ok :P Narazie znalazłem to: http://www.easykoder.vot.pl/arty ;] Przetestuje i się odezwę xD hehe xD

 

 

Hmm...nie takie trudne to ;]

Ale mam problem xD :

class Cpostac
{
      public:
             short int x,y;
             short int s,w;
};

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2,int x3,int y3,int s3,int w3,int x4,int y4,int s4,int w4)
{
     if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
     if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else 
     if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; 
     else return false;
};
Cpostac ludek1,ludek2,Wino,Murek;
#include <allegro.h>

volatile long speed = 0;

void increment_speed()
{
speed++;
}
END_OF_FUNCTION(increment_speed);

LOCK_VARIABLE(speed);
LOCK_FUNCTION(increment_speed);

int main()
{
allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
install_timer();
install_int_ex(increment_speed, BPS_TO_TIMER(100));

BITMAP *bufor = NULL;
BITMAP *ludekb1 = NULL;
BITMAP *ludekb2 = NULL;
BITMAP *Wino = NULL;
BITMAP *Murek = NULL;
// ładowanie grafik
bufor = create_bitmap(640,480);
ludekb1 = load_bmp("BMP/Mietek.bmp",default_palette);
ludekb2 = load_bmp("BMP/Zenek.bmp",default_palette);
Wino = load_bmp("BMP/Wino.bmp",default_palette);
Murek = load_bmp("BMP/Murek.bmp",default_palette);
// Ładowanie postaci
ludek1.x=100; ludek1.y=100; ludek1.s=50; ludek1.w=60;
ludek2.x=300; ludek2.y=100; ludek2.s=50; ludek2.w=60;
Murek.x=100; ludek1.y=200; ludek1.s=50; ludek1.w=60;
Wino.x=100; ludek2.y=300; ludek2.s=50; ludek2.w=60;

while( !key[KEY_ESC])
{
while( speed > 0)
{
// Poruszanie ludek1
if( key[KEY_LEFT]) ludek1.x--;
if( key[KEY_RIGHT]) ludek1.x++;
if( key[KEY_UP]) ludek1.y--;
if( key[KEY_DOWN]) ludek1.y++;
// Poruszanie ludek2
if( key[KEY_A]) ludek2.x--;
if( key[KEY_D]) ludek2.x++;
if( key[KEY_W]) ludek2.y--;
if( key[KEY_S]) ludek2.y++;
speed--;
}
clear_to_color(bufor, makecol(150,150,150));
//Wyświetlanie ludków
masked_blit( ludekb1, bufor, 0,0, ludek1.x, ludek1.y, ludek1.s, ludek1.w);
masked_blit( ludekb2, bufor, 0,0, ludek2.x, ludek2.y, ludek2.s, ludek2.w);
masked_blit( Murek, bufor, 0,0, Murek.x, Murek.y, Murek.s, Murek.w);
masked_blit( Wino, bufor, 0,0, Wino.x, Wino.y, Wino.s, Wino.w);

// Wyswietlanie napisu jeśli kolizja
if( kolizja( ludek1.x,ludek1.y,ludek1.s, ludek1.w, ludek2.x, ludek2.y, ludek2.s, ludek2.w)==true)
{ textout_ex(bufor,font,"Kolizja !",20,20 ,makecol(255,200,255),-1); } 

blit( bufor, screen, 0,0,0,0, 640,480);
}

destroy_bitmap(bufor);
destroy_bitmap(ludekb1);
destroy_bitmap(ludekb2);
destroy_bitmap(Wino);
destroy_bitmap(Murek);

allegro_exit();
return 0;
}
END_OF_MAIN();

i wyskakują błędy że nie zdefiniowałem x,y,s,w w Murku i Winiaczku ;/ Może ktoś pomóc?

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...