2010-04-20 81 views
0

對於大學我們應該寫一個遊戲(語言是modula2你知道它的一點小機會)。 每個tetromino通過一箇中心部分和3個相關部分定義, 現在談到旋轉我只是旋轉相關塊(線性代數)。俄羅斯方塊輪換

我自問自己是如何處理旋轉時,用戶做了這件作品已經「降落」,因爲比用戶有一點時間留下他的快速移動到所需的位置,但在全俄羅斯方塊版本網頁可以「旋轉」其他部分,但我似乎沒有得到它與我的輪換。

我需要旋轉什麼?有準則嗎? 謝謝

+4

我不知道Modula-2,但我不認爲需要線性代數來旋轉俄羅斯方塊。 – kennytm 2010-04-20 17:33:27

+0

我會爭辯說其他版本已經損壞。在'真實'俄羅斯方塊中,一旦棋子落地,你就沒有最後一秒的旋轉。 – meagar 2010-04-20 17:35:39

+0

@Kenny:雖然可能是這個特定項目的要求。 – Pops 2010-04-20 17:35:56

回答

3

如果我正確理解你的問題,沒有正確的答案。是否可以「移動」其他部分取決於您特定作業的指導原則;可以編寫允許它的代碼和不允許的代碼。

9

Tetris Wiki指定了一個辦法,這些所謂的wall kicks完成:

當球員時在廣場那裏是四格拼板通常會在旋轉後佔據不存在空間旋轉一塊牆壁踹發生。爲了彌補,遊戲爲tetromino設置了一定數量的替代空間。 [...] 最簡單的牆球算法是嘗試將tetromino向右移動一個空格,然後向左移動一個空格,如果兩個都不能完成,則失敗

還有其他方法,如由Tetris Guideline強制要求Super Rotation System指定的方法。該系統使用a set of tables來確定可能的牆踢。

+0

+1分享存在俄羅斯方塊維基。 – Cheeso 2010-04-20 17:49:27

0

考慮到現場的俄羅斯方塊件下降是一個矩陣

1)如果你想給一點時間,爲用戶旋轉它,用你的算法

  • 組啓動時定時器您的最低塊位於與同一列已具有塊的行相鄰的行上。
  • 如果用戶在計時器結束之前嘗試移動該部件,請檢查一行和一列上是否有可能成爲可移動部件的一個塊的位置的塊。如果已經填寫如果你想給一點時間,爲用戶使用其它算法

    • 旋轉它,你可以考慮你的塊作爲你不能移動它

    2) 3x3立方體,並通過2×2塊旋轉,即使該片段上不存在(例如,L格式的片段)。所以你只需要做我在(1)的第二個按鈕上說的,它應該沒問題!這是一個更簡單的算法恕我直言。

0

首先,您可能想澄清您的問題中的術語。在第一段中,「片」似乎是別人可能稱之爲「瓷磚」的東西;即,每個tetromino由四個「塊」或「瓷磚」組成。但是,在該段末尾,您將其稱爲「塊」。然後,在第二段中,「片」似乎與「tetromino」同義:「片落地」,「移動片」。所以在你的問題中,你是什麼意思?也許「Tetromino應該旋轉哪個瓷磚?」

如果這確實是你的問題,答案是它是實現定義的。如果你嘗試了不同的遊戲版本,你可能會發現在某些情況下,當你通過兩次旋轉(旋轉瓦片固定在tetromino上)時,「I」片段會左右擺動或上下襬動,其他人則不會(旋轉在兩個中心瓦片之間切換,使得CW旋轉將具有與CCW旋轉相同的效果)。 「S」和「Z」片段將類似擺動或不擺動。但是,如果它們不擺動,則可能會發現一塊在靠近左側牆壁時可以旋轉,但即使情況應該是對稱的,也不會在靠近右側的情況下旋轉。如果您將方塊放在一個固定的旋轉塊中,它將圍繞一個角落旋轉,當您很可能希望它看起來完全不旋轉時。我從來沒有見過一個至少沒有照顧到的實現!