11 Aralık 2010

Sony PSP SDK

Sony PSP'ye C dilinde "homebrew"(ev yapımı) program/oyun yazabilmenizi sağlayan toolchain ve saz arkadaşlarını yedekledim.

SDK yazdım aslında tam olarak öyle değil, ps2dev.org sitesi uzun zamandır kapalı. Başka bir ayna adresinde hala gerekli dosyalar duruyordu ben de hepsini çekip belki o site de kapanır diye megaupload'a yükledim. Ev yapımı oyunlar yapmanız için gereken bütün kütüphaneler vs. dahil... Bilgisi olan arkadaşlar .svn klasörüne bakabilir.

PSP programlama ile ilgileniyorsanız:
http://www.psp-programming.com/tutorials/

Subversion ile çektiğim dosyalar: (Valla trunk'ın içinde ne varsa çektim :D

SDL/
SDL_gfx/
SDL_image/
SDL_mixer/
SDL_ttf/
TinyGL/
aalib/
binutils-psp/
bzip2/
cal3D/
cpplibs/
cppunit/
freetype/
google-perftools/
gxemul-psp/
jpeg/
libTremor/
libbulletml/
libctrl/
libdoc/
libmad/
libmikmod/
libogg/
libpng/
libpspvram/
libpthreadlite/
libvorbis/
lua/
microwindows/
mikmodlib/
nidattack/
ode/
openssl/
prxtool/
pspdis/
pspgl/
pspirkeyb/
psplibraries/
psplink/
psplinkusb/
psppacker/
pspsdk/
psptoolchain/
python/
sqlite/
tests/
zlib/
zziplib/

İndirmek için:
http://www.megaupload.com/?d=65X8G1KT

01 Aralık 2010

Basit C++ XOX oyunu.


#include <iostream>
using namespace std;
//field arrayimiz, XOX oyunundaki her 9 haneyi temsil ediyor. Her haneye bir numara verdik, oyuncu hareketlerini bu numaralara gore yapacak.
int field[9]={1,2,3,4,5,6,7,8,9};
//asagidaki arrayin amaci sadece sirasi gelen veya kazanan oyuncunun adini soylerken bize kolaylik saglamak.
char choice[2]={'O','X'};
//main'deki donguden cikmamizi saglayarak oyunumuzu bitiren boolean
bool gameOver=false;

void input(int step){
int move;
while(1){
//hamle sirasi tek ise X, cift ise O hamle yapar.
cout<<"Player "<<choice[step%2]<<", make your move:";
cin>>move;
//oyuncu onceden hamle yapilmis veya alakasiz bir yere giderse hata yazdirip dongunun basina aliyoruz ve butun girdi islemini tekrar yaptiriyoruz.
if(field[move-1]==0||field[move-1]==-1||move<1||move>9)
cout<<"You can't select that field!\n";
//oyuncu yanlis bir numara girmedi, donguden cikaralim.
else
break;
}
//integer olan field arrayinda X hamle yaptiysa hanenin degeri -1, O hamle yaptiysa da 0(sifir) oluyor.
field[move-1]=-1*(step%2);
}

//oyun kagidimizin goruntusunu cizdiriyoruz. 3 satir ve 3 sutun icin iki adet for dongusu kullandim.
void draw(){
int place=0;
for(int row=1; row<=3; row++){
for(int col=1; col<=3; col++){
//arraydaki bir hanenin degeri -1 ise X, 0 ise O, baska bir sey ise oldugu gibi yazdiriyoruz; zaten hane numaralarini en basta yazmistik.
if(field[place]==-1)
cout<<"X";
else if(field[place]==0)
cout<<"O";
else
cout<<field[place];
place++;
}
cout<<endl;
}
}

//bu fonksiyonla field arrayimizdaki 3 hanenin ayni olup olmadigini kontrol ediyoruz
bool check(int a, int b, int c){
if(field[a]==field[b]&&field[b]==field[c])
return true;
else
return false;
}

void checkTable(){
//once yatay satirlari kontrol ediyoruz
for(int i=0; i<=6; i+=3){
if(check(i,i+1,i+2)){
gameOver=true;
draw();
cout<<choice[field[i]*-1]<<" wins!\n";
break;
}
}
//sonra dikey sutunları kontrol ettiriyoruz
for(int i=0; i<=2; i++){
if(check(i,i+3,i+6)){
gameOver=true;
draw();
cout<<choice[field[i]*-1]<<" wins!\n";
break;
}
}
//en son da caprazlama kontrol ediyoruz
if(check(0,4,8)||check(2,4,6)){
gameOver=true;
draw();
cout<<choice[field[4]*-1]<<" wins!\n";
}
}

int main(){
//tablomuzda 9 hane oldugundan en fazla 9 adim atilabilir, dongude her adimdan once kazanan var mi diye kontrol ettiriyoruz. Eger kazanan varsa oyun bitiyor. Yoksa dongugen cikana kadar devam ediyor ve donguden kazanan olmadan cikarsak oyun berabere bitiyor.
for(int step=1; step<=9; step++){
checkTable();
if(gameOver)
return 0;
draw();
input(step);
}
draw();
cout<<"DRAW!\n";
return 0;
}

http://codetidy.com/319