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 ...
|
|||||||
| Üye ol | Bloglar | Yardım | Üye Listesi | Ajanda | Forumları Okundu Kabul Et |
|
|
#1 (permalink) |
|
KooLpa
![]() Üyelik tarihi: Dec 2006
Mesajlar: 61
Tecrübe Puanı: 3
![]() |
//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; } |
|
|
|
| Sponsor Linkler | |
|
|
|
![]() |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) |
|
| Seçenekler | |
| Stil | |
|
|
|
||||
| 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 |
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.