Selamlar bugün sizlerle C# ile yemsiz yılan oyunu yapacağız.


Selamlar bugün sizlerle C# ile yılan oyunu yapacağız.
Bu yılan oyunumuzda amacımız yılanı etrafta gezdirme olacak, yemek yiyip büyümeyi eklemeden sadece 5yıldız uzunluğunda bir yılan yapmış olacağız. Size bunu konsol ortamında nasıl yapılacağını göstereceğiz. Hadi şimdi hep beraber bakalım.

>>>Kod
>>>Yazma
>>>Zamanı 

using System;
using System.Threading;

class MainClass {
  public static void Main (string[] args) {
    
    //baslangic 
    char ch;

    //5 yıldız uzunluğunda olsun dedik, o yüzden böyle yaptık.
    int n = 5;

    //Burada yılanımız için dizilerimizi oluşturduk
    //Bunlar üzerinden ilerleyeceğiz oyunda
    int[] yilanX = new int[5];
    int[] yilanY = new int[5];

    //Burada ilk baştaki yerleştirmeleri yaptık.
    //Teker teker yılanımızı oluşturan yıldızlarımızı yerleştiriyoruz.
    for(int i=0; i<5; i++){
      yilanX[i] = 20;
      yilanY[i] = 20 + i;
    }
    
    //baslangic
    Console.CursorVisible = false;
    //Burada artık yerleştirme yaptığmız yıldızları ekranda göstereceğiz.
    for(int i=0; i<n; i++){
      //Imleci oraya aldık şimdi
      Console.SetCursorPosition(yilanX[i],yilanY[i]);
      //Şimdi de yazdırdık.
      Console.Write("*");
    }
   
   //Kenarları belirliyoruz burada da, alt ve üst kısımları yazdıralım.
    for(int i=8; i<62; i++){
      Console.SetCursorPosition(i,7);
      Console.Write("_");
      Console.SetCursorPosition(i,30);
      Console.Write("_");
    }
    //Şimdi de sağ ve sol taraftakileri yazdıralım beraber.
    for(int i=8; i<31; i++){
      Console.SetCursorPosition(8,i);
      Console.Write("|"); //Bunun yerine başka bişeyde kullanabiliriz.
      //Ben kendim seçtim böyle olmasını.
      Console.SetCursorPosition(62,i);
      Console.Write("|");
    }

    //deger okuyoruz ilk, butona basilmasini bekliyoruz.
    ch = Console.ReadKey(true).KeyChar;

    //while dongusune giriyoruz.
    while(true){
      
      //alt bolumde duvar siliniyor en altta takilinca, geri acmak icin.
      for(int j=9; j<61; j++){
        Console.SetCursorPosition(j,30);
        Console.Write("_");
      }

      //Burada oyun bölümümüzde bulunan gereksiz verileri sildiriyoruz.
      //Burada amacımız temiz bir görüntü elde etmek.
      for(int x=9; x<62; x++){
        for(int j=8; j<30; j++){
          Console.SetCursorPosition(x,j);
          Console.Write(" "); //boşluk ekliyoruz bunu yapabilmek için.
        }
      }

      //Burada yeni bir değer okudumu yoksa okumadı mı diye bakıyoruz.
      if(Console.KeyAvailable){
        //Okunan değeri ch değişkenine aktarıyoruz.
        ch = Console.ReadKey(true).KeyChar;
      }
      //Bunu yapma amacımız oyunun bizden her zaman bir değer beklememesi için.
      //Çünkü biz bir butona tıklayıp olanları seyredeceğiz devamında.

      //Burada for döngüsü ile yılanımızı oluşturuyoruz.
      for (int i = n-1; i >= 0; i--){

        //Burada baş değerimizin değerini değiştiriyoruz butona göre.
        if (i == 0){

          //tus kismi
          switch(ch){
            case 'a':
              yilanX[i] -= 2;
              break;
            case 'w':
              yilanY[i] -= 1;
              break;
            case 's':
              yilanY[i] += 1;
              break;
            case 'd':
              yilanX[i] += 2;
              break;
            case 'q':
              goto EXIT;
          }

          //Eğer kendini yerse ölmesini isteyeceğiz, altta buna bakıyoruz.
          for (int u = 1; u < n; u++){
            if (yilanX[i] == yilanX[u] && yilanY[i] == yilanY[u]){
              goto EXIT;
            }
          }

          //Burada ise duvarlara çarptığında ölmesi için bir kod bulunmaktadır.
          if( yilanX[i]==8 || yilanY[i]==7 || yilanX[i]==62 || yilanY[i]==31){
            goto EXIT;
          }
        }

        //Burada yılanın başı dışındaki bölümün yılanın başını takip etmesi için 
        //yazılmış else kısmı bulunmaktadır.
        else{
          yilanX[i] = yilanX[i - 1];
          yilanY[i] = yilanY[i - 1];
        }
      }

      //Burada ise yılanımızın güncel halini çizdirmekteyiz.
      //Bunu görmektesiniz ekranda.
      for(int g=0; g<5; g++){
        Console.SetCursorPosition(yilanX[g],yilanY[g]);
        Console.Write("*");
      }

      //Burada ise 100 milisaniye bekletiyoruz while döngüsünü, hızlı olmasın diye    
      Thread.Sleep(100);
    }
    //Exit kısmına gelince olanlar.
    EXIT:
    //Ekrana oyun bitti yazdırırız.
    Console.SetCursorPosition(24,17);
    Console.Write("Game Over");
    Console.SetCursorPosition(24,18);
    Console.Write("Try again later");
    Console.CursorVisible = true;
  }
}

>>>Çıktı
>>>Zamanı 



Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme