C# ile geliştirilmiş yılan oyunu genellikle şu adımları izler:
Başlangıç: Oyun başladığında yılan belirli bir boyutta, genellikle birkaç kutucuktan oluşur. Başlangıç konumu ve yönü belirlenir. Yılan, bir kutucuğa sahip baş bölümle başlar.
Hareket: Yılan her bir adımda belirli bir yönde hareket eder. Yön tuşları (yukarı, aşağı, sağa, sola) kullanılarak yılanın hareket yönü değiştirilebilir. Her adımda, yılanın başı hareket yönünde ilerler ve geride bıraktığı kuyruk parçaları peşinden gelir.
Yemek: Oyun sırasında, yılan belirli aralıklarla yiyecekleri yeme fırsatı bulur. Yemek yediğinde, yılanın boyu uzar ve skor artar. Yılanın kuyruğuna yaklaşınca yemek belirli bir noktaya yeniden yerleştirilir.
Çarpma Kontrolleri: Oyun, yılanın başının sınırlara veya kendi vücuduna çarpıp çarpmadığını kontrol eder. Eğer yılan kendisine veya sınırlara çarparsa, oyun biter ve kullanıcıya oyunun sonlandığına dair bir mesaj gösterilir.
Yeniden Başlatma: Oyun bittiğinde veya yılan kendisine çarptığında, kullanıcıya tekrar oynamak isteyip istemediği sorulur. Kullanıcı evet derse, oyun yeniden başlatılır; hayır derse, oyun sona erer.
Bu adımlar, tipik bir yılan oyununun işleyişini özetler. Yılan oyunları genellikle bu temel prensiplere dayanır ve kullanıcının yılanın büyümesini ve engellere çarpmadan ilerlemesini sağlayan bir deneyim sunar.
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_TRCodeTooTeR
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
gameTimer.Interval = 100;
gameTimer.Tick += new EventHandler(GameTimer_Tick);
//gameTimer.Start();
StartGame();
}
private Timer gameTimer = new Timer();
private Listsnake = new List ();
private Point yem = new Point();
private Point Bigyem = new Point();
private int directionX = 0, directionY = 0;
private int score = 0;
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.BackColor = Color.Azure;
}
private void StartGame()
{
snake.Clear();
snake.Add(new Point(40, 10));
snake.Add(new Point(30, 10));
snake.Add(new Point(20, 10));
snake.Add(new Point(10, 10));
directionX = 0;
directionY = 0;
score = 0;
label2.Text = "0";
GenerateFood();
}
int yemSay = 0;
private void GenerateFood()
{
if (yemSay == 10) yemSay = 0;
Random rand = new Random();
int i = 0;
while (true)
{
yem = new Point(rand.Next(0, pictureBox1.Width / 10) * 10, rand.Next(0, pictureBox1.Height / 10) * 10);
if (yem.X != snake[i].X && yem.Y != snake[i].Y)
{
i = 0;
break;
}
i++;
}
yemSay++;
}
private void GenerateBigFood()
{
Random rand = new Random();
//if (yemSay == 5)
{
int i = 0;
while (true)
{
Bigyem = new Point(rand.Next(0, pictureBox1.Width / 10) * 10, rand.Next(0, pictureBox1.Height / 10) * 10);
if (Bigyem.X != snake[i].X && Bigyem.Y != snake[i].Y)
{
i = 0;
break;
}
i++;
}
}
}
private void GameTimer_Tick(object sender, EventArgs e)
{
MoveSnake();
CheckCollision();
pictureBox1.Invalidate();
}
private void MoveSnake()
{
for (int i = snake.Count - 1; i > 0; i--)
{
snake[i] = snake[i - 1];
}
snake[0] = new Point(snake[0].X + directionX * 10, snake[0].Y + directionY * 10);
}
private void CheckCollision()
{
for (int i = 1; i < snake.Count; i++)
{
if (snake[0] == snake[i])
{
gameTimer.Stop();
MessageBox.Show("Oyun Bitti! Skor: " + score.ToString(), "Sonuç");
StartGame();
}
}
if (snake[0].X < 0 || snake[0].X >= pictureBox1.Width || snake[0].Y < 0 || snake[0].Y >= pictureBox1.Height)
{
gameTimer.Stop();
MessageBox.Show("Oyun Bitti! Skor: " + score.ToString(),"Sonuç");
StartGame();
//gameTimer.Start();
}
if (snake[0] == yem)
{
score++;
snake.Add(new Point(snake[snake.Count - 1].X, snake[snake.Count - 1].Y));
GenerateFood();
label2.Text = score.ToString();
gameTimer.Interval = (gameTimer.Interval - (score/50));
}
if (snake[0] == Bigyem)
{
score+=2;
snake.Add(new Point(snake[snake.Count - 1].X, snake[snake.Count - 1].Y));
snake.Add(new Point(snake[snake.Count - 1].X, snake[snake.Count - 1].Y));
GenerateBigFood();
label2.Text = score.ToString();
yemSay = 0;
}
}
Graphics canvas;
Brush snakeColor = Brushes.Green;
Brush foodColor = Brushes.DarkRed;
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
canvas = e.Graphics;
foreach (Point point in snake)
{
canvas.FillRectangle(snakeColor, new Rectangle(point.X, point.Y, 10, 10));
}
canvas.FillRectangle(new SolidBrush(Color.DarkOliveGreen), new Rectangle(snake[0].X, snake[0].Y, 10, 10));
canvas.FillRectangle(foodColor, new Rectangle(yem.X, yem.Y, 10, 10));
if (yemSay == 10)
{
canvas.FillEllipse(new SolidBrush(Color.Red), new Rectangle(Bigyem.X, Bigyem.Y, 10, 10));
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Up:
directionX = 0;
directionY = -1;
break;
case Keys.Down:
directionX = 0;
directionY = 1;
break;
case Keys.Left:
directionX = -1;
directionY = 0;
break;
case Keys.Right:
directionX = 1;
directionY = 0;
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("https://csharprogramlama.ohubilgi.com/");
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
gameTimer.Start();
}
}
}
C# ile çok fonksiyonlu hesap makinesi yapımı kodları....
TRCodeRooTeR 8443 1 2019-12-22 05:12:22C# ile yazılmış Bankamatik Otomasyonu program kodları...
TRCodeRooTeR 6990 1 2020-11-16 10:17:29