C++コンソールでロシアブロックを実現
3984 ワード
前にC++の授業を習って、ずっと小さいゲームを作ると思っていましたが、MFCは勉強したくないので、コンソールの小さなゲームになるしかありません.
ロシアのブロックはきっと多くの人が子供の頃遊んだゲームに違いない.次にデザインのアイデアについてお話しします.
主に、ゲームのレベルを選択し、加速して下がり、異なる形状の異なる色、一時停止と終了機能を実現します.
まずクラスのデザインです.
ロシアのブロックはきっと多くの人が子供の頃遊んだゲームに違いない.次にデザインのアイデアについてお話しします.
主に、ゲームのレベルを選択し、加速して下がり、異なる形状の異なる色、一時停止と終了機能を実現します.
まずクラスのデザインです.
class Box
{
private:
int map[23][12];// , ,
int hotpoint[2];// ,
int top;//
int point;//
int level;//
int ID;// ID
int colorID;// ID。
public:
Box()//
{
int i,j;
for(i=0;i<23;i++)
for(j=0;j<12;j++)
map[i][j]=0;
hotpoint[0]=0;
hotpoint[1]=5;
point=0;
level=1;
top=99;
ID=0;
}
void SetColor(int color);//
void DrawMap();//
bool Judge(int x,int y);//
void Welcome();//
void DrawBox(int x,int y,int num);//
void Redraw(int x,int y,int num);//
void Run();//
void Turn();//
void UpdataMap();//
void Pause();//
};
,
#define A1 0//A ,B ,C L ,D
#define A2 1
#define B 2
#define C11 3
#define C12 4
#define C13 5
#define C14 6
#define C21 7
#define C22 8
#define C23 9
#define C24 10
#define D11 11
#define D12 12
#define D21 13
#define D22 14
void SetPos(int i,int j)//
{
COORD pos={i,j};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
const int sharp[15][8]=
{
{0,0,1,0,2,0,3,0},{0,0,0,1,0,2,0,3},
{0,0,1,0,0,1,1,1},
{0,0,1,0,1,1,1,2},{0,1,1,1,2,0,2,1},{0,0,0,1,0,2,1,2},{0,0,0,1,1,0,2,0},
{1,0,1,1,1,2,0,2},{0,0,0,1,1,1,2,1},{0,0,0,1,0,2,1,0},{0,0,1,0,2,0,2,1},
{0,0,0,1,1,1,1,2},{0,1,1,0,1,1,2,0},
{0,1,0,2,1,0,1,1},{0,0,1,0,1,1,2,1}
};// ,
const int high[15]={4,1,2,2,3,2,3,2,3,2,3,2,3,2,3};// ,
void Box::SetColor(int colorID)
{
int n_color;
switch(colorID)
{
case 0: n_color = 0x08;break;
case 1: n_color = 0x0C;break;
case 2: n_color = 0x0D;break;
case 3: n_color = 0x0E;break;
case 4: n_color = 0x0A;break;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), n_color);
}
void Box::DrawMap()//
{
int i;
SetColor(0);//
for(i=0;i<14;i++)
{
SetPos(i*2,0);
cout<='1')//
{
level=x-'0';
break;
}
}
}
void Box::UpdataMap()// ( )
{
int clear;
int i,j,k;
int nx,ny;
int flag;
for(i=0;i<4;i++)// map
{
nx=hotpoint[0]+sharp[ID][i*2];
ny=hotpoint[1]+sharp[ID][i*2+1];
map[nx][ny]=1;
}
if(hotpoint[0]=top;k--)//
{
if(k==0)//
for(j=0;j<12;j++)
{
map[k][j]=0;
SetPos((j+1)*2,k+1);
cout<=Count)
{
i=0;//
if(Judge(hotpoint[0]+1,hotpoint[1]))// ( )
{
UpdataMap();//
ID=nextID;// ID, ID ID
hotpoint[0]=0;//
hotpoint[1]=5;
Redraw(3,17,nextID);
nextID=rand()%15;
DrawBox(hotpoint[0],hotpoint[1],ID);
DrawBox(3,17,nextID);
if(Judge(hotpoint[0],hotpoint[1]))// ,
{
//getch();
system("cls");
SetPos(25,15);
cout<=23||ny<0||ny>=12||map[nx][ny]==1)// , 1
return 1;
}
return 0;
}
void Box::Pause()
{
system("cls");
while(1)
{
SetPos(30,13);
cout<
void main()//
{
Box game;
game.Welcome();
system("cls");
game.DrawMap();
game.Run();
}
:
1、 , , 。