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