Zihin Geliştirme Merkezi

KOOLPA

Zihin Geliştirme Merkezi

 

c++ ile snake v1.1 ;)

 Programlama Katagorisinde ve  Diğer Forumunda Bulunan  c++ ile snake v1.1 ;) Konusunu Görüntülemektesiniz.=>//Kullanilan komutlarin bulundugu kutuphaneler tanimlaniyor #include <stdio.h> #include <conio.h> #include <graphics.h> #include <math.h> #include <dos.h> #include <stdlib.h> #include <complex.h> #include ...


Geri git   Zihin Geliştirme Merkezi > KooLpa Webmaster / Grafik / Programlama > Programlama > Diğer

Üye ol Bloglar Yardım Üye Listesi Ajanda Forumları Okundu Kabul Et

Cevapla

 

LinkBack Seçenekler Stil
Alt 06-01-2007, 01:37   #1 (permalink)
gca
KooLpa
 
gca - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Dec 2006
Mesajlar: 61
Tecrübe Puanı: 3 gca is on a distinguished road
Wink c++ ile snake v1.1 ;)


//Kullanilan komutlarin bulundugu kutuphaneler tanimlaniyor
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <dos.h>
#include <stdlib.h>
#include <complex.h>
#include <string.h>

//Tuslarin tanimi yapiliyor
#define sag 77
#define sol 75
#define yukari 72
#define asagi 80
#define cikis 27

struct Tyilan {
int x,y,adim,puan;
unsigned char
hak,buyukluk,uzunluk; } yilan[150];

struct Tyem {
int x,y; } yem;

struct Tduvar {
int sagx,sagy,sagy1,solx,soly,soly1,
ustx,usty,ustx1,altx,alty,altx1; } duvar;

unsigned char yon;
char tus;

/*================================================= ==*/
/*Karsilama ekrani*/
void baslangic(void)
{
const char *mesaj1 = "Deniz TURKAN";
const char *mesaj2 = "SnaKe V1.1";
int i;

for(i = getmaxx();i >= 100;i--)
{
if (i > ceil(getmaxx()/2) - 100)
setcolor(4); else setcolor(2);
circle(getmaxx()/2,getmaxy()/2 ,i);
}
setcolor(14);
outtextxy(getmaxx() / 2 - ((strlen(mesaj1)*8.18) / 2), getmaxy() / 2 + 10 ,mesaj1);
outtextxy(getmaxx() / 2 - ((strlen(mesaj2)*8.18) / 2), getmaxy() / 2 - 10 ,mesaj2);
i = 0;
while(!kbhit())
{
if (i < 255)
i += 1; else i = 0;
setrgbpalette(0,128,128,i);
}
setrgbpalette(0,0,0,0);
cleardevice();
}

/*================================================= ==*/
/*Gercek zamanli bekleme yapan procedure*/
void bekle(int sure)
{
int tutulan,hesaplanan;
struct time zaman;
gettime(&zaman);
tutulan = zaman.ti_hund;
do
{
gettime(&zaman);
hesaplanan = zaman.ti_hund;
}while(abs(hesaplanan - tutulan)<=sure);
}

/*================================================= ==*/
//Grafik modunu acmak veya kapatmak icin gerekli olan procedure
void grafik(char deger)
{
int gd,gm;
if (!deger)
{
gd = DETECT;
initgraph(&gd,&gm,"d:\\tc3\\bgi");
} else
closegraph();
}
/*================================================= ==*/
/*Yem yilan tarafindan yenildikten sonra yilanin bulundugu
koordinatlarin disinda herhangi bir yere yeniden yem atar.*/
void yemat(int renk , int buyukluk)
{
int i;
char sonuc;
randomize();
yem.x = 50 + random(getmaxx() - 50 );
yem.y = 50 + random(getmaxy() - 50 );

do
{
sonuc = 1;
for(i=0;i<=yilan[0].uzunluk;i++)
if((yilan<i> .x+5 >= yem.x-10)&&(yilan<i> .x+5 <= yem.x+13)&&(yilan<i> .y >= yem.y-15)&&(yilan<i> .y <= yem.y+10))
{
yem.x = 50 + random(getmaxx() - 50);
yem.y = 50 + random(getmaxy() - 50);
sonuc = 0;
}
}while(sonuc!=1);

for(i=1;i<=buyukluk;i++)
{
setcolor(1+random(renk));
circle(yem.x,yem.y,i);
}
}
/*================================================= ==*/
/*yilan tarafindan yenen yem'i zemin rengine boyar*/
void yemsil(int buyukluk)
{
int i;
for(i=1;i<=buyukluk;i++)
{
setcolor(getbkcolor());
circle(yem.x,yem.y,i);
}
}
/*================================================= ==*/
/*yilan ilk defa olusturuluyor*/
void yilan_yap(int x,int y,int buyukluk , int uzunluk,int hak)
{
int i;
for(i=0;i<=uzunluk;i++)
{
yilan<i> .x = x;
yilan<i> .y = y;
yilan<i> .adim = buyukluk + 2;
}
yilan[0].hak = hak;
yilan[0].puan = 0;
yilan[0].buyukluk = buyukluk;
yilan[0].uzunluk = uzunluk;
}

/*================================================= ==*/
/*yilan'in sonunu basina ekler silme isleminin gerceklesmesi icin*/
void ekle(void)
{
unsigned char i;
for(i = yilan[0].uzunluk;i >= 1; i--)
{
yilan<i> .x = yilan[i-1].x;
yilan<i> .y = yilan[i-1].y;
}
}
/*================================================= ==*/
/*yilan'i ekrana cizer*/
void yilan_yaz(int renk)
{
const char desen[8] = {0x27,0xBB,0x18,0x17,0xAB,0x5A,0xAA,0xAC};
int i;
for(i=1;i<=yilan[0].uzunluk-1;i++)
{
setfillstyle(USER_FILL,6);
setfillpattern(desen,6);
bar(yilan<i> .x,yilan<i> .y,yilan<i> .x+yilan[0].buyukluk,yilan<i> .y+yilan[0].buyukluk);
}
setfillstyle(1,renk);
bar(yilan[0].x,yilan[0].y,yilan[0].x+yilan[0].buyukluk,yilan[0].y+yilan[0].buyukluk);
setcolor(2);
rectangle(yilan[0].x,yilan[0].y,yilan[0].x+yilan[0].buyukluk,yilan[0].y+yilan[0].buyukluk);
}
/*================================================= ==*/
/*Cizilen yilan'i siler*/
void yilan_sil(void)
{
setfillstyle(1,getbkcolor());
bar(yilan[yilan[0].uzunluk].x,yilan[yilan[0].uzunluk].y,yilan[yilan[0].uzunluk].x+yilan[0].buyukluk,yilan[yilan[0].uzunluk].y+yilan[0].buyukluk);
}
/*================================================= ==*/
/*Hak ve puan durumunu ekrana basar*/
void sonuclar(void)
{
char *puan,*hak;
setfillstyle(1,4);
bar(2,2,50,11);
setcolor(10);
outtextxy(10,2,itoa(yilan[0].hak,hak,10));
outtextxy(11 + strlen(hak) * 8.14,2,"-");
outtextxy(11 + (strlen(hak)+strlen("-")) * 8.14,2,itoa(yilan[0].puan,puan,10));
}

/*================================================= ==*/
/*yilan'in kafasi kendine veya duvara carptigi zaman cagirilir*/
void carpisma(void)
{
int i, adimal = yilan[0].adim;
for(i=0;i <= yilan[0].uzunluk;i++)
yilan<i> .adim = 0;
sound(500);
bekle(1);
nosound();
yilan[0].hak -= 1;
yon = 0;
getch();
yilan[0].adim = adimal;
yilan[0].x = duvar.solx + yilan[0].buyukluk;
yilan[0].y = ceil((duvar.soly+duvar.soly1)/2);
sonuclar();
}
/*================================================= ==*/
/*yilanin kafasinin kendine carpip carpmadiginin kontrolunu yapar*/
void kendine_carptimi(int x,int y)
{
unsigned char i;
for(i = 1; i <= yilan[0].uzunluk; i++)
if ((x == yilan<i> .x)&&(y == yilan<i> .y))
carpisma();
}
/*================================================= ==*/
/*yilanin kafasinin yem'e carpip carpmadigininin kontrolu yapiliyor*/
void yeme_carptimi(int x,int y,int a , int b)
{
double uzaklik;
double uzakx,uzaky;
/*iki nokta arasinda ki uzaklik bulunuyor
bu iki nokta yem ve yilanin basidir*/
uzakx = ( (x + (yilan[0].buyukluk/2) ) - a);
uzaky = ( (y + (yilan[0].buyukluk/2) ) - b);
uzaklik = sqrt( (uzakx*uzakx) + (uzaky*uzaky) );
if(uzaklik <= 10)
{
yemsil(4);
sound(100);
bekle(1);
nosound();
yemat(15,4);
yilan[0].uzunluk += 1;
yilan[0].puan += 9;
sonuclar();
}
}

/*================================================= ==*/
/*Oyun tamamlandigi zaman cikacak olan ekran*/
void final(void)
{
const char *mesaj = "TEBRIKLER OYUNU BITIRDINIZ";
setfillstyle(8,8);
bar(1,1,getmaxx(),getmaxy());
setcolor(15);
rectangle(1,1,getmaxx()-2,getmaxy()-2);
setcolor(14);
outtextxy(ceil(getmaxx()/2)-strlen(mesaj)*4 , ceil(getmaxy()/2) ,mesaj);
getch();
grafik(-1);
exit(0);
}
/*================================================= ==*/
/*Duvar ve gecitler ciziliyor*/
void duvar_ciz(int aralik,unsigned char renk)
{
setcolor(renk);
//sol dikey duvar
line(1,1,1,getmaxy()/2-aralik);
line(1,getmaxy()/2+aralik,1,getmaxy());
duvar.solx = 1;
duvar.soly = getmaxy()/2-aralik;
duvar.soly1 = getmaxy()/2+aralik;
//alt yatay duvar
line(1,getmaxy(),getmaxx()/2-aralik,getmaxy());
line(getmaxx()/2+aralik,getmaxy(),getmaxx(),getmaxy());
duvar.altx = getmaxx()/2-aralik;
duvar.altx1 = getmaxx()/2+aralik;
duvar.alty = getmaxy();
//sag dikey duvar
line(getmaxx(),1,getmaxx(),getmaxy()/2-aralik);
line(getmaxx(),getmaxy()/2+aralik,getmaxx(),getmaxy());
duvar.sagx = getmaxx();
duvar.sagy = getmaxy()/2-aralik;
duvar.sagy1 = getmaxy()/2+aralik;
//ust yatay duvar
line(1,1,getmaxx()/2-aralik,1);
line(getmaxx()/2+aralik,1,getmaxx(),1);
duvar.ustx = getmaxx()/2-aralik;
duvar.ustx1 = getmaxx()/2+aralik;
duvar.usty = 1;
}
/*================================================= ==*/
/*yilan'in kafasinin duvara carpip carpmadiginin testi yapiliyor*/
void duvara_carptimi(int x,int y)
{
//Yilan gectilerden gecti mi ?
if ((x >= duvar.sagx)&&(y>=duvar.sagy)&&(y<=duvar.sagy1))
yilan[0].x = 1; else
if ((x <= duvar.solx)&&(y>=duvar.soly)&&(y<=duvar.soly1))
yilan[0].x = getmaxx(); else
if ((y <= duvar.usty)&&(x >= duvar.ustx)&&(x <= duvar.ustx1))
yilan[0].y = getmaxy(); else
if ((y >= duvar.alty)&&(x >= duvar.altx)&&(x <= duvar.altx1))
yilan[0].y = 1; else
//Gecitlerden gecmeyip herhangi bir duvara carpti mi ?
if ( (( x >= getmaxx() )|| (x <= 1 )) || (( y >= getmaxy() )|| (y <= 1 )) )
carpisma();
}

/*================================================= ==*/
int main(void)
{
randomize();
grafik(0);
baslangic();
setbkcolor(0);
setrgbpalette(0,128,128,8);
yilan_yap(200,240,5,10,3);
sonuclar();
yemat(15,4);
yon = 1;
do
{
ekle();
yilan_sil();
yilan_yaz(4);
duvar_ciz(50,15);
bekle(1);
//delay(50);

if (kbhit()) tus = getch();
if(yilan[0].hak > 0)
{
if (( tus == sag ) && (yon != 2)) yon = 1;
if (( tus == sol ) && (yon != 1)) yon = 2;
if (( tus == yukari) && (yon != 4)) yon = 3;
if (( tus == asagi ) && (yon != 3)) yon = 4;

if (yon == 1) yilan[0].x += yilan[0].adim;
if (yon == 2) yilan[0].x -= yilan[0].adim;
if (yon == 3) yilan[0].y -= yilan[0].adim;
if (yon == 4) yilan[0].y += yilan[0].adim;

if (yon != 0) kendine_carptimi(yilan[0].x,yilan[0].y);
yeme_carptimi(yilan[0].x,yilan[0].y,yem.x,yem.y);
duvara_carptimi(yilan[0].x,yilan[0].y);

/* 30 yem * 9 puan = 270 puan ise programi bitir */
if (yilan[0].puan >= 270) final();

}
}while(tus != cikis);
grafik(-1);
/* Azicik Reklam yapiyorum */
gotoxy(1,1);
cprintf("Programme : Snake V1.1");
gotoxy(1,2);
cprintf("Author : Deniz TURKAN");
gotoxy(1,3);
cprintf("e-mail : deniz_turkan@yahoo.com");
return 0;
}
gca isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usStumble this Post!Reddit!Google Bookmark this Post!Live Bookmark this Post!Propeller this post!
Alıntı ile Cevapla

Sponsor Linkler
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)

 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular

Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
snake vs snake (kobranın ögle yemegi) KöTü KeDi ŞeRaFeTTiN Hayvanlar Alemi 0 11-02-2007 05:43


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 12:05 .


Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

Gizlilik Politikası | KooLpa üyeleri onay gerektirmeksizin mesaj yazabilmektedir. KooLpa' da yasalara aykırı unsurlar bulursanız buraya yazınız. En kısa zamanda gereği yapılacaktır.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208