跳动方块_c++

这是一个使用C++编写的简单跳跃方块游戏。玩家需要通过空格键控制角色跳跃,避开下落的方块。游戏结束条件是角色碰到下落的方块。游戏包含地图绘制、方块生成、用户输入处理和游戏结束判断等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值