Visual Stüdio C++ ta Yılan Oyunu
Oyun w a s d  tuşları ile oynanır...


#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();
}



Yorumlar