/// <summary> /// Oyunu başlatır, oyun bitene kadar döngü devam eder. OyunForm ile eventler ile haberleşir. Her bir iterationda bütün şekiller ve tahta yeniden çizilir. /// </summary> public void Baslat() { OyunBasladiMi = true; OyunZamani.Restart(); while (!OyunBittiMi) { if (!AktifSekil.HareketEttir(new Point(0, 1))) { Tahta.SekliDurdur(AktifSekil); if (Tahta.SatilariSil() > 0) { Skor += 100; } if (Tahta.OyunBittiMi()) { Skor += (int)TimeSpan.FromMilliseconds(OyunZamani.ElapsedMilliseconds).TotalSeconds; OyunBittiMi = true; OnOyunBitti(); break; } else { AktifSekil = new Sekil(SekilOrnekleri[Rndm.Next(0, 7)], new Point(4, 0), Tahta); } } OnCiz(); Thread.Sleep(OyunGecikmesi); } }
/// <summary> /// Oyun için gerekli özellikleri oluşturur. /// </summary> public Oyun() { Tahta = new Tahta(10, 20); SekilleriOlustur(); OyunGecikmesi = 250; AktifSekil = new Sekil(SekilOrnekleri[Rndm.Next(0, 7)], new Point(4, 0), Tahta); }
/// <summary> /// Seçilen şekli, pozisyonu ve oyun tahtasini parametre alarak nesneye özelliklerine set eder. /// </summary> /// <param name="secilenSekil"></param> /// <param name="pozisyon"></param> /// <param name="oynTahtasi"></param> public Sekil(Sekil secilenSekil, Point pozisyon, Tahta oynTahtasi) { this.Tertomino = secilenSekil.Tertomino; this.Merkez = new Nokta(secilenSekil.Merkez.X, secilenSekil.Merkez.Y); this.Bloklar = new Nokta[4]; for (int i = 0; i < 4; i++) { this.Bloklar[i] = new Nokta(); this.Bloklar[i].X = secilenSekil.Bloklar[i].X; this.Bloklar[i].Y = secilenSekil.Bloklar[i].Y; } this.Pozisyon = new Point(pozisyon.X, pozisyon.Y); this.OynTahtasi = oynTahtasi; }