#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#define X 50
#define Y 10
using namespace std;
char c;
long long df=0;
const int x=12;int y=8,yg=8;
bool Map[Y][X];
int z[3][6][2],x_z=40,sw=0;const int zi[3]={3,5,6};
void csh();
void gotoxy(int xx,int yy);
void draw_Map();
void draw_zj();
void _jump();
void _cin();
bool _Gameover();
int main(){
csh();
draw_Map();
draw_zj();
gotoxy(Y+1,0);
printf("按空格键开始游戏……\n");
c=getch();
srand(time(NULL));
system("cls");
draw_Map();
while(true){
sw=rand()%3;x_z=50;
while(x_z>=-1){
draw_zj();
x_z--;df++;
if(_Gameover()){
gotoxy(Y+1,0);
printf("Game over!\n");
system("pause");
return 0;
}
_cin();
if(_Gameover()){
gotoxy(Y+1,0);
printf("Game over!\n");
system("pause");
return 0;
}
}
}
return 0;
}
void csh(){
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
for(int i=0;i<Y;i++)
for(int j=0;j<X;j++)
Map[i][j]=false;
for(int j=0;j<X;j++)
Map[0][j]=Map[Y-1][j]=true;
for(int i=0;i<Y;i++)
Map[i][0]=Map[i][X-1]=true;
z[0][0][0]=0;z[0][0][1]=1;
z[0][1][0]=1;z[0][1][1]=1;
z[0][2][0]=2;z[0][2][1]=1;
z[1][0][0]=0;z[1][0][1]=1;
z[1][1][0]=1;z[1][1][1]=0;
z[1][2][0]=1;z[1][2][1]=1;
z[1][3][0]=2;z[1][3][1]=0;
z[1][4][0]=2;z[1][4][1]=1;
z[2][0][0]=0;z[2][0][1]=1;
z[2][1][0]=1;z[2][1][1]=1;
z[2][2][0]=1;z[2][2][1]=2;
z[2][3][0]=2;z[2][3][1]=0;
z[2][4][0]=2;z[2][4][1]=1;
z[2][5][0]=2;z[2][5][1]=2;
return;
}
void gotoxy(int i,int j){
COORD position={j,i};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),position);
return;
}
void draw_Map(){
printf("得分:%d\n",df);
for(int i=0;i<Y;i++){
for(int j=0;j<X;j++){
if(Map[i][j])printf("#");
else printf(" ");
}
printf("\n");
}
return;
}
void draw_zj(){
gotoxy(0,0);
printf("得分:%d\n",df);
for(int i=0;i<zi[sw];i++){
if(z[sw][i][1]+x_z+1<X&&z[sw][i][1]+x_z>0){
gotoxy(z[sw][i][0]+7,z[sw][i][1]+x_z);
printf(" ");
}
}
for(int i=0;i<zi[sw];i++){
if(z[sw][i][1]+x_z<X&&z[sw][i][1]+x_z-1>0){
gotoxy(z[sw][i][0]+7,z[sw][i][1]+x_z-1);
printf("*");
}
}
gotoxy(yg+1,x);
printf(" ");
gotoxy(y+1,x);
printf("O");
_sleep(50);
return;
}
void _jump(){
yg=y;y-=3;x_z--;df++;
if(_Gameover()) return;
draw_zj();
yg=y;y--;x_z--;df++;
if(_Gameover()) return;
draw_zj();
yg=y;x_z--;df++;
if(_Gameover()) return;
draw_zj();
yg=y;y++;x_z--;df++;
if(_Gameover()) return;
draw_zj();
yg=y;y++;x_z--;df++;
if(_Gameover()) return;
draw_zj();
yg=y;y+=2;x_z--;df++;
return;
}
void _cin(){
if(kbhit()!=0){
draw_zj();
while(kbhit()!=0)
c=getch();
if(c==' ')
_jump();
}
return;
}
bool _Gameover(){
for(int i=0;i<zi[sw];i++)
if(z[sw][i][0]==y-6&&z[sw][i][1]==x-x_z+1)
return true;
return false;
}//qybcjmy
跳动方块_c++
于 2022-05-04 19:32:13 首次发布