• 大小: 10KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-08-14
  • 语言: C/C++
  • 标签: 小游戏  

资源简介

俄罗斯方块(英语: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;

评论

共有 条评论