自己写的c++小项目,分享出来大家一起学习交流,自认为写得不怎么样,有几处参考了别人的算法。
stdafx.h
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
#define MAP_ROW 31
#define MAP_COL 20
#define BLOCK_TYPE 7 //7种类型的方块
#define GRID "■"
enum{ BLANK, BOX};
typedef struct BLOCK
{
int b[4][4];
}Block;
#define _CRT_SECURE_NO_WARNINGS
class Tetris
{
private:
int MAP[MAP_ROW][MAP_COL];
Block myBlock[7][4];
public:
Tetris();
~Tetris();
int nn;
int argc;
_TCHAR **argv;
int score;
void gotoPos(int, int);
void InitMap();
void LoadBlock();
void InitScreen();
void HideCursor();
void SetColor(int);
void StartGame();
void InitData();
void DrawBox(bool, int,int, int, int);
int IsMovableVert(int, int, int, int);//纵向移动检测
int IsMovableHoriz(int, int, int, int,bool);//横向移动检测
void IsLineDelete();
};
主cpp文件
#include "stdafx.h"
void Tetris::InitScreen()
{
system("cls");
srand((unsigned int)time(NULL));
HideCursor();
}
void Tetris::gotoPos(int x, int y)//设置坐标
{
COORD pos;
pos.X = 2 * y;
pos.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void Tetris::InitData()//初始化赋值
{
for (int k = 0; k < 7; ++k)
{
for (int m = 0; m < 4; ++m)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
myBlock[k][m].b[i][j]= 0;
}
}
}
}
for (int i = 0; i < MAP_ROW; ++i)
{
for (int j = 0; j < MAP_COL; ++j)
{
MAP[i][j] = 0;
}
}
}
Tetris::Tetris()//构造函数
{
system("mode con cols=60 lines=31");
SetConsoleTitle(_T("C++俄罗斯方块"