资源简介
俄罗斯方块(英语: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 < l; i++) {
for(j = 0; j < l; j++) {
mask[0][i][j] = str[i*l + j] - ‘0‘;
}
}
for(k = 1; k < 4; k++) {
for(i = 0; i < len; i++) {
for(j = 0; j < len; 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 < GameH; i++) {
for(j = 0; j < GameW; 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++)
相关资源
- 打飞机小游戏57466
- c++ 猜拳小游戏
- C++“倒忌时”小游戏
- c++小游戏源码.doc
- C++小游戏4款(源码)
- 推箱子小游戏源码
- C++贪吃蛇控制台小游戏代码
- 2048小游戏c语言实现
- c++编写简略单机对战小游戏
- c++各种小游戏我们老师的
- c++自制小游戏--扑克牌
- 四子棋c语言程序
- c++编写的经典小游戏
- MFC平台C++语言的小游戏代码
- c++游戏程序(包含源代码,有扫雷,
- Qt飞机大战小游戏源代码
- 泡泡堂(炸弹人)小游戏C/C++完整源码
- C++ 命令行小游戏 节奏大师别踩白块
- vc++变成经典小游戏源码
- MFC游戏编程几款经典小游戏的详细代
- MFC雷电小游戏
- C/C++语言大作业、小游戏
- cocos2dx写的坦克小游戏
- C++图形系统实现俄罗斯方块小游戏
- C语言 vs2013+easyX 实现推箱子小游戏
- VC++6.0多人网络小游戏-支持多人联机网
- C++控制台小游戏《突破重围》,有所
- 小游戏开发教程 c++版
- 自己做的打地鼠小游戏
- MFC黄金矿工小游戏
评论
共有 条评论