7 Mayıs 2013 Salı

AYNI OYUNUN C# İLE YAPILIŞI

C#.NET ve Yılan Oyunu
Şimdiki uygulamamızda bir yılan oyunu yapacaz...Biz yılanın haraketlerini ve yem'i yemesini sağlayacağız.Burada yılanın haraket mantıgını özetlersek yılanın başı haraket eder ve kuyrugu onun geçtiği yerlerden sırasıyla geçer vu bunuda açıklarsak baş kısmı koyu renlli bir kare diğer kısmı içi boş kare olan yılanımızın esas işlei kafayı oynatmaktır.Yon işini dort tuşla yapacaz....
keys.left,keys.right,keys.up,keys.down tuşalrını dinleyeceğiz bunu da şöyle hallederiz sağa basılmışsa değişkenimizin (kod)değeri 0 olur yukarı"4" aşağı "1",sol"3" kuyla kontrol ederiz...Timer nesnesinde bu kodları surekli olarak kontrol ettikten sonra kafanın nasıl haraket edeceğini belirlemiş oluruz...Gelelim kafanın haraketine kafanın uzunluk ve genişliği 10 birim olacak kuyrukta ole tabii...kuyrugun sadece x koordinatını ya da y koordinatını değiştirerek haraket etmesi sağlanır.yukarı ve aşağı gidişte y koordinatı sağ ve sola harakette ise x koordinatı değiştireceğiz...Şimdi işin en can alıcı noktasındayız...kuyruk sayımızın sayısı kadar kafanın geçtiği koordinatları yedekliyoruz. yedekledikten sonra o koordinatlara sırasıyla diğer karaleri(kuyruk)ekliyoruz bu şekilde kafa haraket etmiş olur...

Ekranı surekli yenilemeyi unutmuyoruz tabi temizle() fonksiyonu ile bunu halledebiliyoruz...Ve elde buluna koordnatlara tekrar boyama yapıp bırakıyoruz...."Kolaymış yav:)" dediğinizi duyar gibiyim...Geliştirmek ve özellik eklemek size ait kolay gele...
Kodlar --->

namespace blog_yalan
{
public partial class Form1 : Form
{
int say=0,uzunluk=5;
int a, b,indis=0,yem=0,puan=0;
int x1=0,y1=0;
int[] kuyrukx = new int[250];
int[] kuyruky = new int[250];
public Form1()
{
InitializeComponent();
}

public void kare_ciz(){


Graphics g;
Pen p = new Pen(Color.Yellow, 2);
SolidBrush s = new SolidBrush(Color.Yellow);
g = this.CreateGraphics();

g.DrawRectangle(p, x1, y1, 10, 10);

g.FillRectangle(s, x1, y1, 10, 10);

for (int i = 0; i < uzunluk; i++)
{
g.DrawRectangle(p, kuyrukx[i], kuyruky[i], 10, 10);
}

g.Dispose();

}
public void yem_at() {
Random r=new Random();
Graphics g;

a=r.Next()%390;
b=r.Next()%290;
a = a - (a % 10);
b = b - (b % 10);
if (a < 10) { a = 10; }
if (b < 10) { b = 10; }
SolidBrush s = new SolidBrush(Color.Red);
g = this.CreateGraphics();
g.FillRectangle(s, a, b, 10, 10);

}
public void temizle()
{

Graphics g = this.CreateGraphics();

g.Clear(Color.Black);
Pen p = new Pen(Color.Red, 3);

SolidBrush s = new SolidBrush(Color.Red);
g.FillRectangle(s, a, b, 10, 10);
g.DrawRectangle(p, 0, 0, 410, 303);
}
public void kontrol_et()
{


if (x1 == a && y1 == b) { yem = 0; puan += 5; uzunluk++; label2.Text = puan.ToString(); }


}
private void timer1_Tick(object sender, EventArgs e)
{
kontrol_et();
if (yem == 0) { yem_at(); yem = 1; }
if (say % 4 == 0)
{
temizle();
kuyrukx[indis] = x1;
kuyruky[indis] = y1;
indis++;
if (indis > uzunluk-1) { indis = 0; }
kare_ciz();

x1 += 10;
if (x1 >= 400){ x1 = 0; }
}
if (say % 4 == 1) {

temizle();
kuyrukx[indis] = x1;
kuyruky[indis] = y1;
indis++;
if (indis >uzunluk-1) { indis = 0; }
kare_ciz();

y1 += 10;
if (y1 >= 300) { y1 = 0; }
}
if (say % 4 == 2)
{
temizle();
kuyrukx[indis] = x1;
kuyruky[indis] = y1;
indis++;

if (indis > uzunluk-1) { indis = 0; }
kare_ciz();

x1 -= 10;
if (x1 <= 0) { x1 = 400; }
}
if (say % 4 == 3) {

temizle();
kuyrukx[indis] = x1;
kuyruky[indis] = y1;
indis++;
if (indis > uzunluk-1) { indis = 0; }
kare_ciz();

y1 -= 10;
if (y1 <= 0) { y1 = 300; }

}

}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
if (say == 1) { return; }
say = 1;
}
if (e.KeyCode == Keys.Right)
{
if (say == 0) { return; }
say = 0;
}
if (e.KeyCode == Keys.Left)
{
if (say == 2) { return; }
say = 2;
}
if (e.KeyCode == Keys.Up)
{
if (say == 3) { return; }
say = 3;
}
if (e.KeyCode == Keys.Escape)
{
Application.Exit();

}
}

}
}
http://www.filefactory.com/file/a17c2a5/n/blog_yalan.rar 

Hiç yorum yok:

Yorum Gönder