Skocz do zawartości

Pisanie Gier Pytanko


Rekomendowane odpowiedzi

Opublikowano

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

Opublikowano

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 :)

Opublikowano

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

  • Administratorzy
Opublikowano

loz. OpenGL jest silnikiem graficznym, a WinApi to zbiór funkcji potrzebnych do działania programu w windowsie :)

Opublikowano
loz. OpenGL jest silnikiem graficznym, a WinApi to zbiór funkcji potrzebnych do działania programu w windowsie :)

Ty to jak coś powiesz to normalnie niekiedy załamka :D

  • Administratorzy
Opublikowano

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

  • Filar Społeczności
Opublikowano

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.

Opublikowano

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?

Opublikowano
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. :)

Opublikowano

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 ;/

Opublikowano

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 ;]

Opublikowano
Jak zrobić skakanie,grawitacje,kolizje itp ;]

to nie do allegro jest, tylko w ogóle do programowania.

 

musisz pomyśleć sam, w C++ mało kto podaje "na talerzu" takie rzeczy.

Opublikowano
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

Opublikowano

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"

Opublikowano
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

Opublikowano

Jak ty chcesz cokolwiek napisać jak googli nie potrafisz użyć?

 

A jak już się uczysz allegro to możesz przy nim zostać. Wypróbuj jedno, potem drugie. Nie oba na raz.

Opublikowano

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.

Opublikowano

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?

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ę...