Mayın Tarlası Örnek Uygulaması

Mayın tarlası örneği kodları:


Button[,] b = new Button[10, 10];
        int[,] mayin;
        int mayin_adet;

        private void Form1_Load(object sender, EventArgs e)
        {
           mayin = new int[b.GetLength(0), b.GetLength(1)];
            /// mayın üretme 
           mayin_adet = b.Length/4;
            Random r=new Random();
            for (int i = 0; i < mayin_adet; i++)
            {
                int sat=r.Next(mayin.GetLength(0));
                int sut=r.Next(mayin.GetLength(1));
                if(mayin[sat,sut]==-1)
                {
                    i--;
                continue;
                }
                mayin[sat,sut ] = -1;
                adet_yaz(sat,sut);
            }

            for (int i = 0; i < b.GetLength(0); i++)
            {
                for (int j = 0; j < b.GetLength(1); j++)
                {
                    b[i, j] = new Button();
                    b[i, j].Name = "b" + i + "_" + j;
                    //b[i, j].Text = mayin[i, j].ToString();
                    b[i, j].Width = 50;
                    b[i, j].Height = 50;
                    b[i, j].Left = j * b[i, j].Width;
                    b[i, j].Top = i * b[i, j].Height;
                    b[i, j].Click += new EventHandler(btn_tiklanidi);//olay tanimlama
                    b[i, j].MouseDown += b_tik;
                        Controls.Add(b[i, j]);
                }
            }
        }

        void b_tik(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right && (sender as Button).Text == "P") (sender as Button).Text = "";
            else if (e.Button == MouseButtons.Right) (sender as Button).Text = "P";
        }



        void btn_tiklanidi(object sender, EventArgs e)
        {
            string[] bno=(sender as Button).Name.Substring(1).Split('_');
            int i = Convert.ToInt32(bno[0]);
            int j = Convert.ToInt32(bno[1]);
            if (mayin[i, j] != -1)
            {
                if (mayin[i, j] != 0) b[i, j].Text = mayin[i, j].ToString();
                else etrafi_bosalt(i,j);
                b[i, j].Enabled = false;
            }
            else {
                hepsini_ac();
            }
        }

        void adet_yaz(int sat, int sut)
        {
            int sat_bas = (sat == 0) ? 0 : (sat - 1);
            int sat_bit = (sat == (mayin.GetLength(0) - 1)) ? (mayin.GetLength(0) - 1) : (sat + 1);
            int sut_bas = (sut == 0) ? 0 : (sut - 1);
            int sut_bit = (sut == (mayin.GetLength(1) - 1)) ? (mayin.GetLength(1) - 1) : (sut + 1);

            for (int i = sat_bas; i <= sat_bit; i++)
            {
                for (int j = sut_bas; j <= sut_bit; j++)
                {
                    if (mayin[i, j] != -1) mayin[i, j]++;
                }
            }
        }

        void hepsini_ac()
        {
            for (int i = 0; i < b.GetLength(0); i++)
            {
                for (int j = 0; j < b.GetLength(1); j++)
                {
                    if (mayin[i, j] == -1) b[i, j].Text = "*";
                    else if (mayin[i, j] != 0) b[i, j].Text = mayin[i, j].ToString();

                    b[i, j].Enabled = false;
                }
            }
        }

        void etrafi_bosalt(int sat,int sut)
        {
            b[sat, sut].Text = "x";
            int sat_bas = (sat == 0) ? 0 : (sat - 1);
            int sat_bit = (sat == (mayin.GetLength(0) - 1)) ? (mayin.GetLength(0) - 1) : (sat + 1);
            int sut_bas = (sut == 0) ? 0 : (sut - 1);
            int sut_bit = (sut == (mayin.GetLength(1) - 1)) ? (mayin.GetLength(1) - 1) : (sut + 1);

            for (int i = sat_bas; i <= sat_bit; i++)
            {
                for (int j = sut_bas; j <= sut_bit; j++)
                {
                    if (b[i,j].Text=="x") continue;
                    if (mayin[i, j] != 0) b[i, j].Text = mayin[i, j].ToString();
                    else etrafi_bosalt(i, j);
                    b[i, j].Enabled = false;

                }
            }
            b[sat, sut].Text = "";
        }

Animasyon Teknikleri 2 Arasınav Uygulaması

2013 2014 Öğretim yılı bahar dönemi Bil.Des.Tas. ve Ani. Programın Animasyon Teknikleri 2 dersi uygulama sınavı .fla dosyası için tıklayınız.

anim tekn 2 vize

Uygulama kodları:

var firla:Boolean = false;
var hiz:int = 10;
var topyon:int = hiz;
this.stop();

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void
{
	top.x +=  topyon;
	top.rotation +=  topyon;
	if (firla)
	{
		ci.y -=  hiz;
	}
	if (top.hitTestObject(tsac) || top.hitTestObject(tsoc))
	{
		topyon *=  -1;
	}
	if (top.hitTestPoint(ci.x,ci.y,true))
	{
		gotoAndPlay("bitti");
	}
	if (ci.hitTestObject(usc))
	{
		firla = false;
		ci.x = uc.x;
		ci.y = uc.y;
	}
}


stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler);

function fl_KeyboardDownHandler(event:KeyboardEvent):void
{
	if (event.keyCode == Keyboard.LEFT)
	{
		uc.x -=  hiz;
	}
	else if (event.keyCode==Keyboard.RIGHT)
	{
		uc.x +=  hiz;
	}
	else if (event.keyCode==Keyboard.SPACE)
	{
		firla = true;

	}
	if (uc.hitTestObject(sac))
	{
		uc.x -=  hiz;
	}
	else if (uc.hitTestObject(soc))
	{
		uc.x +=  hiz;

	}
	if (! firla)
	{
		ci.x = uc.x;
	}
}

Döngü İstisna Komutları

İki farklı istisna komutu vardır.  Bunlar;
a) break;
b) continue;
a) break;   : Bu komut her döngüde kullanılabilir. Kullanıldığı yerde döngüyü kırar. Döngü tamamen sonlandırılır.
b) continue;  : Bu komut döngüyü tamamen sonlandırmaz; ancak döngünün o andaki çevrimini sonlandırır ve sonraki çevrime geçer (yani sadece çalıştığı andan itibaren aynı bloktaki kalan komutları sadece o anki çevrim için atlamış olur).
Not: Her iki döngü istisna komutu da koşula bağlı olarak döngü bloğu içinde kullanılmalıdır.
Örnek Kullanımı
Soru: 1 , 26 arası rasgele 10 adet sayıyı yazdıran, oluşturulan sayılar 3′ün katı olmayacak ve sayılardan biri 23 olursa sayı üretilmesi sonlandırılsın?
Cevap:


private void button1_Click(object sender, EventArgs
{
Random rasgele_sayi = new Random();
for (int i = 0; i < 10; i++)
{
  int uretilen_degerler = rasgele_sayi.Next(1, 26);
  if ((uretilen_degerler % 3) == 0)
  {
    i--;
    continue;
  }

label1.Text += uretilen_degerler.ToString() + "\n";
if (uretilen_degerler == 23)break;

}
}

Dizi Değişkenler

Dizi Değişken:  Dizi değişken; içerisinde birden fazla aynı tipte değer tutabilen değişkenlerdir.  Benzer işlevi olan aynı tipte birden fazla değişkeni ayrı ayrı tanımlamak yerine bu değişkenleri bir defa da tanımlamamızı sağlarlar. Dizi değişken tanımlama şekilleri;
int[] ogrenci;  =>  Tamsayı türünde bilgileri saklayabilen “ogrenci” adında bir dizi değişken tanımlanmıştır. Dizilerde herbir veri saklama alanı dizinin elemanı>/strong> olarak adlandırılır.

int[] ogrenci;
ogrenci = new int[2];  => Bu dizi değişken iki parçalı komut şeklinde tanımlanmıştır. Bu dizi değişken int tipinde olduğu için elemanlara ilk değer olarak sıfır(0) aktarılır.
int[] ogrenci = new int[2];  => Yukarıda iki satırda tanımlanmış olan dizi değişken bu örnek kullanımda da tek satırda tanımlanmıştır.

a) Tek Boyutlu Diziler

Elemanı seçmek için tek bir numaraya ihtiyaç duyulan dizilere tek boyutlu dizi denir. Elemana işaret eden numaraya ise indeks numarası denir.
int    []        degisken           =  new int[2];
Tip   Dizi    Değişken Adı                      Eleman Adedi
Not: Değişkenlerin indeks numaralarının aldığı değerler sıfır(0)’dan başlar ve indeks numarası en fazla eleman adedinin bir eksiği olabilir (tek boyutlu dizilerde).
Örneğin;
int[] deger = new int[2];
deger[0] = 1;
deger[1] = 2;

Soru: button1′e basılınca 1 , 26 arası rasgele 10 adet sayı üretip label1′e yazan ve button2′ye basılınca oluşan değerleri küçükten-büyüğe sırayan program kodlarını ilgili olaya yazınız.

Cevap:

int[] sayi  = new int[10];
private void button1_Click(object sender, EventArgs e)
{
Random rsglsylr = new Random();
for(int i = 0; i<10; i++)
{
sayi[i] = rsglsylr.Next(1,26);
label1.Text += sayi[i] + "n";
}
}
private void button2_Click(object sender, EventArgs e)
{
Array.Sort(sayi); // => Diziyi küçükten-büyüğe sıralar.
foreach(int deger_verme in sayi)
{
label2.Text += deger_verme + "n";
}
}

b) Çok Boyutlu Diziler
Çok boyutlu dizi değişkenler bir elemanını seçebilmek için iki ya da daha fazla indeks numarasına ihtiyaç duyulan değişkenlerdir. Bir dizi değişken bir elemanının seçilmesi için kaç adet indeks numarası gerektiriyorsa bu dizi o kadar adet boyutlu bire dizidir. Çok boyutlu dizi değişken denildiği zaman genellikle 2 veya 3 boyutlu dizi değişkenler anlaşılmaktadır. 2 boyutlu diziler satır ve sütunlar olarak düşünülebilir.  Çok boyutlu dizi değişkenler;
int[,] dizi;
dizi = new int[2,3];  =>  Bu şekilde tanımlanan dizi değişkeni 2 satır ve 3 sütuna sahip bir tablo gibi düşünebilirsiniz.
int[ , , ] dizi;
dizi = new int[2,3];
dizi[0,0] = 10;
dizi[0,1] = 20;  => Çok boyutlu dizi değişkenin indekslerine değer atamasının yapılması.
şeklinde kullanılabilir.
Dizi değişkenlerin kaç boyutlu olduğu öğrenilmek istendiği zaman Rank() metodu kullanılır.
string[,] dizi = new string[4,5];
int boyut = dizi.Rank();  // 2 boyutlu dizi değişken.
int[] dizi1 = new int[3];               // Eleman sayısı aldığı değerdir(3)
int[,] dizi2 = new int[2,3];          // Eleman sayısı için alınan değerler çarıpılır. (2*3 =  6)
int[ , ,] dizi3 = new int[5,2,7];  // Eleman sayısı için alınan değerler çarpılır. (5*2*7 = 70)
Dizi Değişken                Eleman Sayısı            İlk Eleman            Son Eleman
dizi1                                              3                         dizi1[0]                  dizi1[2]
dizi2                                              6                         dizi2[0,0]               dizi2[1,2]
dizi3                                              70                       dizi3[0,0,0]           dizi3[4,1,6]
c) Varsayılan Değer Ataması ile Dizi Değişken Tanımlama

string[] isimler = {“Ali” , “Veli” , “Ayşe”};  => Tek boyutlu string dizi değişken.
string[,] isimler = {{“Hasan”,Mustafa”,”Burhan”} , {“Burak”,”Ali”,”Fatma”}};  => Çok boyutlu string dizi değişken.