Yılan Oyunu — C#
[code lang=”csharp”]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;//www.gorselprogramlama.com
using System.Windows.Forms;
using System.Collections;
namespace Snake_Game
{
public partial class frmGame : Form
{
public frmGame()
{
InitializeComponent();
}
#region Snake Properties
PictureBox[] SnakePart = new PictureBox[4]; // Snake number of sections
int LastIndex = 0; // Snake start sections
int HeadIndex = 0; // Snake end sections (the snake’s head)
bool GameStatus = false; // Game start or stop
char SnakeWay = (char)0;
bool SnakeCrashed = false;
private void CreateSnake() // Create new a snake
{
SnakePart = new PictureBox[4];//www.gorselprogramlama.com
for (int i = 0; i < SnakePart.Length; i++)
{
SnakePart[i] = new PictureBox();
SnakePart[i].Width = 15;
SnakePart[i].Height = 15;
SnakePart[i].Top = 0;
SnakePart[i].Left = i * (SnakePart[i].Width+ 1);
SnakePart[i].BackColor = Color.Yellow;
pbGame.Controls.Add(SnakePart[i]);
}
HeadIndex = SnakePart.Length – 1;
}
private void DeleteSnake() // Delete a snake
{
for (int i = 0; i < SnakePart.Length; i++)
{
pbGame.Controls.Remove(SnakePart[i]);
}
}//www.gorselprogramlama.com
private void SnakePartAdd()
{
Array.Resize(ref SnakePart, SnakePart.Length + 1);
SnakePart[SnakePart.Length – 1] = new PictureBox();
SnakePart[SnakePart.Length – 1].Width = 15;
SnakePart[SnakePart.Length – 1].Height = 15;
// Dışarıda oluşsun bir tur tamamlanında otomatik olarak ekleniyormuş 😀
SnakePart[SnakePart.Length – 1].Top = -20; //*
SnakePart[SnakePart.Length – 1].Left = -20; //*
SnakePart[SnakePart.Length – 1].BackColor = Color.Yellow;
pbGame.Controls.Add(SnakePart[SnakePart.Length – 1]);
}
//www.gorselprogramlama.com
private void SnakeCrashControl() // Snake head crash controls func.
{
for (int i = 0; i < SnakePart.Length; i++) // Snake Crashed to tail
{
float mutlakX = Math.Abs((SnakePart[HeadIndex].Left + (SnakePart[HeadIndex].Width / 2)) – (SnakePart[i].Left + (SnakePart[i].Width / 2)));
float mutlakY = Math.Abs((SnakePart[HeadIndex].Top + (SnakePart[HeadIndex].Height / 2)) – (SnakePart[i].Top + (SnakePart[i].Height / 2)));
float farkGenislik = (SnakePart[HeadIndex].Width / 2) + (SnakePart[i].Width / 2);
float farkYukselik = (SnakePart[HeadIndex].Height / 2) + (SnakePart[i].Height / 2);
if ((farkGenislik > mutlakX) && (farkYukselik > mutlakY) && i != HeadIndex)
{
SnakeCrashed = true;
break;
}
}
if (SnakePart[HeadIndex].Left >= pbGame.Width – SnakePart[HeadIndex].Width)
{
SnakeCrashed = true;
}
else if (SnakePart[HeadIndex].Top >= pbGame.Height – SnakePart[HeadIndex].Height)
{
SnakeCrashed = true;
}
else if (SnakePart[HeadIndex].Top <= -1)
{
SnakeCrashed = true;
}
else if (SnakePart[HeadIndex].Left <= -1)
{
SnakeCrashed = true;
}
if (SnakeCrashed)
{
GameStatus = false;
tmrGoSnake.Enabled = false;
MessageBox.Show("Üzgünüm Çarptınız. Oyunu Kaybettiniz. Score : " + Score.ToString(), "Dikkat");
}
}//www.gorselprogramlama.com
int GoLeft = 0, GoTop = 0; // Snake go x and y coordinates
private void SnakeMove(int top, int left)
{
SnakePart[LastIndex].Left = SnakePart[HeadIndex].Left + left;
SnakePart[LastIndex].Top = SnakePart[HeadIndex].Top + top;
if (LastIndex == SnakePart.Length – 1)
{
LastIndex = 0;
HeadIndex = SnakePart.Length – 1;
}
else//www.gorselprogramlama.com
{
LastIndex++;
HeadIndex = LastIndex – 1;
}
}
#endregion
#region Food Properties
Random r = new Random();
PictureBox Food;
int Score = 0;
private void CreateFood()
{
int FoodTop = 16 * r.Next(1, 30);
int FoodLeft = 16 * r.Next(1, 30);
Food = new PictureBox();
Food.Width = 15;
Food.Height = 15;
Food.Left = FoodLeft;
Food.Top = FoodTop;
Food.BackColor = Color.Red;
pbGame.Controls.Add(Food);
}//www.gorselprogramlama.com
bool FoodEat = false;
private void FoodEatControl()
{
float mutlakX = Math.Abs((SnakePart[HeadIndex].Left + (SnakePart[HeadIndex].Width / 2)) – (Food.Left + (Food.Width / 2)));
float mutlakY = Math.Abs((SnakePart[HeadIndex].Top + (SnakePart[HeadIndex].Height / 2)) – (Food.Top + (Food.Height / 2)));
float farkGenislik = (SnakePart[HeadIndex].Width / 2) + (Food.Width / 2);
float farkYukselik = (SnakePart[HeadIndex].Height / 2) + (Food.Height / 2);
if ((farkGenislik > mutlakX) && (farkYukselik > mutlakY))
{
FoodEat = true;
}
if (FoodEat)
{
// New Part adding to snake
SnakePartAdd();
Score += 10;
lblScore.Text = "Score : " + Score.ToString();
DeleteFood();
CreateFood();
FoodEat = false;
}
}
private void DeleteFood()
{
pbGame.Controls.Remove(Food);
}//www.gorselprogramlama.com
#endregion
#region Form Events
private void frmGame_KeyDown(object sender, KeyEventArgs e) // Key Down Events
{
if (GameStatus) // If game start then change a go x and go y
{
if (e.KeyCode == Keys.Right && SnakeWay != ‘L’)
{
GoLeft = 0; GoTop = 0;
GoLeft = 16;
SnakeWay = ‘R’;
}
else if (e.KeyCode == Keys.Left && SnakeWay != ‘R’)
{
GoLeft = 0; GoTop = 0;
GoLeft = -16;
SnakeWay = ‘L’;
}
else if (e.KeyCode == Keys.Up && SnakeWay != ‘D’)
{
GoLeft = 0; GoTop = 0;
GoTop = -16;
SnakeWay = ‘U’;
}
else if (e.KeyCode == Keys.Down && SnakeWay != ‘U’)
{
GoLeft = 0; GoTop = 0;
GoTop = 16;
SnakeWay = ‘D’;
} //www.gorselprogramlama.com
}
}
private void tmrGoSnake_Tick(object sender, EventArgs e)
{
if (GameStatus)
{
SnakeMove(GoTop, GoLeft); // Snake Move
SnakeCrashControl();
FoodEatControl();
}
}
#endregion
#region MenuStrip Events
private void yeniOyunToolStripMenuItem_Click(object sender, EventArgs e) // Start a new game
{
duraklatToolStripMenuItem.Text = "Duraklat";
lblScore.Text = "Score : 0";
Score = 0;
FoodEat = false;
GoLeft = 16; GoTop = 0;
SnakeWay = ‘R’;
SnakeCrashed = false;
GameStatus = true;
LastIndex = 0;
DeleteSnake();
CreateSnake();//www.gorselprogramlama.com
DeleteFood();
CreateFood();
tmrGoSnake.Enabled = true;
}
private void duraklatToolStripMenuItem_Click(object sender, EventArgs e) // Pause – Start a game
{
if (GameStatus || duraklatToolStripMenuItem.Text == "Devam Et") // Game started or text is = "Devam Et" Then
{
if (duraklatToolStripMenuItem.Text == "Duraklat")
{
tmrGoSnake.Enabled = false;
GameStatus = false;
duraklatToolStripMenuItem.Text = "Devam Et";
}
else
{
tmrGoSnake.Enabled = true;
GameStatus = true;
duraklatToolStripMenuItem.Text = "Duraklat";
}
}
}
private void hakkındaToolStripMenuItem_Click(object sender, EventArgs e)
{
frmAbout frmA = new frmAbout();
frmA.ShowDialog();//www.gorselprogramlama.com
}
#endregion
}
}
[/code]

Ümit Demirtaş

Bir oyun programlamak yada bi oyunla ilgili hile kurmak için hangi programı bilmek lazım
ibrahim :
Csharp işini görebilir.
#endregion
GÖREVİ NEDİR?
CANSU TERE :
belli kodları bir aralığa bölmen ve ayırman lazım olduğunda kullanılır.
Böyle yapınca kodlar daha düzenli oluyor ve okunması kolay oluyor.
İşlem olarak herhangi bir görevi yok.
region mail
//mail gönderecek kodlar buraya
endregion region db kayıt işlemleri
// kayıt yapacak kodlar buraya
endregion
………..
Hangi Format da Kaydedersek Çalışır?
Bu kodları kendime göre işlemeye çalıştım. Zorluk seviyesi ekledim ve şu şekilde engeller ekledim.
PictureBox[] barrier1 = new PictureBox[1];
for (int i = 0; i < barrier1.Length; i++)
{
barrier1[i] = new PictureBox();
barrier1[i].Width = 180;
barrier1[i].Height = 15;
barrier1[i].Top = 100;
barrier1[i].Left = 150+ i *( barrier1[i].Width + 1);
barrier1[i].BackColor = Color.Black;
pbGame.Controls.Add(barrier1[i]);
}
PictureBox[] barrier2 = new PictureBox[1];
for (int i = 0; i < barrier2.Length; i++)
{
barrier2[i] = new PictureBox();
barrier2[i].Width = 180;
barrier2[i].Height = 15;
barrier2[i].Top = 225;
barrier2[i].Left = 150 + i * (barrier2[i].Width + 1);
barrier2[i].BackColor = Color.Black;
pbGame.Controls.Add(barrier2[i]);
}
PictureBox[] barrier3 = new PictureBox[1];
for (int i = 0; i < barrier3.Length; i++)
{
barrier3[i] = new PictureBox();
barrier3[i].Width = 180;
barrier3[i].Height = 15;
barrier3[i].Top = 350;
barrier3[i].Left = 150 + i * (barrier3[i].Width + 1);
barrier3[i].BackColor = Color.Black;
pbGame.Controls.Add(barrier3[i]);
}
Bu engellere çarpınca yanması gerekiyor. Bunu nasıl yapabilirim ? SnakeCrashControl() içinde denemediğim şey kalmadı yardımcı olur musunuz ?
çok güzel bayıldım