24 Ekim 2015 Cumartesi

C Sharp Form Uygulamalar Yılan Oyunu

UYGULAMAYI İNDİR


KONU : C Sharp ( C# ) Form Uygulamalar çift kişilik ve tek kişilik yılan oyunu hazırlama, mayın tarlası oyunu , c sharp form yılan oyun uygulaması


ETİKETLER : C Sharp Oyun | c sharp oyun örnekleri | c sharp oyun yapma | c sharp oyun kodları | csharp oyun programlama | csharp örnek oyun | csharp örnek projeler | csharp örnek programlar| c sharp örnek kodlar | csharp örnek kodları | c sharp örnekleri | csharp örnek | c sharp oyun programları | c# oyun | c# oyun yapımı | c# oyun programlama | c# oyun kodları | c# oyun örnekleri | | c# oyun örnekleri indir | c# örnek oyun | c# yılan oyunu | c# yılan oyunu yapımı | c# yılan oyunu kodu | c# yılan oyun | c# yılan oyunu kod | c# yılan oyunu kodları




 


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Collections;
using YilanDll;

namespace Yilan_Oyunu
{
    public partial class YilanForm : Form
    {
        int oyuncuSayisi = 1;
        int maxOyuncuSayisi = 2;
        bool oyunDurum = false;
        Semaphore semaPhore;

        /// 
        /// Yilan nesneleri
        /// 
        Yilan[] yilan;
        
        /// 
        /// Yılanın deri renkleri
        /// 
        Brush[] fircalar = { Brushes.Blue, Brushes.Green, Brushes.Gray, Brushes.GreenYellow };

        /// 
        /// Grafik nesnesi
        /// 
        Grafik grafik;

        /// 
        /// Anaform penceresi
        /// 
        public YilanForm()
        {
            InitializeComponent();
        }

        private Grafik Grafik
        {
            get
            {
                return grafik;
            }
            set
            {
                grafik = value;
            }
        }

        private Yilan [] Yilan
        {
            get
            {
                return yilan;
            }
            set
            {
                yilan = value;
            }
        }


        /// 
        /// Form yükleme metodu
        /// 
        /// 
        /// 
        private void YilanForm_Load(object sender, EventArgs e)
        {
            Define.SiteyiAc();

            //oyun yüklenirkn puan etiketleri görünmesin
            lblBrinciOyuncu.Visible = false;
            lblIkinciOyuncu.Visible = false;

            //Oyun yüklenirken 2 yılan nesnesini oluştur
            Yilan = new Yilan[maxOyuncuSayisi];

            //Oyun yüklenirker grafik nesnesini oluştur
            Grafik = new Grafik();

            //Oyunu bir oyunculu olarak başlat
            for (int i = 0; i < maxOyuncuSayisi; i++)
            {
                Yilan[i] = new Yilan();
            }

            this.Text = "Yılan Oyunu";

            Grafik.grafikAlaniOlustur();

            Grafik.yem.X = -1;
            Grafik.yem.Y = -1;
            Grafik.yemVarMi = false;

            if (Grafik.bmp != null)
            {
                oyunAlani.Image = Grafik.bmp;
                oyunAlani.Refresh();
            }

            semaPhore = new Semaphore(1, 1);
        }

        /// 
        /// Timer olayı, yılan grafiğini günceller ve yılanı bir birim
        /// Hareket ettirir
        /// 
        /// 
        /// 
        private void oyunTimerTick(object sender, EventArgs e)
        {
            semaPhore.WaitOne();
            for (int i = 0; i < oyuncuSayisi; i++)
            {
                //yılanı gittiği yönde bir birim kaydırma
                if (Yilan[i].rota == 1) Yilan[i].yilanSolaGit();
                if (Yilan[i].rota == 2) Yilan[i].yilanSagGit();
                if (Yilan[i].rota == 3) Yilan[i].yilanYukariGit();
                if (Yilan[i].rota == 4) Yilan[i].yilanAsagiGit();

                //yılan alanının sınırları geçildiğinde yılanı diğer taraftan çıkar
                if (Yilan[i].x > 39) Yilan[i].x = 0;
                else if (Yilan[i].x < 0) Yilan[i].x = 40;

                if (Yilan[i].y > 39) Yilan[i].y = 0;
                else if (Yilan[i].y < 0) Yilan[i].y = 40;

                //yilana yeni eklenen birimi yılanın rengi ile boya
                Grafik.YilaniDoldur(Yilan[i].x, Yilan[i].y, Yilan[i].yilanRengi);

                //eklenen birimi kuyruğa ekle
                Yilan[i].alanX[Yilan[i].kuyrukUzunluk] = Yilan[i].x;
                Yilan[i].alanY[Yilan[i].kuyrukUzunluk] = Yilan[i].y;
                Yilan[i].kuyrukUzunluk++;

                //Kuyruğu bir birim azaltmak için yılanın kuyruğundaki son birimi zemin rengine boya
                Grafik.YilaniBosalt(Yilan[i].alanX[Yilan[i].kuyrukUzunluk - Yilan[i].uzunluk], Yilan[i].alanY[Yilan[i].kuyrukUzunluk - Yilan[i].uzunluk]);
                
                
                if (Yilan[i].kuyrukUzunluk > 899)
                {
                    Yilan[i].kuyrukUzunluk = Yilan[i].uzunluk;
                    for (int z = 0; z < Yilan[i].uzunluk; ++z)
                    {
                        Yilan[i].alanX[Yilan[i].uzunluk - z] = Yilan[i].alanX[900 - z];
                        Yilan[i].alanY[Yilan[i].uzunluk - z] = Yilan[i].alanY[900 - z];
                    }
                }

                if ((Grafik.yilanYemAldiMi(Yilan[i].x, Yilan[i].y) == false) && (Grafik.yemVarMi == false))
                {
                    //yeni yem oluştur ve koordinatını belirle
                    Grafik.yemKoordinatBelirle();
                    Grafik.yemKoy(Grafik.yem.X, Grafik.yem.Y);
                    Grafik.yemVarMi = true;
                }


                if (Grafik.yilanYemAldiMi(Yilan[i].x, Yilan[i].y) == true)
                {
                    Grafik.yem.X = -1;
                    Grafik.yem.Y = -1;
                    Grafik.yemVarMi = false;
                    Yilan[i].puan += 1 * Yilan[i].hiz;
                    Yilan[i].uzunluk += 1;
                    if (i == 0)
                        lblBrinciOyuncu.Text = "Birinci Oyuncu PUAN : " + Yilan[i].puan.ToString();
                    else if (i == 1)
                        lblIkinciOyuncu.Text = "İkinci Oyuncu PUAN : " + Yilan[i].puan.ToString();    
                }

                oyunAlani.Image = Grafik.bmp;
                oyunAlani.Refresh();
            }


            for (int i = 0; i < oyuncuSayisi; i++)
            {
                if (Yilan[i].yilanKendisineCarptimi(Grafik.bmp) == true)
                {
                    oyunTimer.Enabled = false;
                    bekleTimer.Enabled = true;

                    if (Yilan[i].bekleint <= 0)
                    {
                    }
                    else
                    {
                        Yilan[i].bekleint = 20;
                    }
                }
            }
            semaPhore.Release();
        }

        private void bekleTimerTick(object sender, EventArgs e)
        {
            for (int i = 0; i < oyuncuSayisi; i++)
            {
                Yilan[i].bekleint--;
                if (Yilan[i].bekleint == 0)
                {
                    bekleTimer.Enabled = false;
                    yilanOyunBitti();
                    break;
                }
            }
        }

        public void yilanOyunBitti()
        {
            oyunDurum = false;
            oyunTimer.Interval = 50; //200
            oyunTimer.Enabled = oyunDurum;
            if(oyuncuSayisi == 1)
                MessageBox.Show(lblBrinciOyuncu.Text,"Oyun Bitti",MessageBoxButtons.OK,MessageBoxIcon.Information);
            else
                MessageBox.Show( lblBrinciOyuncu.Text + "\n " + lblIkinciOyuncu.Text,"Oyun Bitti",MessageBoxButtons.OK,MessageBoxIcon.Information);
            lblBrinciOyuncu.Text = " PUAN : " + Yilan[0].puan.ToString();
            Grafik.grafikAlaniOlustur();
            Grafik.yemVarMi = oyunDurum;
            oyunTimer.Enabled = oyunDurum;
            programToolStripMenuItem.DropDownItems[0].Enabled = oyunDurum;
        }

        private void yeniOyun()
        { 
            oyunTimer.Interval = 50; //200
            oyunTimer.Enabled = false;

            Grafik.grafikAlaniOlustur();
            Grafik.yemVarMi = false;
            for (int i = 0; i < oyuncuSayisi; i++)
            {

                Yilan[i].uzunluk = 5;
                Yilan[i].kuyrukUzunluk = 5;
                Yilan[i].x = 5 + i * 5;
                Yilan[i].y = 5 + i * 5;
                Yilan[i].rota = 2 - i;
                Yilan[i].puan = 0;
                Yilan[i].YilanSifirla();
                Yilan[i].yilanRengi = fircalar[i];
                
            }

            oyunDurum = true;
            oyunTimer.Enabled = true;
        }


        private void YilanForm_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left) Yilan[0].rota = 1;
            if (e.KeyCode == Keys.Right) Yilan[0].rota = 2;
            if (e.KeyCode == Keys.Up) Yilan[0].rota = 3;
            if (e.KeyCode == Keys.Down) Yilan[0].rota = 4;
            if (e.KeyCode == Keys.Escape) Application.Exit();


            if (e.KeyCode == Keys.S) Yilan[1].rota = 1;
            if (e.KeyCode == Keys.F) Yilan[1].rota = 2;
            if (e.KeyCode == Keys.E) Yilan[1].rota = 3;
            if (e.KeyCode == Keys.D) Yilan[1].rota = 4;


            for (int i = 0; i < oyuncuSayisi; i++)
            {
                Yilan[i].bekleint = 20;
            }
           
            bekleTimer.Enabled = false;
            oyunTimer.Enabled = true;
        }

        private void birOyuncuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            oyuncuSayisi = 1;
            lblBrinciOyuncu.Visible = true;
            lblIkinciOyuncu.Visible = false;
            lblBrinciOyuncu.Text = "Birinci Oyuncu PUAN : " + Yilan[0].puan.ToString();

            yeniOyun();
        }

        private void ikiOyuncuToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            oyuncuSayisi = 2;
            lblBrinciOyuncu.Visible = true;
            lblIkinciOyuncu.Visible = true;
            lblBrinciOyuncu.Text = "Birinci Oyuncu PUAN : " + Yilan[0].puan.ToString();
            lblIkinciOyuncu.Text = "İkinci  Oyuncu PUAN : " + Yilan[1].puan.ToString();

            yeniOyun();
        }

        private void hizToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string etiket = e.ClickedItem.Text.Substring(0, 1);

            int hiz = -1;
            switch (etiket)
            {
                case ("1"):
                    hiz = 1;
                    oyunTimer.Interval = 150;
                    break;
                case ("2"):
                    hiz = 2;
                    oyunTimer.Interval = 130;
                    break;
                case ("3"):
                    hiz = 3;
                    oyunTimer.Interval = 110;
                    break;
                case ("4"):
                    hiz = 4;
                    oyunTimer.Interval = 90;
                    break;
                case ("5"):
                    hiz = 5;
                    oyunTimer.Interval = 80;
                    break;
                case ("6"):
                    hiz = 6;
                    oyunTimer.Interval = 70;
                    break;
                case ("7"):
                    hiz = 7;
                    oyunTimer.Interval = 60;
                    break;
                case ("8"):
                    hiz = 8;
                    oyunTimer.Interval = 50;
                    break;
                case ("9"):
                    hiz = 9;
                    oyunTimer.Interval = 40;
                    break;

                default:
                    break;

            }

            for (int i = 0; i < oyuncuSayisi; i++)
            {
                Yilan[i].hiz = hiz;
            }
        }

        private void programToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string etiket = e.ClickedItem.Text.Trim();

            switch (etiket)
            {
                case ("Başla"):
                    if (!oyunDurum)
                    {
                        yeniOyun();
                    }
                    else
                    {
                        oyunTimer.Interval = 50;//150
                        oyunTimer.Enabled = true;
                    }
                    break;
                case ("Durdur"):
                    oyunTimer.Enabled = false;
                    break;
                case ("Yeni Oyun"):
                    yeniOyun();
                    break;
                default:
                    break;
            }
        }

        private void yeniOyunToolStripMenuItem1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string etiket = e.ClickedItem.Text.Substring(0, 3);

            switch (etiket)
            {
                case ("Bir"):
                    oyuncuSayisi = 1;
                    break;
                case ("İki"):
                    oyuncuSayisi = 2;
                    break;
                default:
                    oyuncuSayisi = 1;
                    break;
            }


            yeniOyun();
        }

        private void yardımToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string etiket = e.ClickedItem.Tag.ToString();

            switch (etiket)
            {
                case ("0"):
                    MessageBox.Show("Oyunu başlatmak için 'Yeni Oyuncu' menüsü seçerek\n"
                        +"kaç oyuncu ile oynamak istiyorasanız o alt menüyü tıklayınız.\n\n"+
                        "Birinci Oyuncu için yön tuşları atanmıştır."+
                        "\nİkinci Oyuncu için ileri:E sağ:S sol:F geri:D Tuşları Atanmıştır.");
                    break;
                case ("1"):
                    MessageBox.Show(((char)169).ToString() + " 2011 Yılan Oyunu");
                    break;
                default:
                    MessageBox.Show(((char)169).ToString() + " 2011 Yılan Oyunu");
                    break;
            }

        }

        private void YilanForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            Define.SiteyiAc();
        }
 
    }
}


 


GRAFİK SINIFI :

               
              
 public  class Grafik
    {
        public Bitmap bmp;
        public Point yem;
        public bool yemVarMi;

        private Brush yemRengi;
        private Graphics grafik;
        private Rectangle dikdortgen;
        private Brush arkaAlan;

        /// 
        /// Grafik Nesnesi Yapıcısı
        /// 
        public Grafik()
        {
            yemRengi = Brushes.Red;//yem kırmızı olacak
            arkaAlan = Brushes.White;//arka plan beyaz olacak
            yem = new Point(); //yem nesnesi
        }

        /// 
        /// yılan derisini belirtilen rank ile doldur
        /// 
        /// 
        /// 
        /// 
        public void YilaniDoldur(int x, int y, Brush yilanderirengi)
        {
            grafik.FillRectangle(yilanderirengi, x * 10, y * 10, 10, 10);
        }

        /// 
        /// Oyun alanındaki yılan derisini boşalt
        /// 
        /// 
        /// 
        public void YilaniBosalt(int x, int y)
        {
            grafik.FillRectangle(arkaAlan, x * 10, y * 10, 10, 10);
        }

        /// 
        /// Oyun alanını oluştur
        /// 
        public void grafikAlaniOlustur()
        {
            bmp = new Bitmap(400, 400);
            grafik = Graphics.FromImage(bmp);
            dikdortgen = new Rectangle(0, 0, 400, 400);
            grafik.FillRectangle(arkaAlan, dikdortgen);
        }

        /// 
        /// Yem koy metodu
        /// 
        /// 
        /// 
        public void yemKoy(int x, int y)
        {
            grafik.FillRectangle(yemRengi, x * 10, y * 10, 10, 10);
        }

        /// 
        /// yilanın yemi alıp almadığını kontrol eder
        /// 
        /// 
        /// 
        /// 
        public bool yilanYemAldiMi(int yilanX, int yilanY)
        {
            bool b = false;

            if ((yem.X == yilanX) && (yem.Y == yilanY))
                b = true;
            else
                b = false;

            return b;
        }

        /// 
        /// Oyun alanına yerleştirilecek yem koordinatını belirler
        /// 
        public void yemKoordinatBelirle()
        {
            List olasiYerlerX = new List();
            List olasiYerlerY = new List();

            for (int iy = 0; iy < 400; iy += 10)
            {
                for (int ix = 0; ix < 400; ix += 10)
                {
                    if ((bmp.GetPixel(ix + 5, iy + 5)).Name == "ffffffff")
                    {
                        olasiYerlerX.Add(ix / 10);
                        olasiYerlerY.Add(iy / 10);
                    }
                }
            }

            Random random = new Random();
            int rnd = random.Next(olasiYerlerX.Count + 1);
            yem.X = olasiYerlerX[rnd];
            Thread.Sleep(25);
            yem.Y = olasiYerlerY[rnd];
        }
    }              
              
 


YILAN SINIFI

               
              
    /// 
    /// Yılan nesnesinin sınıfı
    /// 
   public class Yilan
    {
        public Brush yilanRengi;
        public int rota;
        public int uzunluk, kuyrukUzunluk;
        public int x, y, hiz;
        public int puan;
        public int bekleint;
        public int[] alanX = new int[1000];
        public int[] alanY = new int[1000];

        protected Random rasgele;

        /// 
        /// Yılan nesnesi yapıcısı
        /// 
        public Yilan()
        {
            //constructor  
            yilanRengi = Brushes.Blue;
            hiz = 8;
            rasgele = new Random();
        }

        /// 
        /// Yılanı sağ tarafa döndür
        /// 
        public void yilanSagGit()
        {
            this.x += 1;
        }

        /// 
        /// Yılanı sol tarafa döndür
        /// 
        public void yilanSolaGit()
        {
            this.x -= 1;
        }

        /// 
        /// Yılanı yukarı tarafa döndür
        /// 
        public void yilanYukariGit()
        {
            this.y -= 1;
        }

        /// 
        /// Yılanı aşağı tarafa döndür
        /// 
        public void yilanAsagiGit()
        {
            this.y += 1;
        }

        /// 
        /// Yılanın kendisine çarpıp çarpmadığını kontrol et
        /// 
        /// 
        /// 
        public bool yilanKendisineCarptimi(Bitmap bmp)
        {
            bool durum = false;
            int x = this.x * 10;
            int y = this.y * 10;

            try
            {
                if (rota == 1)
                {
                    if (bmp.GetPixel(x - 5, y + 5).Name.Substring(0, 4) != "ffff")
                    {
                        durum = true;
                    }
                    else
                        durum = false;
                }


                if (rota == 2)
                {
                    if (bmp.GetPixel(x + 15, y + 5).Name.Substring(0, 4) != "ffff")
                    {
                        durum = true;
                    }
                    else
                        durum = false;
                }

                if (rota == 3)
                {
                    if (bmp.GetPixel(x + 5, y - 5).Name.Substring(0, 4) != "ffff")
                    {
                        durum = true;
                    }
                    else
                        durum = false;
                }

                if (rota == 4)
                {
                    if (bmp.GetPixel(x + 5, y + 15).Name.Substring(0, 4) != "ffff")
                    {
                        durum = true;
                    }
                    else
                        durum = false;
                }
            }
            catch (Exception e)
            {
                //e.Message; 
                return false;
            }

            return durum;
        }

        /// 
        /// Yılanın özelliklerini sıfırlar
        /// 
        public void YilanSifirla()
        {
            alanX = null;
            alanY = null;

            alanX = new int[1000];
            alanY = new int[1000];

            for (int i = 0; i < 1000; i++)
            {
                alanX[i] = 0;
                alanY[i] = 0;
            }
        }
    }              
              
 

UYGULAMAYI İNDİR

7 yorum :

  1. Sayfanızdaki uygulamalar çok iyi olmuş daha iyilerinide bekliyoruz

    YanıtlaSil
  2. Sayfadaki uygulamalar öğrencilere çok faydalı daha fazla uygulama olmasını istiyoruz

    YanıtlaSil
  3. Paylaşmak istediğiniz uygulamalar varsa buradan payşaiabilirisiniz...
    fatih.kral@gmail.com

    YanıtlaSil
  4. nasıl oluyor anlamadım sürekli bir aynı hat bir hatadan onlarca çıkıor ben böyle işi amk

    YanıtlaSil
  5. Form demişsiniz ama formdaki kodlar yok. Lütfen onlarla beraber koyar mısınız?
    Böylelikle daha net anlayabiliriz.
    Teşekkürler

    YanıtlaSil
    Yanıtlar
    1. YılanDLL kısmınıda kod olarak ekledim. Grafik, Yılan nesleri bu kısımda. Şimdiye kadar kimse sormamış :)

      Sil