c# uygulama örnekleric# uygulama örnekleri

C# ile top zıplatma programı yapmak için öncelikle bir Windows Forms uygulaması oluşturulmalıdır. Ardından, programın çalışma mantığı şu şekilde olabilir:

C# Top Zıplatma Programı Nasıl Yapılır?

Topun hareketi için bir timer oluşturulur ve timer’ın interval değeri belirlenir.

Topun hareketi, timer’ın tick event’ında yapılır. Topun x ve y koordinatları belirlenir ve topun boyutları göz önünde bulundurularak ekrandan çıkıp çıkmadığı kontrol edilir.

Topun çizimi için bir Paint event’i oluşturulur ve topun x ve y koordinatlarına göre oval şeklinde bir nesne çizilir.

Topun zıplama hareketi, y koordinatının artırılıp azaltılmasıyla yapılır. Zıplama işlemi için bir flag değişkeni kullanılır ve top yere çarptığında flag değişkeni true yapılır. Flag değişkeni true olduğu sürece y koordinatı azaltılarak top zıplama hareketi yapar.

Topun zıplama hareketi, fare tıklaması ya da klavye tuşu ile de başlatılabilir. Bu durumda, MouseDown event’i ya da KeyDown event’i kullanılabilir.

Topun çarpma hareketi, topun x ve y koordinatları ile diğer nesnelerin koordinatları arasındaki mesafenin hesaplanmasıyla yapılır. Topun koordinatları ile diğer nesnenin koordinatları arasındaki mesafe, topun yarıçapı ile diğer nesnenin genişlik ya da uzunluğunun toplamının yarısının karşılaştırılmasıyla kontrol edilir. Eğer bu koşul sağlanıyorsa topun çarpma hareketi gerçekleşir.

Topun çarpma hareketi sonrasında, topun yönü değiştirilebilir veya topun hızı arttırılabilir.

Aşağıdaki örnek kod, basit bir top zıplatma programının nasıl yapılacağını göstermektedir. Bu programda, sadece topun zıplama hareketi ve çarpma hareketi işlemleri yapılmaktadır.

csharp

public partial class Form1 : Form
{
private int x, y, dx, dy, r;
private bool flag;
private Timer timer;
private Random random;
public Form1()
{
InitializeComponent();
x = ClientSize.Width / 2;
y = ClientSize.Height / 2;
dx = 2;
dy = 2;
r = 20;
flag = false;
timer = new Timer();
timer.Interval = 20;
timer.Tick += Timer_Tick;
random = new Random();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.Red, x – r, y – r, r * 2, r * 2);
}
private void Timer_Tick(object sender, EventArgs e)
{
// Topun yönünü ve konumunu güncelle
x += vx;
y += vy;
// Topun tabana çarpıp çarpmadığını kontrol et
if (y + r >= ClientSize.Height)
{
// Top tabana çarptı, yönü tersine çevir
vy = -vy;
// Sürtünme etkisini simüle etmek için hızını azalt
vx *= friction;
vy *= friction;
// Topun hızı minimum hızdan daha düşükse, durdur
if (Math.Abs(vy) < minSpeed)
{
timer.Enabled = false;
}
}
// Topun tavana çarpıp çarpmadığını kontrol et
if (y – r <= 0)
{
// Top tavana çarptı, yönü tersine çevir
vy = -vy;
}
// Topun sağ veya sol duvara çarpıp çarpmadığını kontrol et
if (x + r >= ClientSize.Width || x – r <= 0)
{
// Top duvara çarptı, yönü tersine çevir
vx = -vx;
}
// Formu yeniden çiz
Invalidate();
}

 

Bu olay her zaman belirtilen zaman aralıklarında tetiklenir ve topun hareketini kontrol eder. Topun yönü ve konumu her zaman güncellenir, sonra topun tabana, tavana veya yanlara çarpıp çarpmadığı kontrol edilir. Eğer top tabana çarparsa, hızı sürtünme katsayısı ile azaltılır ve minimum hızı geçerse hareketi durdurulur. Formu yeniden çizmek için Invalidate() yöntemi kullanılır.

Bu uygulamada herhangi bir sorun yaşarsanız aşağıya yorum olarak bırakabilirsiniz. Bunun yanı sıra web sitemizdeki diğer hazır C# programlama örneklerine ulaşmak için bu linke tıklayabilirsiniz. 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir