資源簡介
俄羅斯方塊(英語:Tetris、俄語:Тетрис)是1980年末期至1990年代初期風靡全世界的電腦游戲,是落下型益智游戲的始祖。1984年6月6日,是公認的俄羅斯方塊誕生紀念日。它由俄羅斯人阿列克謝·帕基特諾夫發明,故得此名。有研究者發現玩俄羅斯方塊游戲有助于防止創傷后應激障礙的發生,可能是這個游戲能夠對大腦儲存視覺記憶的功能產生干擾,從而保護病人免受創傷后應激反應的影響。也有學者發現玩俄羅斯方塊并且佩戴一種特殊的眼鏡可以治療兒童弱視。2014年6月6日,俄羅斯方塊迎來30周年誕生紀念日。而這個是俄羅斯方塊的c++版
代碼片段和文件信息
#include?
#include?
#include?
#include?
#pragma?comment(lib?“winmm.lib“)
using?namespace?std;
#define?GameW?10
#define?GameH?20
const?int?CtrlLeft?=?GameW*2+4?+?3;
struct?Point?{
????Point(){}
????Point(int?x?int?y)?{_x?=?x?_y?=?y;}
????int?_x?_y;
};
HANDLE?g_hOutput?=?GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE?g_hInput??=?GetStdHandle(STD_INPUT_HANDLE);
Point?g_ptCursor(00);
BOOL?isChecking?=?FALSE;
BOOL?g_bGameOver?=?FALSE;
int?g_nGameBack[GameH][GameW]?Case;
int?nowKeyInfo?=?-1;
int?g_nDiff?=?1;
int?g_nLife?=?2;
int?g_nScore?=?0;
void?SetCursor(COORD?cd)?{
????SetConsoleCursorPosition(g_hOutput?cd);
}
void?SetCursor(int?x?int?y){
????COORD?cd?=?{x?y};
????SetCursor(cd);
}
void?SetBlockCursor(int?x?int?y){
????COORD?cd?=?{2*x?+?2?y?+?1};
????SetCursor(cd);
}
void?SetBack(int?x?int?y?BOOL?bk)?{
????SetBlockCursor(x?y);
????if?(bk)?
????????printf(“%s“?“■“);
????else
????????printf(“ “);
}
bool?Out(int?x?int?y)?{
????return?x?0?||?y?0?||?x?>=?GameW?||?y?>=?GameH;?
}
struct?xBlock?{
public:
????int?len;
????int?nowRotateID;
????BOOL?mask[4][4][4];
????static?vector??List;
????xBlock()?{?len?=?0;?}
????xBlock(int?l?char?*str)?{
????????int?i?j?k;
????????len?=?l;
????????memset(mask?FALSE?sizeof(mask));
????????for(i?=?0;?i?????????????for(j?=?0;?j?????????????????mask[0][i][j]?=?str[i*l?+?j]?-?‘0‘;
????????????}
????????}
????????for(k?=?1;?k?4;?k++)?{
????????????for(i?=?0;?i?????????????????for(j?=?0;?j?????????????????????mask[k][i][j]?=?mask[k-1][j][len-1-i];
????????????????}
????????????}
????????}
????????nowRotateID?=?rand()?%?4;
????}
????void?rotate()?{
????????nowRotateID?++;
????????if?(nowRotateID?>=?4)
????????????nowRotateID?=?0;
????}
????BOOL?getUnit(int?x?int?y?int?roID)?{
????????if?(roID?==?-1)?{
????????????roID?=?nowRotateID;
????????}
????????return?mask[roID][y][x];
????}
};
vector??xBlock::List;
class?Block?{
public:
????int?x?y;
????int?ID;
????xBlock?bk;
????void?reset(xBlock?*pbk)?{
????????bk?=?*pbk;
????????x?=?4?y?=?0;
????????ID?=?++?Case;
????????if(collide(00))?{
????????????lifeDown();
????????}
????????draw();
????????*pbk?=?xBlock::List[rand()?%?xBlock::List.size()];
????}
????void?lifeDown()?{
????????int?i?j;
????????for(i?=?0;?i?????????????for(j?=?0;?j?????????????????SetBack(j?i?TRUE);
????????????????Sleep(10);
????????????}
????????}
????????if(g_nLife)?{
????????????g_nLife?--;
????????????for(i?=?g_nLife;?i?6;?i++)?{
????????????????SetCursor(CtrlLeft?+?i?15);
????????????????printf(“%c“?‘?‘);
????????????}
????????????for(i?=?GameH-1;?i?>=?0;?i--)?{
????????????????for(j?=?GameW-1;?j?>=?0;?j--)?{
????????????????????SetBack(j?i?FALSE);
????????????????????Sleep(10);
????????????????????g_nGameBack[i][j]?=?0;
- 上一篇:學生選課系統(VC+SQL Server)
- 下一篇:詞法分析器源代碼(c/c++)
評論
共有 條評論