Bilgisayarınızda visual studio yoksa bu yeni sürümleri öneririm. Kotasına güvenen indirsin :) Önce "Visual c++ 2008 Express ve Allegro kütüphane" download linklerini vereyim: *Net Framework 3.5 gerekli http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en *Ve de Windows SDK (Burada altta PSDK-x86.exe i seçbilirsiniz (32bit için)) http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#top *Visual C++ Express Edition 2008 http://www.microsoft.com/express/download/#webInstall *Allegro Kütüphanesi http://wiki.allegro.cc/Visual_C%2B%2B_Express_2008 Bunları kurduktan sonra isterseniz kendimiz için şablon bir allegro programı yazalım. Masaüstüne "GameProject" isimli bir klasör açın ve indirdiğiniz allegro (.zip) dosyasını "GameProject" klasörüne çıkartın. Daha sonra; Visual c++ i açın "Yeni Proje->Empty Project" i seçin. "Project->Options" bölümünden "C++->General" sekmesinden şu ayarları yapın: (değerleri verirken tırnak işaretlerini mutlaka yazın!) *Additional Include Directory Files = "$(ProjectDir)\include" "Linker->General" Bölümüne de: *Additional Library Directories = "$(ProjectDir)\lib" "Linker->Input" kısmına da: *Additional Dependencies = alleg.lib Ayarları yaptık şimdi kodlara geçelim. Solda Bulunan Solution Explorer a sağ tıkayın Header Files e New Item diyerek Dialog'tan .h (Header) filesi seçin adını "Game" verin, aşağıdaki kodları ekleyin #ifndef GAME_H #define GAME_H #include/* --------------------------- TEMPLATE --------------------------- */ #define $START_MAIN_PROGRAM int main(){ #define $END_MAIN_PROGRAM return 0;}END_OF_MAIN(); /* --------------------------- TEMPLATE --------------------------- */ class Game { public: virtual void Initialize(void); virtual void DestroyGame(void); virtual void Update(void); void run(void); private: BITMAP *buffer; }; #endif Daha sonra Source Files e tıklayıp (.c Source Files) "Game" seçin ve oluşturulan Game.cpp dosyasına şu kodları ekelyin #include "Game.h" void Game::Initialize(void) { allegro_init(); install_keyboard(); install_mouse(); set_window_title("Game"); set_color_depth(desktop_color_depth()); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); buffer = create_bitmap(640, 480); } void Game::DestroyGame(void) { destroy_bitmap(buffer); allegro_exit(); } void Game::Update(void) { draw_sprite(screen, buffer, 0, 0); /* UPDATE GAME CODE */ } void Game::run(void) { while(!key[KEY_ESC]) { Update(); } } ve birde main.cpp ekliyoruz. Bunlarda son kodlarımız. Projeyi kaydetmeyi unutmayın. Artık masaüstüne açtığınız "GameProject" isimli klasörü zipleyip her zaman kullanmak için saklayabilirsiniz. main.cpp: #include "Game.h" $START_MAIN_PROGRAM Game game; game.Initialize(); game.run(); game.DestroyGame(); $END_MAIN_PROGRAM
2 Eylül 2008 Salı
Visual C++ 2008 ve Allegro Kurulumu
18 Ağustos 2008 Pazartesi
Allegro'da Sprite oluşturalım !
Önce masaüstünde bir klasör açın ve adını "Allegro Sprite Denemsi" olarak değiştirin. Sonra DEV C++ editörünü açın, "Yeni Proje" diyerek "Multimedia" bölümünden "Allegro" yu seçin, masaüstüne açtığınız klasörün içine kaydedin. Son olarak aşığdaki kodları ekleyerek programınızı "Run" komutu ile çalıştırın. sprite.h dosyası ------------------------------------------------------------------------------------ #ifndef sprite_H_INCLUDED #define sprite_H_INCLUDED #include <allegro.h> enum Yon { _LEFT = 0, _RIGHT = 1, _DOWN = 2, _UP = 3 }; class Sprite { public: BITMAP *_image; int _x; int _y; Sprite(); ~Sprite(); void Draw(BITMAP*); void Move(int,int); }; #endif sprite.c dosyası ------------------------------------------------------------------------------------ #include "sprite.h" Sprite::Sprite() { _image = NULL; _x = 0; _y = 0; } Sprite::~Sprite() { if(_image != NULL) { destroy_bitmap(_image); } } void Sprite::Draw(BITMAP *__buffer) { if(_image != NULL) { acquire_screen(); clear_bitmap(__buffer); draw_sprite(__buffer, _image, _x, _y); release_screen(); } } void Sprite::Move(int yon, int speed) { switch(yon) { case (int)_LEFT: _x-=speed; break; case (int)_RIGHT: _x+=speed; break; case (int)_UP: _y-=speed; break; case (int)_DOWN: _y+=speed; break; } } main.cpp dosyası ------------------------------------------------------------------------------------ #include <allegro.h> #include "sprite.h" BITMAP *buffer; BITMAP *scr; void init(); void deinit(); int main() { init(); Sprite *spr; spr->_image = scr; spr->_x = 100; spr->_y = 100; while (!key[KEY_ESC]) { /* put your code here */ draw_sprite(screen, buffer, 0, 0); spr->Draw(buffer); if(key[KEY_LEFT]) spr->Move(0, 2); if(key[KEY_RIGHT]) spr->Move(1, 2); if(key[KEY_DOWN]) spr->Move(2, 2); if(key[KEY_UP]) spr->Move(3, 2); } deinit(); return 0; } END_OF_MAIN() void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); } install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ buffer = create_bitmap(640,480); scr = load_bitmap("picture.bmp", 0); } void deinit() { clear_keybuf(); /* add other deinitializations here */ }
16 Ağustos 2008 Cumartesi
C++ ile yeni bir Allegro denemesi
Allegro ve c++ ikilisi oyun programlama da ne kadar yeterli bilemem fakat bana çok zevkli gelmeye başladı. İşte size yeni bir örnek daha:
14 Ağustos 2008 Perşembe
Allegroyu biraz kolaylaştıralım !
C++ ile Allegro programlarken, programa giriş noktası yani main() fonksiyonunun hemen başında, ilk satırlarında basit ama uğraştıran, birtakım kodlar yazmak zorundayız. Gerçi gerek yok ama sadece kolaylık olması için bu işleri yapan bir sınıf oluşturabilirz. Hem c++ için pratik yapmış oluruz. Kodlara gelince: //İşimizi görecek olan sınıf settings.h dosyası : /* Allegro yardımcı sınıf (beta) */ #include <allegro.h> enum __DEPTH { x8, x15, x16, x24, x32 }; enum __GFX { WINDOWED = 0, FULLSCREEN = 1, ISNULL = 2 }; /* interface */ class Settings { BITMAP *buffer; public: enum __GFX gfx_mode; enum __DEPTH color_depth; bool _install_keyboard; bool _install_mouse; bool _show_mouse; bool buffer_install; int buffer_w, buffer_h; BITMAP *__mouse; const char* window_title; Settings(); ~Settings(); void install(); }; Settings::Settings() { gfx_mode = WINDOWED; color_depth = x16; _install_keyboard = true; _install_mouse = true; buffer_install = true; __mouse = NULL; _show_mouse = true; buffer_w = 800; buffer_h = 600; window_title = "Allegro Game"; } Settings::~Settings() { /* dispose */ } void Settings::install() { allegro_init(); if(buffer_install == true) { buffer = create_bitmap(buffer_w, buffer_h); } switch(color_depth) { case x8: set_color_depth(8); break; case x15: set_color_depth(15); break; case x16: set_color_depth(16); break; case x24: set_color_depth(24); break; case x32: set_color_depth(32); break; } switch(gfx_mode) { case WINDOWED: set_gfx_mode(GFX_AUTODETECT_WINDOWED, buffer_w, buffer_h, 0, 0); break; case FULLSCREEN: set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, buffer_w, buffer_h, 0, 0); break; case ISNULL: set_gfx_mode(GFX_AUTODETECT, buffer_w, buffer_h, 0, 0); break; } if(_install_keyboard == true) { install_keyboard(); } if(_install_mouse == true) { install_mouse(); } if(_show_mouse == true) { show_mouse(__mouse); } set_window_title(window_title); } //Ana program kodlarımız ve main.cs: #include <stdlib.h> #include <allegro.h> #include "settings.h" Settings gSettings; void InstallAllegro() { gSettings.color_depth = x32; gSettings.window_title = "Allegro Denemesi"; gSettings._show_mouse = false; gSettings.buffer_w = 320; gSettings.buffer_h = 240; gSettings.install(); } int main() { //Ne kadar kısa demi :) InstallAllegro(); while(!key[KEY_ESC]); allegro_exit(); return 0; } END_OF_MAIN();
12 Ağustos 2008 Salı
C++ ve Allegro İle Oyun Programlama
Şimdilik allegro ile pencere oluşturup beyaz renkte bir çizgi çizmeyi göstereceğim. Ben öğrendikçe de sizlerle paylaşacağım ... #include <stdlib.h> #include <allegro.h> //Allegro kütüphanesi int main(void) { allegro_init(); //Allegro Hazırlanıyor ... install_keyboard(); //Klavye Yükleniyor ... install_mouse(); //Fare Yükleniyor ... show_mouse(NULL); //Fare Aktif Hale getiriliyor ... //Grafik modeu Ayarlanıyor ... //FULLSCREEN yazan kısımı WINDOWED olarak değiştiriseniz //program pencerede çalışır. int ret = set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0); //Grafik modu uygulanamıyorsa hata mesajı göster ... if(ret != 0) { allegro_message(allegro_error); return 1; } //ESC tuşuna basılmadığı sürece yapılacak işlemler while(!key[KEY_ESC]) { //Çizgi çiziliyor x1=0, x2=0, y1=0, y2=0 //makecol(r, g, b) -> bu kod renk üretir. line(screen, 0, 0, 150, 150, makecol(255, 255, 255)); } //ESC ye basıldıktan sonra döngü sona erdiğinde allegro dan çık ... allegro_exit(); return 0; } END_OF_MAIN();
22 Temmuz 2008 Salı
Örnek Flash Oyunum
Sonunda basit de olsa 2D bir oyun yaptık... Flash sayesinde :) Flash Çalışmasını indirmek için tıklayın (.fla) Ne kadar basit bir oyun olsa da geliştirlmeye açık. Mesela siz tahmine göre "yukarı"- "aşağı" şeklinde animasyonlarla sayıyı buldurmaya çalışabilirsiniz ...
Etiketler:
Flash Oyun Prog.
13 Temmuz 2008 Pazar
Flash'ta preloading yapımı
Flash'ta geliştirdiğiniz oyunlarda çok işinize yarayacak bir uygulama yapacağız. Oyun yüklenmeden önce kullanıcıya ön yükleme ekranı göstermelisiniz ki sıkılıp kapatmasın ve bilgilensin. 1. Şimdi Flash'ta bir proje açın, adını "preloading uygulaması" olarak değiştirin. 2. Sonra "Insert - New Symbol - Movie Clip" yapın ve bir dikdörtgen çizin, kenarlıkları kalın ve iç dolgu rengi olmasın. 3. Sonra "Insert - New Symbol - Graphics" yapın ve oluşturduğunuz movie clip in içine atın. Uzunluğunu sıfırlayın (W:0) ve "Instance Name" ini "lbarPos" olarak değiştirin. 4. Movie clipin içine bir de "Dynamic Text" olarak "LOADING 0%" yazın. Instance Name ini "loadingText" olarak değiştirin. Son olarak görüntü aşağıdaki gibi olmalı. Şimdi Movie Clibi ana sahneye taşıyın ve adını(Instance Name) "loadingBar" olarak değiştirin. Bu birinci kare idi. İkinci kareye de bir kaç resim import ederek yerleştirin. Sonra birinci kareye tıklayıp Actions kısmına şu kodları ekleyin. 5. Kodlar : stop(); //Animasyonu durduruyoruz. onEnterFrame = function() { yuklenen = _root.getBytesLoaded(); //swf dosyamızın yüklenmiş byte miktarı toplam = _root.getBytesTotal(); //swf dosyamızın toplam byte miktarı max = 226; //önyükleme movie clibimizin içindeki lbarPos isimli graphics //nesnesinin maksimum uzunluğu oran = yuklenen / toplam * 100; //Yükleme oranı % cinsinden oran2 = max * oran / 100; //Yükleme oranının maximum uzunlukla oranı //ana sahnedeki loadingBar nesnemizin içindeki loadingText isimli dynamic //text nesnesine yükleme oranını yazdırıyoruz. loadingBar.loadingText.text = "LOADING "+ Math.round(oran)+"%"; //ve uzunluğu artırarak loading efektini veriyoruz loadingBar.lbarPos._width = Math.round(oran2); //Eğer yükleme tamamlandıysa ikinci kareye (resimlerin bulunduğu yere) geç. if(yuklenen == toplam) gotoAndStop(2); } Ve son olarak CTRL+Enter yapıp animasyonu test edin ve bu penceredeki menuden simulate download seçin böylece animasyonu internette yükleniyormuş gibi görürsünüz.preloading, flash loading screen, flash loading scene, flash oyun programlama, flash ön yükleme ekranı, flash progressbar
Etiketler:
Flash Oyun Prog.
25 Haziran 2008 Çarşamba
Flash'ta Oyun programlama - Pdf Dökümanları
Sanırım 2D Oyunların en iyileri flash'ta geliştiriliyor. Animasyonları ve grafikleri siz hazırlıyorsunuz. Gerisini Action Script tamamlıyor. Tabi bu kadar da kolay değil, fizik hesaplamaları buradada canımızı sıkabiliyor ... İşte sizin için internetten araştırıp bulduğum 2 süper pdf dökümanı: 1.Dosya (.pdf) 2.Dosya (.pdf)
Etiketler:
Flash Oyun Prog.
5 Haziran 2008 Perşembe
XNA ile Healt Bar yapımı
Genelde aksiyon oyunlarında gördüğümüz bu healt(can,sağlık nyse..) bar yine iki parçalı bir resmin belirli kısımlarının gösterilmesi ile yapılıyor. Bu da source(kaynak) rectangle ile sağlanıyor. Şimdi kodları görelim... //İlk önce işimizi kolaylaştırmak için bir Sprite sınıfı yazıyoruz. Şimdi Oyun kodlarına geçelim. buradan resmi kopyalayın ve XNA Game Studio'da yeni bir Proje açın Content Manager ile resmi yükleyin ve kodları deneyin. Bu küçük bir uygulama fakat yararlı da... "KOŞMADAN ÖNCE YÜRÜMEYİ ÖĞRENMEK GEREK" :: (:Tom millerin oyun prog. kitabından:) yazar: CANER DEMİRCİ ((gerisi de var inşallah...))
2 Haziran 2008 Pazartesi
XNA'da Texture Yüklemek ve Render Etmek
Visual Studio açın ve bir XNA Game Studio projesi yaratın. Solution Sekmesindeki ağaç yapıda "Content" e sağ tıklayıp projenize bir resim dosyası ekleyin. (Benim tercihim .png formatı) ve daha sonra "Properties" sekmesinde bu dosyanın özelliklerinden "Asset Name" i "deneme" olarak değiştirin. Böylece Xna Game Studio bu resim dosyasını .XNB formatına dönüştürecek. ve sıra kodlarda : //İlk olarak yükleyeceğimiz resmi ekranda göstermek için //bir SpriteBatch tanımlıyoruz ... private SpriteBatch spriteBatch; //Sonra Texture2D sınıfından texturemizi tanımlıyoruz private Texture2D myTexture; //Texturemizin ekrandaki Pozisyonu (Vector2 sınıfı ile) private Vector2 Position; //Texturemizin ne kadar Scale edileceği (yani büyültüp küçültme oranı) // 1 verildiğinde eni ile boyunu 1 ile çarpar yani uzunluğu ve genişliğinde // bir değişme olmaz private float Scale; //Origin değeri yani merkez noktası private Vector2 Origin; //Şimdide Rotation yani döndürme açısı (orjine e göre) private float Rotation; //Texturemizin ekstra rengi yani White = Beyaz verilirse renk değişmez private Color color; //Texturemizin SourceRectangle değeri yani resmin tam olarak texturenin ne kadar //bir kısmının gösterileceğini belirle //Source Rectangle => X, Y, Width, Height değerlerini alır. //X, Y den başlayark Width ve Height değerleri boyunca devam eder private Rectangle Source; //Yüklediğimiz resmin asset name i private string AssetName = "deneme"; Nesnelerimizi tanımladık şimdi yapacağımız işlemler: 1-Initialize() -> Oyun hazırlanırken ilk değerlerimizi veriyoruz 2-LoadContent() -> bu metod ile texture nesnemizi yükleyeceğiz 3-Draw() -> bu metod ile texture nesnemizi yani resmimizi ekranda göstereceğiz protected override void Initialize() { this.Scale = 1.0f; this.Position = new Vector2(100, 100); this.Origin = Vector2.Zero; this.color = Color.White; this.Rotation = 0f; base.Initialize(); } protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); myTexture = Content.Load(AssetName); //Bu değeri Initialize metodunda veremedik çünkü texture uzunluk ve yükseklik //değerini yüklenen resim den alacağımız için ve resim LoadContent() metodunda //yüklendiği için şimdi veriyoruz. this.Source = new Rectangle(0, 0, this.myTexture.Width, this.myTexture.Height); } protected override void Draw() { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); //SpriteBatch nesnemizin render işlemine start veriyoruz spriteBatch.Begin(); //Ve Texture render ediliyor. spriteBatch.Draw(myTexture, this.Position, this.Source, this.Color, this.Rotation, this.Origin, this.Scale, SpriteEffects.None, 0); //SpriteBatch nesnemizin render işlemine son veriyoruz spriteBatch.End(); } kodların hepsini vermedim sadece gerekli blokları yazdım. Çünkü böylesi sizin için daha iyi XNA Game Studio'u açtığınızda karşınıza hazır kodlar gelecektir. Bütün kodu yümüyle kopyalayıp yazmak öğrenme açısından iyi değildir. Kodları yerine kendiniz ilk önceleri bakarak yazın ve "RUn" komutunu verip çalıştırın. Böylece kodu deneyip ne yapabildiğinizi görürsünüz. Zaten sonraları da değiştirmek ve geliştirmek isteyeceksiniz bu arada da belki yüzlerce hata mesajı alacaksınız ama sonunda anlayarak, deneyerek, görerek öğrenmiş olacaksınız. yazar: Caner DEMİRCİ (( devamı gelecek ... ))
Kaydol:
Kayıtlar (Atom)