阅读 161

c++编写打砖块小游戏

image.png

打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。今天要做的是打砖块小游戏。

//绘制转块
void DrawZhuanKuai(){
    for (int i = 0; i < ROW; i++){
        for (int j = 0; j < COL; j++){
            //判断是否有砖块
            if (ZhuanKuai[i][j] == 0){
                if ((i + j) % 2 == 0){
                    //设置填充颜色为:天蓝色
                    setfillcolor(LIGHTCYAN);
                    //画出填充矩形:左        上        右                下
                    solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);
                }
                else{
                    //设置填充颜色为:灰色
                    setfillcolor(LIGHTGRAY);
                    //画出填充矩形:左        上        右                下
                    solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);
                }
            }
        }
    }
}
复制代码

首先先绘制砖块,这里只需要绘制成简单的矩形就行了,可以设置填充成自己喜欢的颜色。当然摆放的位置也可以你自己随意设置。

//木板移动
void MuBan(){
    //用黑色木板擦除之前的木板
    //设置填充颜色:黑色
    setfillcolor(BLACK);
    //绘制实心木板
    solidrectangle(boardx, boardy, boardx + 60, boardy + 10);
    //让木板左右移动
    switch (getch()){
    case 75://向左移动
        boardx -= 15;
        break;
    case 77://向右移动
        boardx += 15;
        break;
    default:break;
    }
    //防止木板出界
    if (boardx <= 0){
        boardx = 0;
    }
    if (boardx >= (400 - 60)) {
        boardx = (400 - 60);
    }
    //重新绘制木板
    //设置填充颜色:黄色
    setfillcolor(YELLOW);
    //绘制实心木板
    solidrectangle(boardx, boardy, boardx + 60, boardy + 10);
}
复制代码

上面这一部分代码是写挡板的操控,其实就是左右移动而已,并且需要防止挡板出界而做出屏幕大小的限制。

//小球碰墙壁
    //小球半径为:10
    if (ballx >= (400 - 10) || ballx <= (0 + 10)) {
        addx = -1 * addx;
    }
    if (bally <= 10){
        addy = -1 * addy;
    }
    //小球碰砖块
    int flag = 0;//标记小球打到砖块
    for (int i = 0; i < ROW; i++){
        for (int j = 0; j < COL; j++){
            //砖块坐标
            int x = j * 40;
            int y = i * 20;
            //小球遇到砖块
            if (ZhuanKuai[i][j] == 0 && x - ballx <= 10 && ballx - x <= 50 && bally - y >= 10 && bally - y <= 30) {
                addy = -1 * addy;
                ZhuanKuai[i][j] = 1;
                flag = 1;//控制跳出外层循环
                //让砖块消失
                //设置填充颜色:黑色
                setfillcolor(BLACK);
                //绘制实心木板
                solidrectangle(x, y, x + 40, y + 20);
                break;//退出内层循环
            }
        }
        if (flag){
            break;//退出外层循环
        }
    }
    //小球碰木板
    if (starting&&boardx - ballx <= 10 && ballx - boardx <= 70 && boardy - bally <= 10) {
        addy = -1 * addy;
    }
复制代码

上面这一部分是核心逻辑,也就是描写了小球的游戏逻辑。分别对应碰撞到了墙壁,碰撞了砖块,碰撞了挡板。只需要把这三个逻辑理清楚,那一切都会简单得多了。

有想要学习如何做游戏的,可以关注公众号:诗一样的代码,找我一起学习。

文章分类
前端
文章标签