|
这个是已经做过的51单片机俄罗斯方块游戏机,可以正常使用,大家有兴趣的可以搞个玩玩。
完整源码下载:
俄罗斯方块程序.rar
(125.13 KB, 下载次数: 29)
主程序预览:
- //*************************************************************************************************
- //* *
- //* ******************************游戏动作处理程序************************** *
- //* *
- //*************************************************************************************************
- #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();
- }
- }
- }
复制代码
|
|