PDA

Tam Sürümünü Görmek İçin : Oyun Programlama


EAN
14/04/2003, 03:56
Selamlar,

C++'de bir oyun yazıyorum. Sadece kendimi geliştirmek için tetris'i yeniden yazmaya çalışıyorum. Bir yerde çok güzel bir asm kod parçası buldum. Onu yaptım da, sormak istediğim olay şu;

1- Sprite dosyalarını nasıl oluşturabiliriz?

2- Bu bitmapları nasıl okuruz? Görüntüleriz?

3- Bu forumda C++ ya da VB ile oyun yazan arkadaş var mı?

Sevgiyle,

//Not; İkinci soru için yabancı bir forumda aşağıdaki gibi bir kod verdiler ben bir şey anlamadı.. Bir de kod eksik; tanımlanamayan uçmayan, fakat kullanılmış tanımlamalar mevcut.. :p

#define NUM_COLORS 256

void ReadBitmap(char *file)
{
FILE *fp;
unsigned short num_colors;
if ((fp = fopen(file,"rb")) == NULL)
{
DispError("Error opening file.\n");
}
Mode13h.ClearScreen(0);
Mode13h.CopyPageToScreen();
fread(&f, sizeof(Fileheader), 1, fp);
if (f.ClrUsed==0)
num_colors=NUM_COLORS;
else
num_colors=f.ClrUsed;
if ((Bmp = (unsigned char * )farmalloc(sizeof(unsigned char)*(f.Width*f.Height))) == NULL)
{
fclose(fp);
printf("Error allocating memory for file %s.\n",file);
exit(1);
}
for(int i=0; i<num_colors; i++)
{
fread(&Palette[i], sizeof(RGBQuad), 1, fp);
ColStr.r=Palette[i].rgbRed>>2;
ColStr.g=Palette[i].rgbGreen>>2;
ColStr.b=Palette[i].rgbBlue>>2;
Mode13h.SetPaletteColor(i,ColStr);
}

for(long j=(f.Height-1)*f.Width; j>=0; j-=f.Width)
{
for(i=0;i<f.Width;i++)
*(Bmp+j+i)=fgetc(fp);
if(f.Width%4!=0)
{
for(int x=f.Width%4; x<4; x++)
fgetc(fp);
}
}
fclose(fp);
}


void DisplayBitmap(void)
{
Mode13h.ClearScreen(0);
Mode13h.CopyPageToScreen();
for(long i=0; i<f.Width; i++)
for(int j=0; j<f.Height; j++)
Mode13h.PlotPixel(i, j, *(Bmp+i+j*f.Width));
Mode13h.CopyPageToScreen();
farfree(Bmp);
}


ee++
14/04/2003, 08:32
C ile, metin ekranda calisan, sorunsuz bi tetris yazmistim..

fatihhood
12/04/2004, 01:43
....

----

EAN : Suanda OpenGL ve Delphi ile 3D Engine yaziyorum... Yakin zamanda bir pre-alfa cikartcam. Eger Delphi ve OpenGL den anliyorsan benimle irtibata gecebilirsin. Yani tek tabanca takilmaktan iyidir. :)

Arkantos
12/04/2004, 09:50
Aynı soruyu http://www.oyunyapimi.org adresine de sorabilirsin. Burada da 2D oyun yapımıyla ilgilenen arkadaşlar olduğunu biliyorum. Bir de sanırım C++ ile 2D oyun programlamayı anlatan Türkçe yeni bir kitap çıktı. Bunu da oradan bulabilirsin.

RaiST
12/04/2004, 12:39
direkt oyun programlama yapmasamda game network programming uzerinde calısmalarım var. su anda WoW uzerinde calısamalar yapıyorum

Euclides
19/04/2004, 21:33
Selam EAN;
Bitmapları okuduktan sonra nerde kullancaksın ? OpenGL,vb... gibi bir şeyde Texture olarak mi kullanıyosun yoksa Pencere üzerinede direkt mi göstereceksin ?

Zerzevat Adam
19/04/2004, 21:37
Bu arada Sprite'lar için 1-2 program var yollayabilirim...

Mingitau
19/04/2004, 21:49
Biraz üstünden zaman geçmiş gibi...

fizikçi
23/04/2004, 01:42
merhaba. tam sizin aradığınız şeyler var elimde. bir zamanlar C++ ile bir yılan oyunu yazmıştım. size onun linkini vereyim. biteşlem yükleme kodu da içeriyor.

http://programcininkutusu.com/oyun_program/program_kodlari/yilan-grafik.zip

İsterseniz web sitemde VGA grafik programlama ile ilgili detaylı bir bölüm var. oraya bir göz atmanızı tavsiye ederim.

http://programcininkutusu.com

vadumor
23/04/2004, 10:23
@EAN: oyunyapimi.org adresindeki dökümanlarda aradığın bilgiler var... BMP ile ilgili bi döküman olması gerek.. sprite içinde google a spritelib yazarak gerekli dökümanlara ulaşabilirsin diye düşünüyorum...

bir arkadaşımda işe tetrisle başlamıştı bundan 3 yıl önce ve şimdi bu konu hakkında tam bir ayaklı kütüphane konumunda.. deneme amacli bir strateji oyunu yapmisti yapay zeka oldukca iyiydi kendi yolunu buluyor ve dusmanini taniyabiliyordu.. (gercekten zordu)