2016-03-29 8 views
-1

В настоящее время я делаю тетрис на C++ без использования массивов. У меня есть класс для каждой части, и сделать это, я использую следующее:Tetris collission без массивов

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

И переместить часть I увеличения и уменьшения значения. На данный момент я могу переместить куски и заставить их остановиться, если они достигнут дна. Но я не знаю, как обнаружить столкновение между ними.

+1

какой-либо конкретной причине вы хотите, чтобы избежать массивов? –

+0

Но почему вы не хотите использовать массив? Это основное в программировании. Это странная задача в школе/университете? – LibertyPaul

+0

@ Liberty Paul Да, учитель хочет, чтобы мы избегали массивов. Но если я хочу реализовать массивы, мне придется перезапустить все это. –

ответ

0

Вы можете использовать ограничивающие прямоугольники и проверить, пересекаются ли они.

Что-то, как это должно работать: псевдокод:

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

это не сработает, если куски не являются идеальными прямоугольниками –

+0

Ну да, но он написал блок, поэтому я представил себе, что они прямоугольники. – macskay

+0

Неужели вы единственный человек в мире, который не играл в Тетрис? :-)) –