2016-03-29 13 views
-1

Şu anda diziler kullanmadan C++ 'da bir tetris yapıyorum. Ben her parça için bir sınıf var ve aşağıdaki bunu kullandığım çizmek:Diziler olmadan tetris çarpışması

void PieceI::drawPieceI 
{ 
    drawBlock (x1,y1); 
    drawBlock (x2,y2); 
    drawBlock (x3,y3); 
    drawBlock (x4,y4); 
} 

Ve artırmak ve değerlerini azaltma taş taşımak için. Şu an için parçaları taşıyabiliyor ve dibe ulaşırsa onları durdurabiliyorum. Ama aralarındaki çarpışmayı nasıl algılayacağımı bilmiyorum.

+1

Eğer diziler kaçınmak istiyorum herhangi bir neden var mı? –

+0

Ama neden bir dizi kullanmak istemiyorsunuz? Programlamada temel bir şey. Okulda/üniversitede bu garip bir görev mi? – LibertyPaul

+0

@Liberty Paul evet, öğretmen dizilerden kaçınmamızı istiyor. Ama eğer dizileri uygulamak istersem, her şeyi yeniden başlatmam gerekirdi. –

cevap

0

Sınırlayıcı kutuları kullanabilir ve kesişip kırılmadıklarını kontrol edebilirsiniz. Böyle

şey çalışmalıdır: Pseudocode:

if block1.x < block2.x < block1.x + block1.width: 
    if block1.y < block2.y < block2.y + block2.height: 
     print("Collision!") 
+0

bu parçalar mükemmel dikdörtgenler olmadığı sürece işe yaramaz –

+0

Evet, ama blok yazdı, ben de dikdörtgen olduklarını hayal ettim. – macskay

+0

Dünyada Tetris oynamış olan tek kişi siz olabilir miydiniz? :-)) –