俄羅斯方塊經典演算法

2021-08-08 14:17:09 字數 2697 閱讀 4874

tetris.h

俄羅斯方塊遊戲程式

製作人:內蒙古大學夏士通

時間:2023年5月14日

e-mail: class="txt">支援開源,歡迎交流

void box_build()

//方塊生成函式

unsigned int box_read_data(unsigned char tpmode,unsigned char tpshape)

break;

case 1: switch(tpshape)

break;

case 2: switch(tpshape)

break;

case 3: switch(tpshape)

break;

case 4: switch(tpshape)

break;

case 5: switch(tpshape)

break;

case 6: switch(tpshape)

break;

default:;

}return(tpbox);

}//方塊快取資料函式(輸入方塊型別和形狀即可獲得方塊快取資料)

void box_load()

//方塊載入函式

void box_to_box_ram(unsigned char tpx,unsigned char tpy,unsigned int tpbox)

//從遊戲點陣快取中刪除以前的方塊

temp=s_box.box;

for(i=0;i<4;i++)

//在遊戲點陣快取中加入新的方塊

}//方塊對映遊戲點陣快取函式(引數是原來方塊的位置、快取,先消去原有位置的方塊)

void box_ram_to_ram()

}//遊戲點陣快取對映顯示點陣快取函式

void game_execute()

else

//檢測是否還可以下降,如果還能下降則繼續下降

else

//如果不能下降則呼叫消行函式檢查是否可以消行,之後重新建立方塊

}}//遊戲執行函式(控制方塊下落,檢測是否到底,如果到底呼叫消行函式)

void time0_initialize()

//定時器0初始化函式

void timer0() interrupt 1

else

//先將現有的方塊從遊戲點陣快取中刪除

temp=tpbox;

for(i=0;i<4;i++)

temp=temp>>4;

}//檢查方塊是否和原有圖形重疊,重疊置標誌位tpflag為0,不重疊不置標誌位,即tpflag為1

temp=s_box.box;

for(i=0;i<4;i++)

//在遊戲點陣快取中恢復原有方塊

return(tpflag);

}//檢查覆蓋函式(檢查此時帶入的引數所確定的方塊是否會覆蓋原有圖形,不會覆蓋返回1,覆蓋返回0)

void destroy_row()

;//最多一次只能消四行,所以設定四個標誌位即可,初值為0

for(i=0;i<16;i++)

//檢查完有四行要消除則退出檢查迴圈依次檢測是否有行快取為0xffff,如果是則標誌tpflag為此行的行號

for(j=0;j<4;j++)

}//被標誌的行依次被上一行所取代,即被消去

}//消行函式

void next_box()

//在遊戲點陣快取中顯示下乙個方塊的樣子

}//顯示下乙個方塊函式

void tetris_main()

;//載入遊戲初始顯示畫面

game_over_flag=0;//遊戲結束標誌位置0表示遊戲未結束

box_build();

box_load();

next_box();

box_to_box_ram(s_box.x,s_box.y,s_box.box);

box_ram_to_ram();

// intermit0_initialize();

time0_initialize();

while(!game_over_flag)//如果遊戲結束標誌位置1,表示遊戲結束,打破迴圈,呼叫遊戲結束畫面顯示函式

ea=0;//遊戲結束後關中斷,要不快取區資料不正確

game_over_show();

}//俄羅斯方塊遊戲主函式

void game_over_show()

box_ram_to_ram();

while(tpflag)

//遊戲結束畫面顯示函式

void game_initialize()

//遊戲初始化函式

void game_start_show()

;//清楚影象

for(i=0;i<8;i++)

box_ram_to_ram();

while(tpflag)

//遊戲開始顯示畫面

bit check_game_over()

temp=temp>>4;

}//檢查新建方塊是否和原有圖形重疊,重疊置標誌位tpflag為1,不重疊不置標誌位,即tpflag為0

return(tpflag);

}//檢查遊戲結束函式(遊戲結束返回1,遊戲沒有結束返回0)

void check_pause_game()

//檢測暫停遊戲函式 ...

基於微控制器的88俄羅斯方塊遊戲

摘要 本文集中論述了如何使用at89c52微控制器來實現8 8俄羅斯方塊遊戲,該系統能具體根據8 8俄羅斯方塊遊戲的基本規則進行遊戲,並通過微控制器控制點陣屏顯示其8 8俄羅斯方塊遊戲介面。系統具有實用實時性強 操作簡單 娛樂效能好,擴充套件效能較好 便宜等特點。關鍵詞 微控制器 at89c52 點...

俄羅斯住房

俄羅斯 仍提供免費住房 看病住院不花錢 在2007年,俄羅斯的教師工資大約相當於每月100 300元人民幣,的工資也不高。收入儘管很低,但無論是莫斯科還是聖彼得堡,我所見到的是男人衣著考究,女人漂亮時髦,商店裡食品豐富,總體感覺是,人們的生活並非貧窮。我曾根據當地的物價對俄羅斯人的收入與支出粗略做一...

俄羅斯知識整理

俄羅斯一 位置及範圍 1歐洲東部和亞洲北部 北亞 面積 1700多萬平方千公尺,世界上面積最大的國家 居民 130多個民族,通用俄語 2 傳統的歐洲國家 歐洲部分 領土只佔1 4 人口佔3 4 集中主要的工農業 城市及交通路線 亞洲部分 地廣人稀,大部分地區沒有開發。二 自然地理特徵 1 位置及範圍...