C++ İpuçları – Typedef
typedef
Typedef keyword'ünün amacı, bilinen veri tiplerine yeni isimler vermektir. C syntax'ında (mesela c standart library) typedef ile tanımlanan tipler _t ile biter. (ör: size_t, time_t) Eğer değişkenlerinizin isimlerinin yanında tiplerinin isimlerinin de açıklayıcı olmasını istiyorsanız typedef kullanmalısınız.
typedef int player_port; //player_port isminde int türünde yeni bir tip oluştu.
typedef int wave_monster_count; //wave_monster_count isminde int türünde yeni bir tip oluştu
player_port stream_port; //player_port tipinde stream_port isminde yeni bir değişken oluştu.
wave_monster_count last_wave; //wave_monster_count tipinde last_wave isminde yeni bir değişken oluştu
void SendPacket(player_port tmp_port) //player_port ve wave_monster_count tiplerinin ikiside integer olmasına rağmen bu fonksiyon açıkça gösteriyor ki bu iki
{ //tip birbirinden farklı ve uyumsuz tiplerdir. Ancak siz bu fonksiyona parametre olarak wave_monster_count tipinden bir değişken de gönderebilirsiniz.
SayHi(tmp_port); //Çünkü bu 2 farklı tip temelde aynı data tipindendir. Böyle bir ayrıma gidilmesinin sebebi ise programcıya bu iki tipin kullanımının birbirinden
} //farklı olduğunu belirtmek ve programcının parametre göndermesi gereken yerlere uygun tipte değişkenler göndermesini sağlamaktır.
Compound tiplerin tanımlanmasını ve kullanılmasını basitleştirmede de kullanılırlar.
struct Enemy
{
int max_health;
int damage;
int armor;};
//Yukarıdaki bir struct tanımlamasından sonra bu türde bir değişken oluşturabilmek için aşağıda ki şekilde bir kullanım gereklidir:
struct Enemy bug_type_1; //c++ ta isterseniz struct keyword'ünü burada kullanmayabilirsiniz.
//Eğer c dilinde de c++ gibi bir kullanım isterseniz typedef ile struct keyword'ünden kurtulabilirsiniz.
typedef struct Enemy enemy_t;
enemy_t new_enemy;
//yukarıdaki gibi bir typedef kullanımına gidebileceğiniz gibi aşağıdaki kullanım daha çok tercih edilen yöntemdir:
typedef struct Enemy
{
int max_health;
int damage;
int armor;
}enemy_t; //veya:
typedef struct
{
int max_health;
int damage;
int armor;
}enemy_t;
Ayrıca type cast işleminde de typedef kullanabilirsiniz:
http://en.wikipedia.org/wiki/Typedef
Construct 2D

Scirra firması, çıkarttığı Construct 2d game maker uygulaması ile hiç kod yazmadan oyun yapmanızı sağlıyor. Windows işletim işletim sistemlerinde kullanabileceğiniz bu uygulama ile ios,android, facebook, chrome web store, pc, html5 ve windows mobile platformlarında oyununuzu yayınlayabiliyorsunuz. Kullanımı oldukça basit. Biraz zaman ayırdıktan sonra ortaya birşeyler çıkarabildiğinizi göreceksiniz. Web sitesine buradan bir göz atın derim. Sitede basit eğitimler var. Ücretsiz olarak indirip deneyebilirsiniz ve ücretlendirme hakkında websitelerinden detaylı bilgi edinebilirsiniz.
Boşverme

Bazen meslektaşınız sayılabilecek insanların ya da sizinle aynı konu üzerine tutku ortaklığı bulunan insanların bu alanlarda başardıklarını anlattıkları kitapları, öyküleri, köşe yazılarını okuduğunuzda veya onlar hakkında yapılan yazılı veya görsel medya unsurlarına dikkat kesildiğinizde büyük hayranlık duyabilir, anlatılması - açıklanması zor duygulara kapılabilirsiniz. Bu duygu, hissiyat karmaşası içerisinde içinizde bir burukluk bir eksiklik hissedebilirsiniz. Ben neden böyle başarılı değilim, ben neden bu fırsatları kaçırdım diye cevaplanması zor ve sizi daha derin kör kuyulara atacak, beyniniz, bilinçaltınız ya da vicdanınız tarafından üretilen sorulara maruz kaldığınızı fark edebilirsiniz. Bu sorularla boğuşurken daha fazla zaman kaybettiğinizin daha fazla fırsatlar kaçırdığınızın ve var olan -az da olsa- enerjinizin daha hızlı bir şekilde tükendiğinin farkına varmalısınız. O alanda, o meslek grubunda olmanız, büyük bir oranda sizinde aynı meraka, aynı heyacana ve aynı araştırmacı ruha bir zamanlar sahip olduğunuzun ispatı olduğunu aklınıza getirmelisiniz ve şu soruları sormalısınız: Bende değişen ne? Ne oldu da ben merak etmekten vazgeçtim? Öylesine karanlık, pis, acıklı ve aşılması güç birşey de değil, birşeyler olmuş olmalı ki, bir zamanlar ilgi duyduğu konu hakkında ölesiye araştırma yapan, yeni bilgiler edinme heyecanından geceleri kıvranan, uyuyamayan, zamanını boşa geçirdiğini düşünüp her anında birşeyler okuyan o insan gitti de, yerine az biraz araştırmadan sonra konunun büyüsünü ve ilginçliğini kaybettiğini düşünmeye başlayan, tembel, yaşıyoruz cevabı ile yetinen, paspal insan geldi? Ben söyleyeyim mi? Hiç. Hem de bayağı büyük bir hiç. Hiçbirşey olmadı. Güneş hala doğudan doğup batıdan batıyor. Kuşlar hala ötüyorlar, nesilleri yok olmadı. Hala dünyada büyükçe bir alan yeşillik. İnsanlar tarihin başlangıcından beri olduğu gibi hala kaos içinde ve hala biryerlere koşturuyorlar. Arılar hala çiçekten çiçeğe polen taşıyorlar. Hala nefes alabiliyoruz. Dünya da hala karanlık işler dönüyor. Savaşlar hala var. Bazı yerlerde bazı insanlar barış anlaşmaları yapıyorlar. Bazı insanlar hala bazılarının "yaşama" anahtarını ellerinde bulunduruyorlar. Bazıları hala birilerini öldürmeye uğraşırken bazıları da kimilerinin umutlarını kestikleri yaşamları devam ettirmeye azimle çalışıyorlar. Çocuklar hala bayramlarda şeker topluyorlar. Dilenciler hala sokaklarda. Hırsızlar hala en iyi yaptıkları işi yapıyorlar. Hala yağmur yağıyor. Hala bazıları, bulundukları "kafeslerden" kafalarını çıkartıp hayatı anlamaya çalışmayı başarabiliyor. Hala bazıları farklı. Hala bazıları daha eşit. Hala hergün onlarca kadın öldürülüyor. Ortadoğu hala karışık. Hala nükleer enerji tartışılıyor. Bazıları, çok ama çok küçük oranda da olsa, binlerce kalabalığın içerisinde, diğerlerinden farklı olarak sokaklarda kafalarını kaldırma cesaretini kendilerinde bulup gökyüzüne bakabiliyorlar. Yani dünyada alışılagelmişin dışında olan, seni senden alacak, seni tamamen başka insan yapacak bir gelişme yaşanmadı. Sende olan biten birşeyler var demek ki, değil mi? Hadi onu da ben söyleyeyim. Sen çok etkilendin senden farklı olanlardan. Sen normal olabilmenin sancısıyla kıvranırken, varoluşundan kaynaklanan anormalliğin hastalık olduğunu zannettin. Normalleşmek için senden farklı olan her insanı normal farzederek onlar gibi davranmaya çalıştın, onları örnek aldın. Din, dil, ırk, renk, cinsiyet ayrımı gözetmeden bütün insanlığın sorunlarını kendine dert eden, üretken insan bu yüzden gitti ve yerine bu yüzden sadece kendi ihtiyaçları için yaşayan bir insancık geldi. Eski senin, hale yapay sen içerisinde bir yerlerde, gerçek sen olarak, eski bir şaman tanrısının yaptığı etkili bir büyü gibi bir boşvermişlik büyüsü sayesinde, seninde görebildiğin bir mühür ile kapalı kaldığını sen de biliyorsun. Şunu da bilmelisin, o büyüyü bozacak tılsım, asa, enerji, güç, yine senin içinde. Evet, bu yazının tamamını okumaya sabredip okuduysan sende küfür ederek diyeceksin ki, çözümü canımdan daha yakın bir yerde bulunan problemim için bu kadar laf salatısını mı okudum şimdi diye. Eski halindeki gibi davranmaya başlamalısın. Sadece sabırdan güç alarak. Sabredeceksin eski sen olabilmek uğruna. Dünya, sadece kendi dertlerimizle dertlenebilerek, sadece kendi dertlerimizi çözerek birşeyleri değiştirebilmek için çok büyük. Tüm insanlığın dertlerini dert edinmelisin, tüm canlıları dert edinmelisin, tüm dünyayı hatta tüm evreni dert edinmelisin. Hayat, dünyadaki tüm insanların egosunun toplamından daha büyük. O yüzden sadece kendine iyi olan için değil, herşeye rağmen çoğunluğun iyiliği için savaşmalısın. Gelecek sadece senin değil, gelecekte sadece sen olmayacaksın. Bir topluluk olarak yaşamayı becerebildiğimiz sürece sende gelecekteki o topluluğun bir parçası olacaksın. O yüzden sen sen ol, eski sen ol. Bir an önce. Şu an ile bir an sonrası arasında bir yerlerde bu fırsatı kaçırabilirsin. Sen sen ol, insan ol.
Hadi kal sağlıcakla.
Hasan Bozok
error LNK2001: unresolved external symbol
If you are trying to use static variables or static functions as members of a class, you may see the error in the title in your first try. That is probably you are forgetting to define or implementing it. If you want to use static variables in classes in c++ you have to define and initialize them correctly. See the code below:
Header File:
#ifndef SQUARE_H
#define SQUARE_H
#include <iostream>
using namespace std;
class Asd
{
public:
static int ReturnSquare(); //define static function prototype inside the class
private:
static int data; //define static variable inside the class. it does not matter if it is private or public, because it is static.
};
int Asd::data = 5; //initialize static member variable outside the class but in the same header file. Attention! static keyword is not used in this line. see ?
int Asd::ReturnSquare() // if you want you can also write function body inside the class. Attention! static keyword is not used in this line. see ?
{
return data * data;
}
#endif
Source File
#include "Square.h"
int main()
{
cout<<Asd::ReturnSquare()<<endl;
return 0;
}
Full HD Duvar Kağıtlarım
Şimdiye dek masaüstümü renklendiren birbirinden güzel 1920x1080 çözünürlükte duvar kağıtları. Umarım içlerinden beğendikleriniz çıkar:
Selection Sort – Seçimli Sıralama

Ne zaman yaptığımı hatırlamadığım bir selection sort örnek uygulaması. Sanırım 6 - 7 yıl önce yazmışım. Kod içerisindeki yorumlar ile ne işler yapıldığını elimden geldiğince anlatmaya çalıştım. Yorum yazarak soru sormaktan çekinmeyin eğer sorunuz olursa. Yazının en sonunda direk download edebilmeniz için kaynak kodlarıda veriyorum. Birazcık güncelleyip paylaşıyorum belki birisinin işine yarar.
selection_sort.h
#include #include #include #include #define NUMBER_COUNT 100 #define MAX_RAND_NUMBER 25000 #define PRINT_INTERVAL 10000 #define WRITE_LOG 1 using namespace std; void SortArrayAsc(int *); void SortArrayDesc(int *); void PrintArray(int *); void FillArrayWithRandomNumbers(int *);
selection_sort.cpp
/*Bu program n adet elemanlı sıralanmamış bir integer diziyi selection sort algoritması ile sıralar
*
*Basitçe program şu şekilde çalışır: selection_sort.h header dosyasında belirtile NUMBER_COUNT değişkeninin değeri kadar büyüklükte bir dizi oluşturup içerisini
*rastgele sayılarla doldurur ve büyükten küçüğe ya da küçükten büyüğe selection algoritması ile sıralar.
*
*
########################################################## CODING FOREVER - HASAN BOZOK ##########################################################
*/
#include "selection_sort.h"
int main()
{
int *p; //diziye işaret edecek olan işaretçi
time_t start; //bir olayın başlangıç zamanını tutmak için time_t tipinden start değişkeni
bool keepGoing = false; //programın arada bizden komut beklemesini sağlayarak program çıktısına göz atma şansı bulmamızı sağlayacak.
p = (int*) malloc(sizeof(int) * NUMBER_COUNT); //malloc ile NUMBER_COUNT boyutunda bir dizi oluşturduk ve p işaretçisine atadık.
//dizi içerisini rastgele sayılarla doldur ve bu işlem ne kadar zaman sürmüş yazdır.
cout<<"Generating random numbers..."<<endl;
start = time(0);
FillArrayWithRandomNumbers(p);
cout<<NUMBER_COUNT<<" random number generation took "<<(float)(time(0)-start)<<" seconds"<<endl; cin>>keepGoing;
//sıralı halde olmayan ham diziyi yazdır ve yazma işleminin ne kadar sürdüğüne bak
start = time(0);
PrintArray(p);
cout<<"Displaying array took "<<(float)(time(0)-start)<<" seconds"<<endl; cin>>keepGoing;
//Diziyi küçükten büyüğe sırala ve sıralama işleminin ne kadar sürdüğüne bak
cout<<"Sorting "<<NUMBER_COUNT<<" numbers with selection sort algorithm asc..."<<endl;
start = time(0);
SortArrayAsc(p);
cout<<"Sorting took "<<(float)(time(0) - start)<<" seconds"<<endl; cin>>keepGoing;
//sıralı diziyi yazdır
start = time(0);
PrintArray(p);
cout<<"Displaying array took "<<(float)(time(0)-start)<<" seconds"<<endl; cin>>keepGoing;
//Büyükten küçüğe sırala
cout<<"Sorting "<<NUMBER_COUNT<<" numbers with selection sort algorithm desc..."<<endl;
start = time(0);
SortArrayDesc(p);
cout<<"Sorting took "<<(float)(time(0) - start)<<" seconds"<<endl; cin>>keepGoing;
//diziyi yazdır
start = time(0);
PrintArray(p);
cout<<"Displaying array took "<<(float)(time(0)-start)<<" seconds"<<endl;
return 0;
}
void SortArrayAsc(int *p)
{
unsigned long i=0,j=0;
int tmp=0;
for(i=0 ; i<NUMBER_COUNT - 1 ; i++) //dizinin son kalan elemanına bakmaya gerek yok çünkü aşağıdaki işlemlerden sonra o zaten olması gereken yerde olmuş olacak.
{
for(j=i;j<NUMBER_COUNT;j++) { if(p[i] > p[j])
{
tmp=p[i]; //değişkenleri yer değiştirdiğimiz kısım
p[i]=p[j];
p[j]=tmp;
}
}
if(i % 100 == 0)
cout<<i<<" - "<<NUMBER_COUNT<<endl;
}
return ;
}
void SortArrayDesc(int *p)
{
unsigned long i=0,j=0;
int tmp=0;
for(i=0;i<NUMBER_COUNT;i++)
{
for(j=i;j<NUMBER_COUNT;j++)
{
if(p[i] < p[j])
{
tmp=p[i]; //swapping part
p[i]=p[j];
p[j]=tmp;
}
}
}
return ;
}
void PrintArray(int *p)
{
unsigned long i=0;
//print with PRINT_INTERVAL parameter
for(i=0;i<NUMBER_COUNT;i++)
cout<<i<<". "<<p[i]<<endl;
return ;
}
void FillArrayWithRandomNumbers(int *p)
{
unsigned long i=0;
srand(time(NULL));
for(i=0;i<NUMBER_COUNT;i++)
{
p[i] = rand() % MAX_RAND_NUMBER;
}
return ;
}
kaynak kodları buradan indirebilirsiniz: indir
failure during conversion to COFF: file invalid or corrupt
If you encounter with this error in visual studio 2010 : "failure during conversion to COFF: file invalid or corrupt" the solution is so simple. Just follow these steps :
Open Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking -> "No (/INCREMENTAL:NO)
If these steps don't work then install visual studio 2012 SP1. Thats it
Pixlr.com
Gerçekten mükemmel, çok kullanışlı, çok fazla özelliğe sahip online resim editörü. Kesinlikle deneyin derim: http://pixlr.com/editor/
C++ sabit sayıların tipine nasıl karar verir?

Yazdığınız program içerisinde tanımladığınız değişkenlerin tipini belirterek derleyiciye o değişkenin ne tip bir değişken olduğunu belirtirsiniz. int a = 15; gibi. Peki program içerisinde herhangi bir değişkende tutmadan direk kullandığınız sabit sayıların tipine c++ nasıl karar verir?
Oyun Geliştiriciler İçin Asset Madenleri

Indie oyun geliştiriciler, özellikle prototipleme yaparken çeşitli oyun assetlerine ihtiyaç duyarlar. Hem projenin gidişatını görmek hem ihtiyaç olabilecek başka kontroller olup olmadığını görebilmek için prototipleme aşamasında asset kullanmak önemlidir. Çevre modelleri, animasyonlu karakterler, texture'lar, sprite'lar gibi assetlere sahip olmak, hem geliştiriciye projesinin biryerlere gittiğini gösterme hemde motive etme anlamında gerçekten çok önemlidir. Eğer sizde bir indie oyun geliştirici olarak böyle asset'lere ihtiyaç duyuyorsanız aşağıdaki onlarca linki inceleyebilirsiniz:
Ücretsiz :
- http://www.3dvalley.com/__________(3d)
- http://www.3dsmodels.com/__________(3d)
- http://3dmagicmodels.com/__________(3d)











































