UYGULAMAYI İNDİR
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace iskambilOyun
{
public partial class Form1 : Form
{
#region Global değişkenler
ArrayList resimler = new ArrayList();
ArrayList kartlar = new ArrayList();
ArrayList etiketler = new ArrayList();
int[] oyunEl = new int[52];
int deste = 20, el = 5;
Label[] lblPuan;
int acikKartSayisi = 0;
int[] xx = new int[4];
int[] yy = new int[4];
#endregion
#region Form1
public Form1()
{
InitializeComponent();
}
#endregion
#region Form u yukle
private void Form1_Load(object sender, EventArgs e)
{
resimleriOlustur();
Dagit_Click(sender, e);
kartlariSirala();
ekranaYukle();
elPuanları();
ayniOlanKartlar();
}
#endregion
#region Yeni oyun Başlat
private void yeniOyunToolStripMenuItem_Click(object sender, EventArgs e)
{
Temizle();
resimleriOlustur();
Dagit_Click(sender, e);
kartlariSirala();
ekranaYukle();
elPuanları();
ayniOlanKartlar();
}
#endregion
#region Ekranı temizle
private void Temizle()
{
for (int i = 0; i < deste; i++)
{
((PictureBox)kartlar[i]).Dispose();
}
for (int i = 0; i < 8; i++)
{
((Label)etiketler[i]).Dispose();
}
acikKartSayisi = 0;
}
#endregion
#region Kartları Dağıt
private void Dagit_Click(object sender, EventArgs e)
{
ArrayList kagitlar = new ArrayList();
kagitlar.Clear();
kartlar.Clear();
etiketler.Clear();
int x = 375, y = 50, kart = 0, random;
Random rdn = new Random();
for (int i = 0; i < 4; i++)
{
Label lbl = new Label();
lbl.Name = i.ToString();
xx[i] = x - 100;
yy[i] = y + 115;
lbl.Location = new Point(x - 100, y + 115);
etiketler.Add(lbl);
this.Controls.Add(lbl);
for (int j = 0; j < el; j++)
{
PictureBox pcb = new PictureBox();
pcb.Name = kart.ToString();
pcb.Size = new Size(73, 98);
pcb.Location = new Point(x, y);
pcb.Click += new EventHandler(pcb_Click);
pcb.BringToFront();
x -= 25;
random = rdn.Next(0, 52);
while (kagitlar.Contains(random))
random = rdn.Next(0, 52);
kagitlar.Add(random);
kartlar.Add(pcb);
oyunEl[kart++] = random;
//pcb.Image = (Image)resimler[random];
this.Controls.Add(pcb);
}
if (i != 1)
y += 200;
if (i == 1)
x = 600;
if (i == 2)
x = 375;
if (i == 0)
x = 135;
}
}
#endregion
#region Kart resimlerini olustur
void resimleriOlustur()
{
Bitmap resim = new Bitmap(1, 1);
Graphics gr = null;
//Bu Bitmap için grafik nesnesi oluştur
int x = 0, y = 0, w = 73, h = 98;
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < 13; k++)
{
Rectangle seçili_alan = new Rectangle(x, y, w, h);
//Seçili alan büyüklüğünde bir Bitmap oluştur
resim = new Bitmap(seçili_alan.Width, seçili_alan.Height);
//Bu Bitmap için grafik nesnesi oluştur
gr = Graphics.FromImage(resim);
//Picture Box içindeki resmi yeni resmin 0,0 noktasına çiz
gr.DrawImage(pictureBox1.Image, 0, 0, seçili_alan, GraphicsUnit.Pixel);
//Yeni resmi pictureBox içine ata
resimler.Add(resim);
x += 73;
}
y += 98;
x = 0;
}
gr.Dispose();
}
#endregion
#region Tıklanan kartı ortaya al
void pcb_Click(object sender, EventArgs e)
{
PictureBox pcb = (PictureBox)sender;
pcb.Location = new Point(325, 250);
pcb.BringToFront();
int kartNo = int.Parse(pcb.Name);
int lblNo = 0;
if (kartNo < el && kartNo >= 0)
lblNo = 0;
else
if (kartNo < 2 * el && kartNo >= el)
lblNo = 1;
else
if (kartNo < 3 * el && kartNo >= 2 * el)
lblNo = 2;
else
lblNo = 3;
Label lbl = ((Label)etiketler[lblNo]);
int lblToplam = int.Parse(lbl.Text.Substring(14));
int kartPuan = 0;
if (oyunEl[kartNo] % 13 == 0)
kartPuan = 11;
else
if (oyunEl[kartNo] % 13 > 9)
kartPuan = 10;
else
kartPuan = oyunEl[kartNo] % 13 + 1;
lblToplam -= kartPuan;
lbl.Text = "Toplam Puan = " + lblToplam.ToString();
acikKartSayisi--;
DialogResult c = DialogResult.None;
if (acikKartSayisi == 0)
c = MessageBox.Show("Yeni oyun başlasın mı?", "Yeni Oyun", MessageBoxButtons.YesNo);
if (c == DialogResult.Yes)
yeniOyunToolStripMenuItem_Click(sender, e);
else if (c == DialogResult.No)
Close();
}
#endregion
#region Kartları Sırala
void kartlariSirala()
{
ArrayList oyun = new ArrayList();
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < el; k++)
oyun.Add(oyunEl[i * el + k]);
oyun.Sort();
for (int k = 0; k < el; k++)
oyunEl[i * el + k] = int.Parse(oyun[k].ToString());
oyun.Clear();
}
}
#endregion
#region Kartları Göster
void ekranaYukle()
{
for (int i = 0; i < deste; i++)
{
PictureBox pcb = (PictureBox)kartlar[i];
pcb.Image = (Image)resimler[oyunEl[i]];
acikKartSayisi++;
}
}
#endregion
#region Puanları Hesapla
private void elPuanları()
{
int toplamPuan = 0, kartPuan = 0;
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < el; k++)
{
if (oyunEl[i * el + k] % 13 == 0)
kartPuan = 11;
else
if (oyunEl[i * el + k] % 13 > 9)
kartPuan = 10;
else
kartPuan = oyunEl[i * el + k] % 13 + 1;
toplamPuan += kartPuan;
}
Label lbl = (Label)etiketler[i];
lbl.Text = "Toplam Puan = " + toplamPuan.ToString();
toplamPuan = 0;
}
}
#endregion
#region Puanları Hesapla
private void ayniOlanKartlar()
{
string aynısıvar = "";
int aynı = 1;
int name = 4;
for (int j = 0; j < 4; j++)
{
string etiket = "";
aynısıvar = "";
for (int i = 0; i < el; i++)
{
if (aynısıvar.IndexOf((oyunEl[5 * j + i] % 13).ToString()) < 0)
for (int k = i + 1; k < el; k++)
{
if (oyunEl[5 * j + i] % 13 == oyunEl[5 * j + k] % 13)
{
aynı++;
aynısıvar = (oyunEl[5 * j + 1] % 13).ToString() + " ";
}
}
if (aynı > 1)
etiket += aynı.ToString() + " tane " + (oyunEl[5 * j + i] % 13 + 1).ToString() + " ";
aynı = 1;
}
if (etiket == "")
etiket += "Aynı Olan Kart Yok";
else
etiket += " var";
Label lblet = new Label();
lblet.Name = name.ToString();
lblet.Location = new Point(xx[j], yy[j] + 30);
lblet.Text = etiket;
etiketler.Add(lblet);
this.Controls.Add(lblet);
name++;
}
}
#endregion
private void denemeToolStripMenuItem_Click(object sender, EventArgs e)
{
List< Image > parcaResimler = new List< Image >();
Bitmap resim;
Graphics gr = null;
Image alinanResim = Image.FromFile(@"C:\alinan.jpg");
int sutunSayisi = 2;
int satirSayisi = 5;
int x = 0;
int y = 0;
for (int i = 0; i < satirSayisi; i++)
{
for (int k = 0; k < sutunSayisi; k++)
{
Rectangle seçili_alan = new Rectangle(x, y, alinanResim.Width / sutunSayisi, alinanResim.Height / satirSayisi);
//Seçili alan büyüklüğünde bir Bitmap oluştur
resim = new Bitmap(seçili_alan.Width, seçili_alan.Height);
//Bu Bitmap için grafik nesnesi oluştur
gr = Graphics.FromImage(resim);
//Picture Box içindeki resmi yeni resmin 0,0 noktasına çiz
gr.DrawImage(alinanResim, 0, 0, seçili_alan, GraphicsUnit.Pixel);
//Yeni resmi parcaResimler içine image olarak kaydet
parcaResimler.Add(resim);
x += alinanResim.Width / sutunSayisi;
}
y += alinanResim.Height / satirSayisi;
x = 0;
}
gr.Dispose();
x = 30;
y = 30;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 5; j++)
{
PictureBox pcb = new PictureBox();
pcb.Size = new Size(alinanResim.Width / sutunSayisi, alinanResim.Height / satirSayisi);
pcb.Location = new Point(x, y);
pcb.Click += new EventHandler(pcb_Click);
pcb.BringToFront();
pcb.Image = parcaResimler[i * 5 + j];
x += 50;
y += 50;
this.Controls.Add(pcb);
}
}
}
}
}