Önceki başlık :: Sonraki başlık |
Yazar |
Mesaj |
Utku7tepe
Kayıt: Nov 26, 2005 Mesajlar: 6
|
Tarih: Tue Nov 29, 2005 10:09 pm Mesaj konusu: Basit bir C++ oyunu ve yardım |
|
|
/*C++ da basit bir oyun yazdım.
Zaten yazabileceğim oyunlarda bu kadar.:=)
Sadece bu işe çok meraklıyım ve kendimi geliştirmek istiyorum:)
Benim kodla ilgili sormak istedigim bir kaç soru var.Mesela ben oyunu döngü içinde yaptım dolayısyla her halede ekran kayıyor .Ben boardumun sabit durmasını istiyorum.Napabilirm?Mesela bu kodu üzerine grafik tasarlamak için neler gerekli.?(çok abartı bir şey değil mesela X ler mavi yuvarlaklar olsun O larda kırmızı)
Bir de bu işi iyi bilen arklar koodu incelerlersetavsiyelerini büyüyk bir zevkle dinlerim:)*/
PS:oyunu bilmeyenler için.Bu hedef 4 diye satılan oyun.Oyun mekanik bir oyun olduug için yer çekimi var.Taşı bıraktıgın sütunn en altına düşüyor.+ tane seri yapan ik oyuncu herhangi bir yönde oyunu kazanır.)
*/
//------------------------------------------------------------------------------
//The game line 4
//The aim is having 4 "X" or "O" vertically,horizantionally,diagonal together
//26.11.2005
//UK
//------------------------------------------------------------------------------
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
void game();
bool menu();
#define ROW 7
#define COL 8
class line4
{
public:
void print();//print the board
int check1(int);//Checks the line is empty or not
void placeX(int,int);//Place X
void placeO(int,int);//Place O
bool checkv();//check the game vertical
bool checkh();//check the game horizantal
bool checkd1();//check the game in / direction
bool checkd2();//check the game in \ direction
void fill();//fill the board with0s.Create a new board
bool finish();//
private:
int board[ROW][COL];
};
void line4::print()
{
for(int c=0; c<COL; c++)
cout<<" "<<c<<" ";
cout<<endl;
for(int a=0; a<ROW; a++)
{
for(int b=0; b<COL; b++)
{
if(board[a][b]==0)
cout<<" . ";
if(board[a][b]==1)
cout<<" X ";
if(board[a][b]==2)
cout<<" O ";
}cout<<endl;
}
}
void line4::fill()
{
for(int a=0; a<ROW; a++)
{
for(int b=0; b<COL; b++)
board[a][b]=0;
}
}
bool line4::checkh()
{
for(int d=1; d<=2; d++)
{
for(int a=ROW; a>-1; a--)
{
for(int b=COL; b>-1; b--)
if(board[a][b]==d && board[a][b-1]==d && board[a][b-2]==d && board[a][b-3]==d)
{
return true;
}
}
}
return false;
}
bool line4::checkv()
{
for(int d=1; d<=2; d++)
{
for(int a=ROW; a>-1; a--)
{
for(int b=COL; b>-1; b--)
if(board[a][b]==d && board[a-1][b]==d && board[a-2][b]==d && board[a-3][b]==d)
{
return true;
}
}
}
return false;
}
int line4::check1(int y)
{
int x=ROW-1;
if(board[0][y]!=0)
return -1;
while(board[x][y]!=0)
{
x--;
}
return x;
}
void line4::placeX(int x,int y)
{
board[x][y]=1;
}
void line4::placeO(int x,int y)
{
board[x][y]=2;
}
bool line4::finish()
{
if(checkh()==true)
return true;
if(checkv()==true)
return true;
if(checkd1()==true)
return true;
if(checkd2()==true)
return true;
return false;
}
bool line4::checkd1()
{
for(int d=1; d<=2; d++)
{
for(int a=0; a<ROW ; a++)
for(int b=0; b<COL ;b++)
{
if(board[a][b]==d && board[a-1][b+1]==d && board[a-2][b+2] && board[a-3][b+3]==d)
return true;
}
}
return false;
}
bool line4::checkd2()
{
for(int d=1; d<=2; d++)
{
for(int a=0; a<ROW ; a++)
for(int b=0; b<COL ;b++)
{
if(board[a][b]==d && board[a-1][b-1]==d && board[a-2][b-2] && board[a-3][b-3]==d)
return true;
}
}
return false;
}
int main()
{
while(menu()!=false);
return 0;
}
void game()
{
line4 u;
int turn=0;
int x;
u.fill();
u.print();
while(u.finish()==false)
{
if(turn%2==0 && u.finish()==false)
{
cout<<"Player 1 Enter the column number:";
cin>>x;
if(u.check1(x)==-1)
{
cout<<"Please enter another column";
cin>>x;
turn=turn+2;
}
else
{
u.placeX(u.check1(x),x);
u.print();
turn=turn+1;
}
}
if(turn%2==1 && u.finish()==false)
{
cout<<"Player 2 Enter the column number:";
cin>>x;
if(u.check1(x)==-1)
{
cout<<"Please enter another column";
cin>>x;
turn=turn+2;
}
else
{
u.placeO(u.check1(x),x);
u.print();
turn=turn+1;
}
}
}
if(turn%2==1)
cout<<"PLAYER 1 WINS!!!\n";
else
cout<<"PALYER 2 WINS!!!\n";
}
bool menu()
{
int x;
cout<<"--------------------------------------------\n";
cout<<"--------------------------------------------\n";
cout<<"--------------------------------------------\n";
cout<<"-----------LL I N N EEE 4 -----------\n";
cout<<"-----------LL I NN N E 4 ----------\n";
cout<<"-----------LL I N N N EEE 4 ----------\n";
cout<<"-----------LL I N NN E 4444--------\n";
cout<<"-----------LLLL I N N EEE 4 ----------\n";
cout<<"--------------------------------------------\n";
cout<<"--------------------------------------------\n";
cout<<"--------------------------------------------\n";
cout<<"To PLAY the game press 1:\n";
cout<<"For HELP press 2\n";
cout<<"To EXIT press -1\n";
cin>>x;
switch(x)
{
case 1:
game();
return true;
case 2:
cout<<"The player you makes 4 lines in any direction";
cout<<"\nwins the game.When you select the column the ";
cout<<"\nelement falls to the blank place in that column.\n";
return true;
case -1:
return false;
}
return true;
} |
|
Başa dön |
|
|
sevdalinka
Kayıt: Oct 15, 2005 Mesajlar: 25 Nereden: İstanbul / Şişli
|
Tarih: Wed Nov 30, 2005 12:28 pm Mesaj konusu: |
|
|
Oyun konsol ekranında oynandığı için her güncellemede ( hamlede ) ekran yenilenir , çünkü matrisi yeniden yazıyorsun.Yani o sorunu konsol ekranında çözmenin imkanı yok.Normal oyunlarda da devamlı yenileme olur.Yanlız ortlama saniyede 20 defa ekran yenilenme olduğu için sayfanın değiştiğini anlamazsın. X ve O ların farklı renkte görünmesini istiyorsan hiç kullanmadım ama font engine türü bir kütüphane kullan , tahminim orada ekrana renkli yazı yazdırmak için ihtiyaç duyacağın komutlar vardır. |
|
Başa dön |
|
|
Autostic
Kayıt: May 23, 2005 Mesajlar: 70 Nereden: İzmir
|
Tarih: Wed Nov 30, 2005 3:48 pm Mesaj konusu: Link lazım |
|
|
Bunu PS için nasıl derliyorsun bunu derleme ve deneme araçlarının linklerini verirmisin. |
|
Başa dön |
|
|
Nomax
Kayıt: Jan 24, 2003 Mesajlar: 1134 Nereden: Bakırköyden.Yeni taşındık da...
|
Tarih: Wed Nov 30, 2005 4:39 pm Mesaj konusu: |
|
|
Bu kodları yazan sen misin?
//26.11.2005
//UK
UK united kingdom olabilir mi? |
|
Başa dön |
|
|
TheCotanak
Kayıt: Sep 03, 2003 Mesajlar: 921 Nereden: Istanbul
|
Tarih: Wed Nov 30, 2005 5:16 pm Mesaj konusu: Re: Link lazım |
|
|
Autostic demiş ki: |
Bunu PS için nasıl derliyorsun bunu derleme ve deneme araçlarının linklerini verirmisin. |
PS icin derlemiyor ki sen yanlis okumussun..
Ps, bir nevi 'not:' anlamina gelir. |
|
Başa dön |
|
|
Nomax
Kayıt: Jan 24, 2003 Mesajlar: 1134 Nereden: Bakırköyden.Yeni taşındık da...
|
Tarih: Wed Nov 30, 2005 5:54 pm Mesaj konusu: |
|
|
Konu dışı olacak ama açılımı neydi? Bir yerde Post Scriptum diye birşey okumuştum ama yanlış da olabilir... |
|
Başa dön |
|
|
Ragnor
Kayıt: Jan 26, 2003 Mesajlar: 218 Nereden: Bursa
|
Tarih: Wed Nov 30, 2005 6:03 pm Mesaj konusu: |
|
|
Evet post scriptum.
Ayrıca sanırım arkadaş konsol olayına takıldı. Oda komut satırı işte. Linuxçular falan konsol diyor ona . Oyun yapımı gibi konularda bazen karışabiliyor bunlar . |
|
Başa dön |
|
|
Autostic
Kayıt: May 23, 2005 Mesajlar: 70 Nereden: İzmir
|
Tarih: Wed Nov 30, 2005 6:55 pm Mesaj konusu: |
|
|
Arkadaşlar TheCotanak yazdıktan sonra dedim konu açığa kavuştu olay benim hızlı okumam, bide yazan arkadaşın "Not:" türkçesi yerine "PS:" kullanmış olması, ha ona bişey dediğim yok onuda yanlış anlamasın. Ama n00b yerine de koymayın. Bu arada bende LINUXÇUYUM, |
|
Başa dön |
|
|
Utku7tepe
Kayıt: Nov 26, 2005 Mesajlar: 6
|
Tarih: Wed Nov 30, 2005 9:08 pm Mesaj konusu: |
|
|
Nomax demiş ki: |
Bu kodları yazan sen misin?
//26.11.2005
//UK
UK united kingdom olabilir mi? |
evet kodu yaan benim:) İsmimin baş harflerinin kısaltması |
|
Başa dön |
|
|
Utku7tepe
Kayıt: Nov 26, 2005 Mesajlar: 6
|
Tarih: Wed Nov 30, 2005 9:12 pm Mesaj konusu: Re: Link lazım |
|
|
Autostic demiş ki: |
Bunu PS için nasıl derliyorsun bunu derleme ve deneme araçlarının linklerini verirmisin. |
Ben bu kodu visual Studio 6.0 C++ da yazdım orada dirak compile ediyorum. |
|
Başa dön |
|
|
|