using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace xball
{
public partial class Form1 : Form
{
ArrayList kutucuklar = new ArrayList();
Timer timer1;
Random rdn;
Button btnTop;
int yerX = 5,yerY=5;
int kutuSayisi = 5;//kırılan kutusayısı
int Hak = 3;
int Level = 1;
int hareket = 5;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form1_KeyDown);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
this.Text = "Seviye : " + Level.ToString() + " Kalan hakkınız :" + Hak.ToString();
Yenile();
kutucuklarOlustur();
timer1.Tick += new EventHandler(timer1_Tick);
//MessageBox.Show("kontrolLeft" +kontrol.Left +"\nkontrolRight" +kontrol.Right + "\nkontrolBottom" +kontrol.Bottom + "\nkontrolTop" + kontrol.Top);
}
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
kontrol.Left = kontrol.Left - 50; //yon tuslarıyla hareket calısması
else if (e.KeyCode == Keys.D) //mouse ekranda olmazsa calısıorrrr ama mouse kadar iyi degil
kontrol.Left = kontrol.Left + 50;
}
void timer1_Tick(object sender, EventArgs e)
{
xballHareket();
carpmaDenetimi();
oyunBittiMi(sender, e);
KalanHak(sender, e);
}
void Form1_MouseMove(object sender, MouseEventArgs e)
{
if( e.X <350)
kontrol.Left = e.X;
//kontrol.Top = e.Y; //yukarıya hareket eder alttaki buton
}
private void Yenile()
{
int x, y;
timer1 = new Timer();
timer1.Enabled = true;
timer1.Interval = 5;
rdn = new Random();
x = rdn.Next(0, 50);
y = rdn.Next(150, 250);
kutuSayisi = 5 * Level; //bes tane yeyınce level atlıor.
xball.Location = new Point(x, y);
yerX = 1 + Level * 1;
yerY = -1 - Level * 1;
if (yerX < 0)
hareket = yerX * -1;
else
hareket = yerX;
}
private void KalanHak(object sender, EventArgs e)
{
if (xball.Bottom > kontrol.Bottom )// && (xball.Right >= kontrol.Left) && (xball.Left <= kontrol.Right))//&&
{
Hak--;
for (int i = 0; i < kutucuklar.Count; i++)
{
Button btn = ((Button)kutucuklar[i]);
((Button)kutucuklar[i]).Dispose();
}
kutucuklar.Clear();
timer1.Enabled = false;
DialogResult dr = DialogResult.None;
if (Hak > 0)
{
dr = MessageBox.Show("Yandınız. Kalan hakkınız : " + Hak.ToString());
if(dr ==DialogResult.OK)
Form1_Load(sender, e);
}
else if (Hak == 0)
{
MessageBox.Show("GameOver");
this.Close();
}
}
}
private void oyunBittiMi(object sender, EventArgs e)
{
DialogResult dr = DialogResult.None;
if (kutuSayisi == 0)
{
timer1.Enabled = false;
dr = MessageBox.Show("Tebrikler. Seviye " + Level + " Bitirdiniz. ");
Level++;
}
if (dr == DialogResult.OK)
Form1_Load(sender, e);
}
private void xballHareket()
{
if (this.ClientSize.Width <= xball.Right)
yerX = yerX * -1;
if (0 >= xball.Left)
yerX = yerX * -1;
if (this.ClientSize.Height<= xball.Bottom)
yerY = yerY * -1;
if (0 >= xball.Top)
yerY = yerY * -1;
if (xball.Bottom >= kontrol.Top + 5 && xball.Right >= kontrol.Left && xball.Left <= kontrol.Right)
yerY = yerY * -1;
xball.Location = new Point(xball.Left + yerX, xball.Top + yerY);
}
private void kutucuklarOlustur()
{
for (int j = 0; j < Level; j++)
{
for (int i = 0; i < 14; i++) //14 ekrandaki buton sayısı
{
btnTop = new Button();
btnTop.Name = i.ToString();
btnTop.Location = new Point(10+i*30, j*30 );
btnTop.Width = 20;
btnTop.BackColor = Color.Black;
this.Controls.Add(btnTop);
kutucuklar.Add(btnTop);
}
}
}
private void carpmaDenetimi()
{
Rectangle r = new Rectangle();
Rectangle t = new Rectangle();
t.X=xball.Left;
t.Y=xball.Top;
t.Height=xball.Height;
t.Width=xball.Width;
for (int i = 0; i < kutucuklar.Count; i++)
{
Button btn =((Button)kutucuklar[i]);
r.X=btn.Left;
r.Y=btn.Top;
r.Height=btn.Height;
r.Width=btn.Width;
if (r.IntersectsWith(t))
{
kutuSayisi--;
kutucuklar.RemoveAt(i);
if (yerY > 0 && yerX >0)
{
if (btn.Top <= xball.Bottom && btn.Left < xball.Right - hareket)
yerY = yerY * -1;
else
yerX = yerX * -1;
}
else
if (yerY > 0 && yerX < 0)
{
if (btn.Top <= xball.Bottom && btn.Right > xball.Left + hareket)
yerY = yerY * -1;
else
yerX = yerX * -1;
}
else
if (yerY < 0 && yerX > 0)
{
if (btn.Bottom >= xball.Top && btn.Left < xball.Right - hareket)
yerY = yerY * -1;
else
yerX = yerX * -1;
}
else
if (yerY < 0 && yerX < 0)
{
if (btn.Bottom >= xball.Top && btn.Right > xball.Left + hareket)
yerY = yerY * -1;
else
yerX = yerX * -1;
}
btn.Dispose();
}
}
}
}
}
Hiç yorum yok:
Yorum Gönder