2012-11-21 136 views
0

最近,我接受了一家好公司的採訪,並被要求用有效的數據結構設計俄羅斯方塊遊戲。我回答每個形狀的2D陣列,但採訪者正在尋找更好的答案。然後,他讓我也設計盧多。設計俄羅斯方塊遊戲

這兩個問題的任何輸入?

回答

3

我不知道Ludo怎麼辦,但是想到俄羅斯方塊的第一件事就是使用一個面具。

你可以製作一個'超級形狀',這個'超級形狀'可以包含俄羅斯方塊中的所有形狀,然後打開蒙版中的位來製作'形狀'。

這樣每個形狀可以是相同的對象類型。當它們「着陸」時,您可以打開代表該電路板的更大位掩碼中的位。當正確的位集合全部在「成行」時,您可以處理該事件。

3

一個不錯的選擇將是一個原點的三對偏移量的列表(第四個偏移量是{0.0})。這將幫助你編碼shapes如下:

I {0,1} {0,2} {0,3} 
J {0,1} {1,1} {2,1} 
L {0,1} {-1,1} {-2,1} 
O {0,1} {1,1} {1,0} 
S {-1,0} {-1,1} {-2,1} 
T {-1,1} {0,1} {1,1} 
Z {1,0} {1,1} {2,1} 

有了這些列表中,您將能夠繪製形狀,檢查可用空間爲相應形狀的「玻璃」,應用旋轉,玻璃內的地方在他們最後的安息之地。不同於二維結構,大多數操作需要兩個嵌套循環,這個結構可以讓你用一個循環進行測試,或者甚至不需要循環,如果你只需要四步就可以完成測試。