1 (Düzenleyen: Emre Çelik Ergin, Düzenleme tarihi: 22-05-2019 15:12:42)

Konu: UYGULAMA KODU - Rus Ruleti Oyunu [C#]

Program.cs

// Yazıldığı Dil: C#
// Kullanılan Program: Visual Studio 2017

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace rusRuleti
{
    static class Program
    {
        /// <summary>
        /// Uygulamanın ana girdi noktası.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new oyunEkrani());
        }
    }
}


oyunEkrani.Designer.cs

// Yazıldığı Dil: C#
// Kullanılan Program: Visual Studio 2017

namespace rusRuleti
{
    partial class oyunEkrani
    {
        /// <summary>
        ///Gerekli tasarımcı değişkeni.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///Kullanılan tüm kaynakları temizleyin.
        /// </summary>
        ///<param name="disposing">yönetilen kaynaklar dispose edilmeliyse doğru; aksi halde yanlış.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer üretilen kod

        /// <summary>
        /// Tasarımcı desteği için gerekli metot - bu metodun 
        ///içeriğini kod düzenleyici ile değiştirmeyin.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(oyunEkrani));
            this.tetigiCekButonu = new System.Windows.Forms.Button();
            this.yeniOyunButonu = new System.Windows.Forms.Button();
            this.oyuncu1Yazisi = new System.Windows.Forms.Label();
            this.oyuncu2Yazisi = new System.Windows.Forms.Label();
            this.oyunDurumu = new System.Windows.Forms.TextBox();
            this.oyunDurumuYazisi = new System.Windows.Forms.Label();
            this.gelistiriciButonu = new System.Windows.Forms.Button();
            this.silahResmi = new System.Windows.Forms.PictureBox();
            this.oyuncu2Resmi = new System.Windows.Forms.PictureBox();
            this.oyuncu1Resmi = new System.Windows.Forms.PictureBox();
            ((System.ComponentModel.ISupportInitialize)(this.silahResmi)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.oyuncu2Resmi)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.oyuncu1Resmi)).BeginInit();
            this.SuspendLayout();
            // 
            // tetigiCekButonu
            // 
            this.tetigiCekButonu.Font = new System.Drawing.Font("Calibri", 24.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.tetigiCekButonu.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
            this.tetigiCekButonu.Location = new System.Drawing.Point(310, 272);
            this.tetigiCekButonu.Name = "tetigiCekButonu";
            this.tetigiCekButonu.Size = new System.Drawing.Size(182, 70);
            this.tetigiCekButonu.TabIndex = 9;
            this.tetigiCekButonu.TabStop = false;
            this.tetigiCekButonu.Text = "Tetiği Çek";
            this.tetigiCekButonu.UseVisualStyleBackColor = true;
            this.tetigiCekButonu.Click += new System.EventHandler(this.tetigiCekButonu_Click);
            // 
            // yeniOyunButonu
            // 
            this.yeniOyunButonu.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.yeniOyunButonu.ForeColor = System.Drawing.Color.Blue;
            this.yeniOyunButonu.Location = new System.Drawing.Point(15, 13);
            this.yeniOyunButonu.Name = "yeniOyunButonu";
            this.yeniOyunButonu.Size = new System.Drawing.Size(93, 33);
            this.yeniOyunButonu.TabIndex = 10;
            this.yeniOyunButonu.TabStop = false;
            this.yeniOyunButonu.Text = "Yeni Oyun";
            this.yeniOyunButonu.UseVisualStyleBackColor = true;
            this.yeniOyunButonu.Click += new System.EventHandler(this.yeniOyunButonu_Click);
            // 
            // oyuncu1Yazisi
            // 
            this.oyuncu1Yazisi.AutoSize = true;
            this.oyuncu1Yazisi.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.oyuncu1Yazisi.ForeColor = System.Drawing.Color.Black;
            this.oyuncu1Yazisi.Location = new System.Drawing.Point(52, 386);
            this.oyuncu1Yazisi.Name = "oyuncu1Yazisi";
            this.oyuncu1Yazisi.Size = new System.Drawing.Size(160, 37);
            this.oyuncu1Yazisi.TabIndex = 11;
            this.oyuncu1Yazisi.Text = "1.Oyuncu";
            // 
            // oyuncu2Yazisi
            // 
            this.oyuncu2Yazisi.AutoSize = true;
            this.oyuncu2Yazisi.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.oyuncu2Yazisi.ForeColor = System.Drawing.Color.Black;
            this.oyuncu2Yazisi.Location = new System.Drawing.Point(587, 386);
            this.oyuncu2Yazisi.Name = "oyuncu2Yazisi";
            this.oyuncu2Yazisi.Size = new System.Drawing.Size(162, 37);
            this.oyuncu2Yazisi.TabIndex = 12;
            this.oyuncu2Yazisi.Text = "2.Oyuncu";
            // 
            // oyunDurumu
            // 
            this.oyunDurumu.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.oyunDurumu.Location = new System.Drawing.Point(131, 49);
            this.oyunDurumu.Name = "oyunDurumu";
            this.oyunDurumu.ReadOnly = true;
            this.oyunDurumu.Size = new System.Drawing.Size(540, 22);
            this.oyunDurumu.TabIndex = 14;
            this.oyunDurumu.TabStop = false;
            this.oyunDurumu.Text = "Yeni oyun başlat!";
            this.oyunDurumu.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            // 
            // oyunDurumuYazisi
            // 
            this.oyunDurumuYazisi.AutoSize = true;
            this.oyunDurumuYazisi.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.oyunDurumuYazisi.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192)))));
            this.oyunDurumuYazisi.Location = new System.Drawing.Point(316, 16);
            this.oyunDurumuYazisi.Name = "oyunDurumuYazisi";
            this.oyunDurumuYazisi.Size = new System.Drawing.Size(170, 29);
            this.oyunDurumuYazisi.TabIndex = 15;
            this.oyunDurumuYazisi.Text = "Oyun Durumu";
            // 
            // gelistiriciButonu
            // 
            this.gelistiriciButonu.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
            this.gelistiriciButonu.ForeColor = System.Drawing.Color.Blue;
            this.gelistiriciButonu.Location = new System.Drawing.Point(692, 13);
            this.gelistiriciButonu.Name = "gelistiriciButonu";
            this.gelistiriciButonu.Size = new System.Drawing.Size(93, 33);
            this.gelistiriciButonu.TabIndex = 16;
            this.gelistiriciButonu.TabStop = false;
            this.gelistiriciButonu.Text = "Geliştirici";
            this.gelistiriciButonu.UseVisualStyleBackColor = true;
            this.gelistiriciButonu.Click += new System.EventHandler(this.gelistiriciButonu_Click);
            // 
            // silahResmi
            // 
            this.silahResmi.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.silahResmi.Location = new System.Drawing.Point(285, 117);
            this.silahResmi.Name = "silahResmi";
            this.silahResmi.Size = new System.Drawing.Size(231, 122);
            this.silahResmi.TabIndex = 5;
            this.silahResmi.TabStop = false;
            // 
            // oyuncu2Resmi
            // 
            this.oyuncu2Resmi.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.oyuncu2Resmi.Image = global::rusRuleti.Properties.Resources.karakter2;
            this.oyuncu2Resmi.Location = new System.Drawing.Point(548, 77);
            this.oyuncu2Resmi.Name = "oyuncu2Resmi";
            this.oyuncu2Resmi.Size = new System.Drawing.Size(240, 300);
            this.oyuncu2Resmi.TabIndex = 1;
            this.oyuncu2Resmi.TabStop = false;
            // 
            // oyuncu1Resmi
            // 
            this.oyuncu1Resmi.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
            this.oyuncu1Resmi.Image = global::rusRuleti.Properties.Resources.karakter1;
            this.oyuncu1Resmi.Location = new System.Drawing.Point(12, 77);
            this.oyuncu1Resmi.Name = "oyuncu1Resmi";
            this.oyuncu1Resmi.Size = new System.Drawing.Size(240, 300);
            this.oyuncu1Resmi.TabIndex = 0;
            this.oyuncu1Resmi.TabStop = false;
            // 
            // oyunEkrani
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 436);
            this.Controls.Add(this.gelistiriciButonu);
            this.Controls.Add(this.oyunDurumuYazisi);
            this.Controls.Add(this.oyunDurumu);
            this.Controls.Add(this.oyuncu2Yazisi);
            this.Controls.Add(this.oyuncu1Yazisi);
            this.Controls.Add(this.yeniOyunButonu);
            this.Controls.Add(this.tetigiCekButonu);
            this.Controls.Add(this.silahResmi);
            this.Controls.Add(this.oyuncu2Resmi);
            this.Controls.Add(this.oyuncu1Resmi);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.Name = "oyunEkrani";
            this.Text = "Rus Ruleti";
            ((System.ComponentModel.ISupportInitialize)(this.silahResmi)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.oyuncu2Resmi)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.oyuncu1Resmi)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.PictureBox oyuncu1Resmi;
        private System.Windows.Forms.PictureBox oyuncu2Resmi;
        private System.Windows.Forms.PictureBox silahResmi;
        private System.Windows.Forms.Button tetigiCekButonu;
        private System.Windows.Forms.Button yeniOyunButonu;
        private System.Windows.Forms.Label oyuncu1Yazisi;
        private System.Windows.Forms.Label oyuncu2Yazisi;
        private System.Windows.Forms.TextBox oyunDurumu;
        private System.Windows.Forms.Label oyunDurumuYazisi;
        private System.Windows.Forms.Button gelistiriciButonu;
    }
}


oyunEkrani.cs

// Yazıldığı Dil: C#
// Kullanılan Program: Visual Studio 2017

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

namespace rusRuleti
{
    public partial class oyunEkrani : Form
    {
        struct silahBilgisi
        {
            public int yon; // 1 -> Sol , 2 -> Sağ
            public int mevcutDelik;
            public int mermiBulunanDelik;
            public int denemeSayisi;
        };

        silahBilgisi silah = new silahBilgisi();
        Random rastgele = new Random();
        bool oyunAktifligi;

        public oyunEkrani()
        {
            InitializeComponent();
        }

        private void tetigiCekButonu_Click(object sender, EventArgs e)
        {
            if (oyunAktifligi)
            {
                silah.denemeSayisi++;

                if (silah.mevcutDelik == silah.mermiBulunanDelik)
                {
                    oyunAktifligi = false;
                    oyunDurumu.Text = "Silah ateşlendi! " + silah.yon + ".oyuncu, " + silah.denemeSayisi + ".deneme sonucunda vuruldu!";

                    if (silah.yon == 1)
                    {
                        oyuncu1Resmi.Image = global::rusRuleti.Properties.Resources.karakter1Yenilgi;
                        oyuncu1Yazisi.ForeColor = Color.Red;
                    }
                    else if (silah.yon == 2)
                    {
                        oyuncu2Resmi.Image = global::rusRuleti.Properties.Resources.karakter2Yenilgi;
                        oyuncu2Yazisi.ForeColor = Color.Red;
                    }
                }
                else
                {
                    oyunDurumu.Text = silah.yon + ".oyuncu tetiği çekti ama silah ateşlenmedi! Sıra ";

                    if (silah.yon == 1) silah.yon = 2;
                    else if (silah.yon == 2) silah.yon = 1;

                    oyunDurumu.Text = oyunDurumu.Text.Insert(oyunDurumu.Text.Length, silah.yon + ".oyuncuya geçti.");

                    if (silah.mevcutDelik != 6) silah.mevcutDelik++;
                    else silah.mevcutDelik = 1;

                    oyuncuRenkleriniDuzenle(silah.yon);
                    silahResminiDuzenle(silah.yon);
                }
            }
            else oyunDurumu.Text = "Yeni oyun başlat!";
        }

        private void yeniOyunButonu_Click(object sender, EventArgs e)
        {
            yeniOyunBaslat();
        }

        private void gelistiriciButonu_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Emre Çelik ERGİN", "", MessageBoxButtons.OK);
        }

        private void yeniOyunBaslat()
        {
            oyunAktifligi = true;
            silah.yon = rastgele.Next(1, 3);
            silah.mermiBulunanDelik = rastgele.Next(1, 7);
            silah.mevcutDelik = rastgele.Next(1, 7);
            silah.denemeSayisi = 0;
            oyunDurumu.Text = "Yeni oyun başlatıldı! Silah ilk olarak " + silah.yon + ".oyuncunun kafasında.";

            oyuncu1Resmi.Image = global::rusRuleti.Properties.Resources.karakter1;
            oyuncu2Resmi.Image = global::rusRuleti.Properties.Resources.karakter2;

            oyuncuRenkleriniDuzenle(silah.yon);
            silahResminiDuzenle(silah.yon);
        }

        private void silahResminiDuzenle(int silahYonu)
        {
            if (silahYonu == 1) silahResmi.Image = global::rusRuleti.Properties.Resources.silahSol;
            else if (silahYonu == 2) silahResmi.Image = global::rusRuleti.Properties.Resources.silahSag;
        }

        private void oyuncuRenkleriniDuzenle(int silahYonu)
        {
            if (silahYonu == 1)
            {
                oyuncu1Yazisi.ForeColor = Color.Chocolate;
                oyuncu2Yazisi.ForeColor = Color.Green;
            }
            else if (silahYonu == 2)
            {
                oyuncu1Yazisi.ForeColor = Color.Green;
                oyuncu2Yazisi.ForeColor = Color.Chocolate;
            }
        }
    }
}

Yukarıdaki kod sayesinde, basit ancak kullanışlı ve hoş görsellere sahip bir Rus ruleti oyunu yapmış oluyoruz.


Oyunun görselliği için gerekenler:

  • 240x300'lük 2 farklı karakter resmi.

  • 240x300'lük 2 farklı karakterin yenilgi resmi.

  • 232x122'lik hem sağa hem sola bakan bir silah resmi.

  • Simge (İnternet üzerinden bulunabilir.)

Açıklama: "http://www.bilimsanatmerkezi.net/misc.p … mp;preview" adresindeki resim dosyası indirilip düzenlenerek oyun içindeki görseller hazırlanabilir.


Oyun İçinden Görseller:

http://www.bilimsanatmerkezi.net/misc.php?action=pun_attachment&amp;item=35&amp;download=0


http://www.bilimsanatmerkezi.net/misc.php?action=pun_attachment&amp;item=36&amp;download=0


http://www.bilimsanatmerkezi.net/misc.php?action=pun_attachment&amp;item=37&amp;download=0


http://www.bilimsanatmerkezi.net/misc.php?action=pun_attachment&amp;item=38&amp;download=0

Gönderi ekleri

Dosya eki ikonu gorseller.png 69.41 kb, 36 defa indirildi 2019-05-16 

Dosya eki ikonu r1.png 39.6 kb, 27 defa indirildi 2019-05-22 

Dosya eki ikonu r2.png 41.95 kb, 48 defa indirildi 2019-05-22 

Dosya eki ikonu r3.png 44.03 kb, 29 defa indirildi 2019-05-22 

Dosya eki ikonu r4.png 36.43 kb, 34 defa indirildi 2019-05-22