C# mayın tarlası oyunum

deli kurt1453

Katılımcı Üye
13 Ağu 2011
368
0
Korriban

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

namespace mayinTarlasiForm
{
public partial class MayınTarlası : Form
{

private System.Windows.Forms.PictureBox pictureBox_MayınTarlası;
private System.Windows.Forms.Label label_kalanmayın;
private System.Windows.Forms.Button button_YeniOyun;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;

public MayınTarlası()
{
InitializeMyComponent();
}

private **** MayınTarlasıOlustur()
{
//Mayın tarlasını oluştur
if (Mayın.bmp != null)
{
Mayın.MayınRengi = Brushes.Red;
Mayın.ArkaPlan = Brushes.Blue;
Mayın.ButonRengi = Brushes.White;
}

//mayın tarlası mayın sayısı sıfır ise 40 yap (minimum değer)
if (Mayın.OyunMayınSayısı == 0)
Mayın.OyunMayınSayısı = 40;
pictureBox_MayınTarlası.Visible = false;
Mayın.MayınYerleştir(); // mayınları yerleştirme
Mayın.MayınTarlasınıDoldur(); // arka plan mayınları yerleştirme
pictureBox_MayınTarlası.Image = Mayın.bmp;
pictureBox_MayınTarlası.*******();
int satir = 0, sutun = 0;
Mayın.KalanMayınSayısı = Mayın.MayınSayısı;
Mayın.TespitEdilenMayınSayısı = 0; // kalan mayın sayısını hesaplamak için
label_kalanmayın.Text = "Kalan Mayın Sayısı :" + Mayın.KalanMayınSayısı.ToString();

//mayın tarlası butonlarını dinamik olarak oluşturma
for (int i = 0; i < 400; i++)
{
if (i % 20 == 0 && i != 0)
{
satir++;
sutun = 0;
}
Button tb = new Button();// buton örneği oluşturma
//Mayin tarlası, butonun özelliklerini atama
tb.Name = i.ToString();
tb.TabIndex = i;
tb.TabStop = false;
tb.Text = "";
tb.Size = new System.Drawing.Size(20, 20);
Point p = new System.Drawing.Point(sutun * tb.Width + 20, satir * tb.Height + 20);
tb.******** = p;
tb.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
tb.Visible = true;
tb.BackColor = Color.Gray;
tb.BringToFront();
tb.MouseDown += new MouseEventHandler(this.butonlarClick);
pictureBox_MayınTarlası.Controls.Add(tb);

this.AutoSize = true;
Mayın.Butonlar.Add(tb); //oluşan buton hafızaya al
sutun++;
}
pictureBox_MayınTarlası.Visible = true;
pictureBox_MayınTarlası.Size = new Size(440, 440);
Mayın.LineCiz(); //mayın tarlası butonların yerleşeceği tabloyu çizme
}

private **** butonlarClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
//Mayın tarlası butonlarından biri tıklandığında oluşacak olay metodu
Button BasılanButon = (Button)sender;
if (BasılanButon.BackColor == Color.Gray)
if (e.Button == MouseButtons.Left)
{
BasılanButon.Visible = false;
if (Mayın.MayınVarMı(BasılanButon.********.X, BasılanButon.********.Y))
{
for (int i = 0; i < Mayın.OyunMayınSayısı; i++)
((Button)Mayın.Butonlar[Mayın.MayınYerleri]).Visible = false;
MessageBox.Show("Oyun Bitti");
for (int i = 0; i < 400; i++)
((Button)Mayın.Butonlar).Enabled = false;
}
else
{
if (Mayın.EtiketKoy(BasılanButon) != "0")
pictureBox_MayınTarlası.Controls.Add(Mayın.label_buton);
}
if (Mayın.EtiketKoy(BasılanButon) == "0")
{
BosYerleriAc(BasılanButon);
int i = 0;
while (Mayın.BakılanButonlar.Count - i > 0)
{
if (Mayın.EtiketKoy((Button)Mayın.BakılanButonlar) == "0")
BosYerleriAc((Button)Mayın.BakılanButonlar);
else
pictureBox_MayınTarlası.Controls.Add(Mayın.label_buton);
i++;
}
for (int a = 0; a < Mayın.BakılanButonlar.Count; a++)
((Button)Mayın.BakılanButonlar[a]).Visible = false;
}
}
if (e.Button == MouseButtons.Right)
{
if (((Button)Mayın.Butonlar[int.Parse(BasılanButon.Name)]).BackColor == Color.Gray)
{
((Button)Mayın.Butonlar[int.Parse(BasılanButon.Name)]).BackColor = Color.GreenYellow;
Mayın.KalanMayınSayısı--;
for (int i = 0; i < Mayın.MayınSayısı; i++)
if (((Button)Mayın.Butonlar[int.Parse(BasılanButon.Name)]).Name == Mayın.MayınYerleri.ToString())
Mayın.TespitEdilenMayınSayısı++;
}
else
{
((Button)Mayın.Butonlar[int.Parse(BasılanButon.Name)]).BackColor = Color.Gray;
Mayın.KalanMayınSayısı++;
for (int i = 0; i < Mayın.MayınSayısı; i++)
if (((Button)Mayın.Butonlar[int.Parse(BasılanButon.Name)]).Name == Mayın.MayınYerleri.ToString())
Mayın.TespitEdilenMayınSayısı--;
}
}
label_kalanmayın.Text = "Kalan Mayın Sayısı :" + Mayın.KalanMayınSayısı.ToString();
Mayın.LineCiz();
if (Mayın.TespitEdilenMayınSayısı == Mayın.MayınSayısı)
{
MessageBox.Show("Oyunu Kazandınız. Tebrikler.");
for (int i = 0; i < 400; i++)
((Button)Mayın.Butonlar).Enabled = false;
}



}

private **** BosYerleriAc(Button ArananButon)
{
bool varmı = false;
int x = ArananButon.********.X, y = ArananButon.********.Y;
if (x <= 400 && x >= 20 && y <= 400 && y >= 20)
{
if (x > 20)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 1] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 1]);
}
varmı = false;

if (x < 400)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if (int.Parse(ArananButon.Name) + 1 == int.Parse(((Button)Mayın.BakılanButonlar).Name))
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 1]));
}
varmı = false;

if (x > 20 && y > 20)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 21] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 21]));
}
varmı = false;

if (x < 400 && y > 20)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 19] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 19]));
}

varmı = false;

if (y > 20)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 20] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) - 20]));
}
varmı = false;

if (y < 400)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 20] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 20]));
}
varmı = false;

if (x > 20 && y < 400)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 19] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 19]));
}
varmı = false;

if (x < 400 && y < 400)
{
for (int b = 0; b < Mayın.BakılanButonlar.Count; b++)
if ((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 21] == (Button)Mayın.BakılanButonlar)
varmı = true;
if (!varmı)
Mayın.BakılanButonlar.Add(((Button)Mayın.Butonlar[int.Parse(ArananButon.Name) + 21]));
}
}
}

private **** button_YeniOyun_Click(object sender, EventArgs e)
{
// yeni mayın tarlası oyunu için tabloyu temizle
Temizle();
//yeni mayın tarlası oyunu için yeni tablo oluştur
MayınTarlasıOlustur();
}

private **** Temizle()
{
// tabloyu temizleme metodu, bütün özellikleri temizler
Mayın.Butonlar.Clear();
Mayın.BakılanButonlar.Clear();
pictureBox_MayınTarlası.Controls.Clear();
Mayın.gfx.FillRectangle(System.Drawing.Brushes.Blue, Mayın.rect);
pictureBox_MayınTarlası.Image = Mayın.bmp;
pictureBox_MayınTarlası.*******();
Mayın.MayınSayısı = 0;
}

private **** MayınTarlası_Load(object sender, EventArgs e)
{
// Mayın tarlası formu açılırken oyunu başlatma
Mayın.Load_MayınTarlası();
// mayın tarlasını oluşturma
MayınTarlasıOlustur();
}

private **** toolStripMenuItem4_Click(object sender, EventArgs e)
{
Mayın.OyunMayınSayısı = 80;
Temizle();
MayınTarlasıOlustur();
}

private **** toolStripMenuItem3_Click(object sender, EventArgs e)
{
Mayın.OyunMayınSayısı = 40;
Temizle();
MayınTarlasıOlustur();
}

private **** toolStripMenuItem5_Click(object sender, EventArgs e)
{
Mayın.OyunMayınSayısı = 100;
Temizle();
MayınTarlasıOlustur();
}

private **** InitializeMyComponent()
{
// C sharp mayın tarlası oyun da kullanılacak kontrollerin özelliklerini atama

this.pictureBox_MayınTarlası = new System.Windows.Forms.PictureBox();
this.label_kalanmayın = new System.Windows.Forms.Label();
this.button_YeniOyun = new System.Windows.Forms.Button();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.pictureBox_MayınTarlası)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// pictureBox_MayınTarlası
//
this.pictureBox_MayınTarlası.******** = new System.Drawing.Point(25, 88);
this.pictureBox_MayınTarlası.Name = "pictureBox_MayınTarlası";
this.pictureBox_MayınTarlası.Size = new System.Drawing.Size(440, 416);
this.pictureBox_MayınTarlası.TabIndex = 0;
this.pictureBox_MayınTarlası.TabStop = false;
//
// label_kalanmayın
//
this.label_kalanmayın.AutoSize = true;
this.label_kalanmayın.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label_kalanmayın.******** = new System.Drawing.Point(342, 47);
this.label_kalanmayın.Name = "label_kalanmayın";
this.label_kalanmayın.Size = new System.Drawing.Size(37, 15);
this.label_kalanmayın.TabIndex = 1;
this.label_kalanmayın.Text = "label1";
//
// button_YeniOyun
//
this.button_YeniOyun.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
this.button_YeniOyun.Enabled = false;
this.button_YeniOyun.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button_YeniOyun.******** = new System.Drawing.Point(25, 42);
this.button_YeniOyun.Name = "button_YeniOyun";
this.button_YeniOyun.Size = new System.Drawing.Size(294, 23);
this.button_YeniOyun.TabIndex = 2;
this.button_YeniOyun.TabStop = false;
this.button_YeniOyun.Text = "Yeni Oyun Başlat";
this.button_YeniOyun.UseVisualStyleBackColor = true;
this.button_YeniOyun.Click += new System.EventHandler(this.button_YeniOyun_Click);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1});
this.menuStrip1.******** = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(492, 24);
this.menuStrip1.TabIndex = 3;
this.menuStrip1.Text = "menuStrip1";
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem3,
this.toolStripMenuItem4,
this.toolStripMenuItem5});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(77, 20);
this.toolStripMenuItem1.Text = "Mayın Sayısı";
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.Size = new System.Drawing.Size(103, 22);
this.toolStripMenuItem3.Text = "40";
this.toolStripMenuItem3.Click += new System.EventHandler(this.toolStripMenuItem3_Click);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(103, 22);
this.toolStripMenuItem4.Text = "80";
this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click);
//
// toolStripMenuItem5
//
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
this.toolStripMenuItem5.Size = new System.Drawing.Size(103, 22);
this.toolStripMenuItem5.Text = "100";
this.toolStripMenuItem5.Click += new System.EventHandler(this.toolStripMenuItem5_Click);
//
// MayınTarlası
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(492, 516);
this.Controls.Add(this.button_YeniOyun);
this.Controls.Add(this.label_kalanmayın);
this.Controls.Add(this.pictureBox_MayınTarlası);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Name = "Mayın-Tarlası";
this.Text = "Mayın Tarlası";
this.Load += new System.EventHandler(this.MayınTarlası_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox_MayınTarlası)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();

}
}

class Mayın
{

//Mayın oyunu çalıştıracak mayın tarlası sınıfı özellikleri ve metotları

public static int[] MayınYerleri = new int[1000];
public static ArrayList Butonlar = new ArrayList();
public static ArrayList BakılanButonlar = new ArrayList();
public static Label label_buton;
public static System.Drawing.Bitmap bmp;
public static System.Drawing.Graphics gfx;
public static System.Drawing.Rectangle rect;
public static System.Drawing.Brush MayınRengi;
public static System.Drawing.Brush ButonRengi;
public static System.Drawing.Brush ArkaPlan;
public static Graphics cizgili;
public static int MayınSayısı;
public static int TespitEdilenMayınSayısı;
public static int KalanMayınSayısı;
public static int OyunMayınSayısı;

public static **** MayınYerleştir()
{
bool aynı = false;
Random r = new Random();
for (int i = 0; i < OyunMayınSayısı; i++)
{
MayınYerleri = r.Next(400);
MayınSayısı++;
for (int j = 1; j < MayınSayısı; j++)
{
if (MayınYerleri == MayınYerleri[j - 1])
{
MayınSayısı--;
aynı = true;
}
}
if (aynı)
{
i--;
aynı = false;
}
}
}

public static **** Fill_Mayın(int x, int y)
{
//arka plan mayınları oluştur
gfx.FillRectangle(MayınRengi, x * 20 + 20, y * 20 + 20, 20, 20);
}


public static int Find_EtrafındakiMayınSayısı(int x, int y)
{
// tıklanan butonun etrafında bulunan mayın sayısını hesaplama
int ToplamMayınSayısı = 0;

try
{
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x - 10, y + 10))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x + 30, y + 10))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x + 10, y - 10))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x + 10, y + 30))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x - 10, y - 10))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x - 10, y + 30))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x + 30, y - 10))
ToplamMayınSayısı++;
if (bmp.GetPixel(x + 10, y + 10) != bmp.GetPixel(x + 30, y + 30))
ToplamMayınSayısı++;
}
catch (Exception e) { string str = e.Message.ToString(); }

return ToplamMayınSayısı;
}


public static bool MayınVarMı(int x, int y)
{
//tıklanan yerde mayın var mı

if (bmp.GetPixel(x + 10, y + 10) == bmp.GetPixel((MayınYerleri[0] % 20) * 20 + 30, (MayınYerleri[0] / 20) * 20 + 30))
return true;
else
return false;
}

public static string EtiketKoy(Button ArananButon)
{
//Mayın yoksa açılan butonun yerine etrafındaki mayın sayısını gösteren yazıyı yaz
label_buton = new Label();
Point p = new Point(ArananButon.********.X + 1, ArananButon.********.Y + 1);
label_buton.******** = p;
label_buton.Size = new System.Drawing.Size(18, 18);
label_buton.Visible = true;
label_buton.BackColor = Color.Blue;
label_buton.TextAlign = ContentAlignment.MiddleCenter;
label_buton.Text = Mayın.Find_EtrafındakiMayınSayısı(ArananButon.********.X, ArananButon.********.Y).ToString();
return label_buton.Text;
}

public static **** LineCiz()
{

//Mayın tarlasının arka planını çizme
Pen kalem = new Pen(Color.Black, 1);
cizgili = Graphics.FromImage(bmp);
for (int i = 0; i < 21; i++)
{
cizgili.DrawLine(kalem, 20, 20 * i + 20, 420, 20 * i + 20);
cizgili.DrawLine(kalem, 20 * i + 20, 20, 20 * i + 20, 420);
}
}
}
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.