欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機制作的俄羅斯方塊游戲機源程序
[打印本頁]
作者:
andy20112
時間:
2017-3-31 13:55
標題:
51單片機制作的俄羅斯方塊游戲機源程序
這個是已經做過的51單片機俄羅斯方塊游戲機,可以正常使用,大家有興趣的可以搞個玩玩。
0.png
(45.94 KB, 下載次數: 78)
下載附件
2017-3-31 19:19 上傳
0.png
(43.14 KB, 下載次數: 57)
下載附件
2017-3-31 19:21 上傳
完整源碼下載:
俄羅斯方塊程序.rar
(125.13 KB, 下載次數: 29)
2017-3-31 13:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
主程序預覽:
/* 俄羅斯方塊游戲
*
* author:LastRitter
* date:2007.11.10
* modify:cole3
* date:2010.10.28
*/
#include "includes.h"
#define TIME1H 0x3C
#define TIME1L 0xB0 //定時器1溢出時間:50ms
bit b_BlockDown=0; //方塊定時下降標志位。
unsigned char uc_KeyCode=0; //鍵盤掃描輸入暫存。
bit b_TimeAdd=0;
bit k_flag=0;
//主函數
void main(void)
{
vLCDInitialize(); //LCD初始化。
//定時器1,用于方塊定時下降
TH1 = TIME1H;
TL1 = TIME1L;
TR1 = 1; //開啟定時器1
ET1 = 1; //開定時器1中斷
EA = 1;
vStartPicture(PIC_INITIALIZE);
while(1)
{
// 掃描按鍵
vScanKey();
if (uc_KeyCode != 0) //如果有按鍵按下,則進行按鍵掃描和鍵碼處理。
{
vKeyProcess(uc_KeyCode);
uc_KeyCode=0;
}
if (b_BlockDown) //方塊定時下降。
{
b_BlockDown = 0;
vBlockAction(ACTIONDOWN);
}
if (b_TimeAdd)
{
b_TimeAdd=0;
vTimeAdd();
}
if (uc_StartPicture == PIC_CONTINUE)
{
uc_StartPicture = PIC_PAUSE;
if (!b_GameStart)
vStartPicture(PIC_CONTINUE);
}
}
}
//定時器1中斷,用于方塊定時下降
void vTimer1(void) interrupt 3
{
static unsigned char sucDownCount=0,sucTimeCount=0,sucStPicCount=0;
if(b_GameStart)
{
if(sucDownCount>uc_GameSpeed)
{
sucDownCount=0;
b_BlockDown=1;
}
else
sucDownCount++;
if(sucTimeCount==200)
{
sucTimeCount=0;
b_TimeAdd=1;
}
else
sucTimeCount++;
}
else
{
if(uc_StartPicture!=PIC_STOP)
{
if(sucStPicCount==40)
{
uc_StartPicture=PIC_CONTINUE;
sucStPicCount=0;
}
else
sucStPicCount++;
}
}
//恢復定時器1溢出時間
TH1=TIME1H;
TL1=TIME1L;
}
復制代碼
//*************************************************************************************************
//* *
//* ******************************游戲動作處理程序************************** *
//* *
//*************************************************************************************************
#include "includes.h"
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定義當前方塊屬性變量>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BLOCK *psta_BlockCur=sta_BlockSet,*psta_BlockNext; //指向當前方塊設定的指針。
bit b_GameStart=0; //游戲開始標志位。
//*************************************************************************************************
//* *
//* ********************************游戲初始化******************************* *
//* *
//*************************************************************************************************
void vGameInitialize()
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清空LCD>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vCleanAll();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清空游戲區域>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vCleanAllBlock();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化分數顯示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vMarkInitialize();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化時間顯示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vTimeInitialize();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化等級顯示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vLevelInitialize();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化游戲邊框>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vShowFrame();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方塊位置>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
uc_BlockRow=STARTROW;
uc_BlockLine=STARTLINE;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方塊類型>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vNewBlock();
psta_BlockCur=psta_BlockNext;
vNewBlock();
vShowBlockEx(6,18,psta_BlockNext);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方塊顯示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vCreateBlock();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<設游戲開始標志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
b_GameStart=1;
}
//*************************************************************************************************
//* *
//* ******************************判斷游戲是否結束************************** *
//* *
//*************************************************************************************************
unsigned char ucIsGameOver()
{
unsigned char ucCount;
for(ucCount=0;ucCount<12;ucCount++)
if(ucReadBlock(0,ucCount))
return 1;
return 0;
}
//*************************************************************************************************
//* *
//* ******************************游戲結束處理函數************************** *
//* *
//*************************************************************************************************
void vGameOver()
{
b_GameStart=0;
vShowGraph(3,30,70,2,uca_GAMEOVER);
}
//*************************************************************************************************
//* *
//* ******************************游戲動作處理函數**************************** *
//* *
//*************************************************************************************************
void vBlockAction(unsigned char ucAction)
{
if (ucMoveDecide(ucAction)) //判斷方塊是否可以移動。
vMoveBlock(ucAction); //如果可以,則移動方塊。
else
if (ucAction == ACTIONDOWN)
{
if (ucIsGameOver())
vGameOver();
else
{
vGetMark();
uc_BlockRow = STARTROW;
uc_BlockLine = STARTLINE;
psta_BlockCur = psta_BlockNext;
vNewBlock();
vShowBlockEx(6,18,psta_BlockNext);
vCreateBlock();
}
}
}
復制代碼
作者:
bbq123bbq
時間:
2017-4-1 10:46
看不懂,先頂一個
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1