Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
18
Cevap
34854
Tıklama
0
Öne Çıkarma
C ile yazılmış yılan oyunu
G
15 yıl
Er
Konu Sahibi

 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>

struct yilan{
int x,y;
};
int len=4;
int score=0;
int col=20,row=10;
char map[20][40];
int tamammi_devammi(struct yilan snake[]){
int i,k1=0,k2=0;
if(snake[0].x==0||snake[0].x==19||snake[0].y==0||snake[0].y==39){
k1=1;
}
for(i=1;i<len;i++){
if(snake[0].x==snake[i].x&&snake[0].y==snake[i].y){
k2=1;
break;
}
}
if(k1==1||k2==1) return 1;
else return 0;
}

void yemleme(){
srand(time(NULL));
row=rand()%18+1;
col=rand()%38+1;
}
void yem(char dizi[20][40],struct yilan snake[]){
if(snake[len-1].x==row&&snake[len-1].y==col){
snake[len].x=row;
snake[len].y=col;
len++;
score=score+10;
yemleme();
printf("\a");

}
}
void duvar(char dizi[20][40]){
int i,j;
for(i=0;i<20;i++){
if(i==0||i==19){
for(j=0;j<40;j++){
dizi[i][j]='=';
}
}
else{
dizi[i][0]='|';
for(j=1;j<39;j++){
dizi[i][j]=' ';
}
dizi[i][39]='|';
}

}
map[row][col]='x';
}
void ciz(char dizi[20][40]){
system("CLS");
printf("Score: %d\n",score);
int i,j;
for(i=0;i<20;i++){
for(j=0;j<40;j++){
printf("%c",dizi[i][j]);
}
printf("\n");
}

}
void baslangic(struct yilan yil[]){
yil[0].x=1;
yil[0].y=4;
yil[1].x=1;
yil[1].y=3;
yil[2].x=1;
yil[2].y=2;
yil[3].x=1;
yil[3].y=1;
}
void yilan (char dizi[20][40],struct yilan yil[]){
yem(map,yil);
int i;
for(i=0;i<len;i++){
dizi[yil[i].x][yil[i].y]='*';
}
}
void sag(struct yilan snake[],int uzunluk){
int i;
for(i=uzunluk-1;i>0;i--){
snake[i].x=snake[i-1].x;
snake[i].y=snake[i-1].y;
}
snake[0].y++;
}
void sol(struct yilan snake[],int uzunluk){
int i;
for(i=uzunluk-1;i>0;i--){
snake[i].x=snake[i-1].x;
snake[i].y=snake[i-1].y;
}
snake[0].y--;
}
void yukari(struct yilan snake[],int uzunluk){
int i;
for(i=uzunluk-1;i>0;i--){
snake[i].x=snake[i-1].x;
snake[i].y=snake[i-1].y;
}
snake[0].x--;
}
void asagi(struct yilan snake[],int uzunluk){
int i;
for(i=uzunluk-1;i>0;i--){
snake[i].x=snake[i-1].x;
snake[i].y=snake[i-1].y;
}
snake[0].x++;

}




int main(){

char right='d';
char left='a';
char up='w';
char down='s';
char yon;
long i;
int kontrol=0;
struct yilan snake[100];

duvar(map);
baslangic(snake);
yilan(map,snake);
ciz(map);

while(1){
yon=getch();
i=0;

if(yon==right){
while(i<100000){
if(i%2000==0){
if(tamammi_devammi(snake)){
ciz(map);
kontrol=1;
break;

}

sag(snake,len);
duvar(map);
yilan(map,snake);
ciz(map);
}
i++;
if(kbhit()) break;
}

}
else if(yon==left){
while(i<100000){
if(i%2000==0){
if(tamammi_devammi(snake)){
ciz(map);
kontrol=1;
break;
}
sol(snake,len);
duvar(map);
yilan(map,snake);
ciz(map);
}
i++;
if(kbhit()) break;
}
}
else if(yon==up){
while(i<100000){
if(i%2000==0){
if(tamammi_devammi(snake)){
ciz(map);
kontrol=1;
break;
}
yukari(snake,len);
duvar(map);
yilan(map,snake);
ciz(map);
}
i++;
if(kbhit()) break;
}
}
else if(yon==down){
while(i<100000){
if(i%2000==0){
if(tamammi_devammi(snake)){
kontrol=1;
ciz(map);
kontrol=1;
break;
}
asagi(snake,len);
duvar(map);
yilan(map,snake);
ciz(map);
}
i++;
if(kbhit()) break;
}
}
if(kontrol==1) break;


}



getch();
}

c ile yazdıığım yılan oyunu.ancak calisirken islemci kullanimi %40-50 civarında bu kodu nasıl daha verimli bir hale getirebilirim?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi gpost -- 8 Temmuz 2010; 16:18:37 >

K
15 yıl
Çavuş

Bence de ekranı silip yazması yoruyor işlemciyi çünkü printf fonksiyonu ağır bir fonksiyonhttp://letscoding.com/2011/02/12/snake-v2-0/ bu adreste bir örnek var bak istersen


Bu mesaja 1 cevap geldi.
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.