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;
}
}
}
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();
}
}
}
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];
}
}
///
/// 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;
}
}
}