導航:首頁 > 源碼編譯 > 方塊格式演算法

方塊格式演算法

發布時間:2022-08-04 23:34:04

1. 俄羅斯方塊游戲的 演算法實現(或者設計原理)

這是個優化問題,目標函數是最終得分,變數是每個方塊的得分,邊界條件就是樓主所說的「同等條件」。

解決該問題,需要知道「同等條件」,即總的方塊數以及每個方塊的形狀、出現順序。知道了這些條件,即可以編程實現演算法。

每個方塊含有各自的狀態,變換只需改變到下一個狀態就行了,完全可以用數組來實現(不用寫旋轉演算法了:)

比如:

/* 方塊類型為 ■■■■ */
char[2][4][4] B1={{{0,1,0,0},{0,1,0,0},{0,1,0,0},{0,1,0,0}},
{{0,0,0,0},{1,1,1,1},{0,0,0,0},{0,0,0,0}}};
含兩種狀態,每個狀態是一個4*4數組,為1表示實心,為0表示空心.
□■□□
□■□□
□■□□
□■□□

□□□□
■■■■
□□□□
□□□□

再詳細的就不用說了吧

2. 俄羅斯方塊演算法 總共需要多少個矩陣

俄羅斯方塊的演算法很簡單啊,286的機器運行都不會有速度問題,速度慢不是因為矩陣的原因,你看看你的演算法是不是有問題啊?

3. 哪位大神給我講解一下俄羅斯方塊的演算法C語言

首先你得有個俄羅斯方塊界面的概念,它就是M*N的一個2維數組,那麼一個方塊向左移動的極限就是有一個點已經到了最左邊。
拿一個豎條為例,他本身是一個4*4的小格子,當他是豎條時可以看成
0010
0010
0010
0010
向左移動時,只要判斷1是否在左邊邊界,沒有就往左一格,另外要注意邊橫桿時,要先判斷是否最左邊越界,有越界就不能變化

4. 用C語言編寫俄羅斯方塊,怎樣產生七種基本方塊圖形和19種變換圖形,要具體實現的代碼

用3維數組來存放七種基本方塊圖形:
例如:
int BOX[7][4][4]={
{
{1,1,1,1}, // ----型
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
},
{
{1,1,1,0}, // 1---型
{1,0,0,0},
{0,0,0,0},
{0,0,0,0}
},
{
{1,1,1,0}, // ---1型
{0,0,1,0},
{0,0,0,0},
{0,0,0,0}
},
{
{1,1,1,0}, // -T-型
{0,1,0,0},
{0,0,0,0},
{0,0,0,0}
},
{
{1,1,0,0}, // -T_型
{0,1,1,0},
{0,0,0,0},
{0,0,0,0}
},
{
{0,1,1,0}, // _T-型
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
},
{
{1,1,0,0}, // 田型
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
}
};

為了方便讀取,減少程序中演算法上的開銷(比如進行4*4矩陣的轉置),
我建議你將19種變換圖形也用3維數組來存放,
例如:
|
|
型:
{
{1,0,0,0}, // ----型
{1,0,0,0},
{1,0,0,0},
{1,0,0,0}
},

|_型:
{
{1,0,0,0}, // 1---型
{1,0,0,0},
{1,1,0,0},
{0,0,0,0}
},

5. 做俄羅斯方塊的思路或演算法是什麼

我用MFC做過俄羅斯方塊:
整個場景是一個10*20的長方形空間,你要建立一個10*20的數組int num[20][10]模仿之,你可以想像這是200個小塊,每個小塊只有0和1兩種狀態,為0時相應該位置為空白,為1時相應該位置畫一個小方塊.

每一個圖形由4個小方塊組成,當他落到底停住時,你就要把數組num的相應數項由0改成1(num數組初始化全為0),同時在OnPaint(可能有時是OnDraw)函數中根據數組的0,1情況重繪,思路就是這樣的.很簡單

6. 尋找關於俄羅斯方塊程序的演算法,不要程序,只要演算法

核心演算法:
這里把游戲的關鍵設計放在三個盒子和一個坐標上:
大盒子:一個兩維數組,記錄著方塊點陣的開與關(把游戲的舞台想像
成一個點陣),在下面也把這個東西稱為地圖
兩個5*5小盒子:兩維數組,一個盛放著正在下落的方塊,一個盛放在
下一個下落的方塊(即next),當然這兩個也必須想像成一個點陣:如長條
的點陣為:
00000
00100
00100
00100
00100
現在你只要有這么一個概念:一個不斷定時下落的小盒子從大盒子頂
部下降到底部,之後再將next盒子放在下落盒子,再進行下一輪的下落...
中間的控制等尚不要太著急.
現在面臨著一個問題:
下落的盒子和地圖之間要怎麼聯系起來?
一個好的方法是再定義一個坐標:x,y,保存著小盒子左上角在地圖上對應
的下標(位置),即當x = 0, y = 0時,小盒子處於地圖的左上部.如此,當
小盒子需要移動時,即只須要改變x,y的值.
現在說說旋轉.
小盒子保存著當前下落形狀的點陣,那麼旋轉就只須要將這個點陣旋
轉90度:例如:
00000 00000
00100 00000
00100 -> 01111
00100 00000
00100 00000
這一點實現起來還是不太難的.
判斷碰撞
通常這種情況只須要在有移動小盒或旋轉盒子時發生:也即點陣非空
是互斥的,當小盒要向下移(x++)時,如果小盒裡的點陣與地圖上的點陣(非
空的地方)重疊,則不能下移,(卡住了),旋轉則轉換後的形狀與地圖有沖
突則要放棄旋轉.
到了這里,你應該有一個大概的了解了,至於怎樣在屏幕上畫出來,這
個是比較簡單的

7. 俄羅斯方塊演算法

用二維數組表示方塊所在的整個區域,0表示有方塊,1表示有方塊。從上往下,從左往右開始輸出區域。
判斷消行,也就是當方塊下落後,從它所停留那一行(記錄此行)開始,計算每一行是否全為1,如果全為1,則往下繼續判斷下一行,再記錄消行的行數。
判斷完畢後,開始將這幾行數據全變為0即可。然後就是下降。
比如從第8行開始,消2行,也就是8,9行消掉。此時應該讓前面7行往下落2行。也就是第9行數據等於第7行,第8行數據等於第6行,以此類推。寫一個循環
就可以了。

8. 俄羅斯方塊設計都有哪些方法

求1個基於mfc的C++小游戲程序,類似於俄羅斯方塊,
小Q書桌有
C++用面向對象的方法進行俄羅斯方塊游戲設計:
你都有c的代碼了,改成c++還不簡單么?就是個

閱讀全文

與方塊格式演算法相關的資料

熱點內容
解壓到文件夾的視頻都自動隱藏了 瀏覽:565
閱讀器支持php 瀏覽:217
人生需求怎麼解壓 瀏覽:790
pdf列印機找不到 瀏覽:997
如何同時使用兩個apache伺服器 瀏覽:719
國外php論壇 瀏覽:961
災難是命令 瀏覽:600
linux火狐瀏覽器安裝 瀏覽:68
java子類重寫 瀏覽:815
壓縮袋太大裝不進櫃子怎麼辦 瀏覽:839
程序員簡歷里的職業 瀏覽:108
現在哪個app可以聽付費歌曲 瀏覽:969
vivo的添加文件夾 瀏覽:351
ubuntu壓縮zip 瀏覽:4
vigenere演算法的方法是什麼 瀏覽:668
pdf保護破解 瀏覽:345
仿微信聊天系統源碼廣州公司 瀏覽:109
怎麼查看我的世界伺服器日誌 瀏覽:431
怎麼從程序員走到成功 瀏覽:826
把軟體放入文件夾中如何移出 瀏覽:211