Yılan oyunun
/*Küçük bir yılan oyunu :)*/
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 Yılan_oyunu
{
public partial class Form1 : Form
{
Yilan yılan;
Yilan.YilanYonu yön=Yilan.YilanYonu.sağa;
Yem Kucukyem;
Random q = new Random();
int[] sayilar = new int[30];
public int puan = 0;
bool basıldığıan = false;
public Form1()
{
for(int i=0;i<sayilar.Length;i++)
{
sayilar[i]=i*10;
}
InitializeComponent();
this.BackColor = Color.Lime;
yılan=new Yilan();
this.Paint += Form1_Paint;
this.KeyDown += Form1_KeyDown;
Kucukyem=new Yem(new Point(ONLUKSAYİLAR[q.Next(0,29)],ONLUKSAYİLAR[q.Next(0,29)]), new Size(10,10),10);
}
void Form1_Paint(object sender, PaintEventArgs e)
{
if (yılan.YilanKare[0].IntersectsWith(Kucukyem.yemKare))
{
Kucukyem.YemPozisyonDeğişimi(new Point(sayilar[q.Next(0, 29)], sayilar[q.Next(0, 29)]));
yılan.BüyüklükDegişimi(yılan.YilanKare.Length+1);
puan += Kucukyem.Puan;
label1.Text = "Puan=" + puan.ToString();
}
Kucukyem.YemÇiz(e.Graphics);
yılan.YilaÇiz(e.Graphics);
//Yılan kendisine ve kareye çarptığı zaman oyundan çıkılıyor
for (int i = 1; i < yılan.YilanKare.Length; i++)
{
if(yılan.YilanKare[0].IntersectsWith(yılan.YilanKare[i])||yılan.YilanKare[0].X<0||yılan.YilanKare[0].X>300||yılan.YilanKare[0].Y<0||yılan.YilanKare[0].Y>300)
{
timer1.Stop();
label2.Text = "Yılan Fişmkan oldu :(\n"+"Toplam Puanınız="+puan;
MessageBox.Show("Bir daha ki sefere kesin olacak ", "Oyun Bitti",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Close();
}
}
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Left && yön != Yilan.YilanYonu.sağa && basıldığıan == false)
{
yön=Yilan.YilanYonu.sola;
basıldığıan = true;
}
if(e.KeyData==Keys.Right && yön!=Yilan.YilanYonu.sola && basıldığıan==false)
{
yön=Yilan.YilanYonu.sağa;
basıldığıan = true;
}
if (e.KeyData == Keys.Up && yön != Yilan.YilanYonu.aşaği && basıldığıan == false)
{
yön=Yilan.YilanYonu.yukari;
basıldığıan = true;
}
if (e.KeyData == Keys.Down && yön != Yilan.YilanYonu.yukari && basıldığıan == false)
{
yön = Yilan.YilanYonu.aşaği;
basıldığıan = true;
}
}
//Burda yılanı kontrol ediyoruz yani yön veriyoruz
private void timer1_Tick(object sender, EventArgs e)
{
if (yön == Yilan.YilanYonu.yukari)
{
yılan.Yukarigit();
}
if (yön == Yilan.YilanYonu.aşaği)
{
yılan.Aşağigit();
}
if (yön == Yilan.YilanYonu.sağa)
{
yılan.Sağagit();
}
if (yön == Yilan.YilanYonu.sola)
{
yılan.Solagit();
}
this.Invalidate();
basıldığıan = false;
}
void Form1_Point(object sender, Point e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
//yılan kılasımız.....
public class Yilan {
private int x, y, genislik,yukseklik;
private SolidBrush firca;
private Rectangle[] yilanKare;
public SolidBrush Firca
{
get
{
return firca;
}
}
public Rectangle[] YilanKare
{
get
{
return yilanKare;
}
}
public Yilan()
{
x=20;
y=0;
genislik=10;
yukseklik=10;
firca =new SolidBrush(Color.Black);
yilanKare=new Rectangle[3];
for (int i = 0; i < yilanKare.Length; i++)
{
yilanKare[i] = new Rectangle(x, y, genislik, yukseklik);
x = 10;
}
}
//burda yılanı çiziyoruz
public void YilaÇiz(Graphics kagit)
{
for (int i = 0; i < yilanKare.Length; i++)
{
kagit.FillRectangle(firca, yilanKare[i]);
}
}
public void Aşağigit()
{
for (int i = yilanKare.Length-1; i>0 ; i--)
{
yilanKare[i] = yilanKare[i - 1];
}
yilanKare[0].Y+=10;
}
public void Yukarigit()
{
for (int i = yilanKare.Length-1; i > 0; i--)
{
yilanKare[i] = yilanKare[i - 1];
}
yilanKare[0].Y -= 10;
}
public void Sağagit()
{
for (int i = yilanKare.Length-1; i > 0; i--)
{
yilanKare[i] = yilanKare[i - 1];
}
yilanKare[0].X += 10;
}
public void Solagit()
{
for (int i = yilanKare.Length-1; i > 0; i--)
{
yilanKare[i] = yilanKare[i - 1];
}
yilanKare[0].X -= 10;
}
public void BüyüklükDegişimi(int YeniBüyükülk)
{
Array.Resize(ref yilanKare, YeniBüyükülk);
}
public enum YilanYonu
{
aşaği,yukari, sağa ,sola
}
}
//yem klasımızı oluşturuyoruz
public class Yem
{
Size Büyüklük;
Point Pozisyon;
int x, y, yüseklik, genişlik;
SolidBrush firca;
Rectangle yem;
int puan;
public int Puan
{
get
{
return puan;
}
}
public Rectangle yemKare
{
get
{
return yem;
}
}
public Yem(Point pozisyon, Size büyüklük, int puan)
{
this.Pozisyon = pozisyon;
this.Büyüklük = büyüklük;
firca = new SolidBrush(Color.Red);
this.puan = puan;
}
//burda yemi çiziyoruz
public void YemÇiz(Graphics kagit)
{
yem = new Rectangle(Pozisyon, Büyüklük);
kagit.FillRectangle(firca,yem);
}
public void YemPozisyonDeğişimi(Point yeniPozisyon)
{
Pozisyon = yeniPozisyon;
}
}
}
Yorumlar