acllib俄羅斯方塊小遊戲,第二次使用acllib寫圖形,第一次是參考不明真相的板藍根實現的乙個桌面時鐘,寫的很詳細,鏈結見底
對於acllib感興趣的同學可以參考一下。
下面說下俄羅斯方塊遊戲的設計的關鍵:
#為方便起見,下文中所有 l,l, z 等等(包括旋轉後)的圖形都用「俄羅斯方塊」來替代
1.通過陣列儲存所有俄羅斯方塊的圖形位置資訊(包括旋轉後的),ps.本來想通過對位置做旋轉演算法來實現,後來網上參考了一下,因為做運算的時間遠超重畫圖形的時間,網上俄羅斯方塊的實現似乎都是儲存所有圖形的,便作罷,感興趣的同學可以討論一下
2.利用全域性二維陣列winodw來儲存已經存在的俄羅斯方塊的資訊。
//黑色 rgb值
#define black rgb(0,0,0)
//定義單位畫素的邊長
#define step 10
//遊戲窗體高度
#define boundaryh 28
//遊戲窗體寬體
#define boundaryw 14
//俄羅斯方塊形狀的總數目(包括旋轉後的)
#define max_shape 19
//窗體內已經存在的內容(重要,用於存放已經落下的俄羅斯方塊的資訊)
int window[boundaryh][boundaryw] = ;
//旋轉,向左/右移動的標誌
bool istransform = false;
bool istoleft = false;
bool istoright = false;
//俄羅斯方塊形狀編號num(重要全域性變數,用於控制記錄移動,形變以及邊界是否碰撞) , 用於記錄定時器次數cnt
int num = 0,cnt=0;
//位置資訊結構體
struct pstruct ;
//形狀資訊結構體
struct sstruct ;
//每個形狀的標準方向的編號,用於初始化生成隨機俄羅斯方塊使用
int seq[7] = ;
//每個俄羅斯方塊形狀的圖形資料(包括旋轉後的),用4*4二維陣列表示,心中有數即可,請直接略過struct sstruct shape[19] =
,//一
//l,,,
,//rl,,
,,//z,,,
//rz,,
//田,
//t,,,
};//當前正在運動的俄羅斯方塊的位置變數posi,(重要全域性變數,用於控制記錄方塊移動,是否碰撞,4*4陣列最左上角的位置)
struct pstruct posi;
//俄羅斯方塊生成函式
void initcube();
//定時器中斷
void timeevent(int tid);
//鍵盤中斷
void keyevent(int key, int event);
/*//獲取俄羅斯方塊的右邊源
int getrightedge(int num);
//獲取俄羅斯方塊的底邊源
int getbottomedge(int num);
*/int setup()
void initcube() ;
//srand生成隨機因子,rand生成隨機數
srand((unsigned)time(null));
num = seq[rand() % 7];
}//定時器每中斷一次重畫一次遊戲窗體,即每50ms重畫一次
void picture_a_cube() }
//旋轉
if (istransform) }}
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++) }}
//撤銷
if (isreach) num = temp;
} //左移
if (istoleft) }}
if(!isreach) posi.x--;
} //右移
if (istoright) }}
if (!isreach) posi.x++;
} //畫出俄羅斯方塊圖形
for (int i = 0; i < 4; i++)
} }//判斷window陣列是否存在某一行都存在方塊,如果是則消除該行,並將之上的資料下移一行
for(int i=0;i= 0; k--)
}for (int j = 0; j < boundaryw; j++) window[0][j] = 0;
} }endpaint();
}void timeevent(int tid) }}
if(!isreach) posi.y++;
else
}initcube();
} }//重繪遊戲窗體
picture_a_cube();
}void keyevent(int key, int event)
} //左移
if (key == vk_left)
} //右移
if (key == vk_right)
} //加速下降,50ms改為10ms
if (key == vk_down)
else if (event == key_up)
}}《利用acllib寫的乙個桌面時鐘》:
俄羅斯方塊的簡單實現
也是很早很早的東西了 p 這是我幾年以前寫的 seven puzzles 該遊戲為dos版,可在鄙人主頁http sss ic.yeah.內找到 裡的俄羅斯方塊的實現方法,當時接觸程式設計僅半年而已,希望可以給初學者一點幫助。幾乎沒有寫什麼 而且後階段方塊旋轉 消去方面更是只大致介紹了一點方法,不過...
C 實現俄羅斯方塊
c 實現俄羅斯方塊 一 實驗介紹 1.1 實驗內容 本節實驗我們進行設計俄羅斯方塊前的思路分析,以及介紹ncurses 庫的使用方法。1.2 實驗知識點 c 程式設計基礎 ncurses 庫的使用 俄羅斯方塊邏輯設計 1.3 實驗環境 xfce 終端 g 編譯器 ncurses 庫 1.4 適合人群...
原創 MFC實現的俄羅斯方塊
用mfc 實現的俄羅斯方塊 上學期期末複習著無聊的時候做出來的 每天做一點 最後居然順利做出來 做了之後才發現 要做成這個小遊戲 值得考慮的地方還是很多的 想了想就有以下的一些細節 總結起來有以下幾點 1.關於方塊結構的確定 最初考慮的是用 4 4的陣列來表示乙個方塊 但這就意味著每個方塊會造成遠大...