打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。今天要做的是打砖块小游戏。
//绘制转块
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;
}
上面这一部分是核心逻辑,也就是描写了小球的游戏逻辑。分别对应碰撞到了墙壁,碰撞了砖块,碰撞了挡板。只需要把这三个逻辑理清楚,那一切都会简单得多了。
有想要学习如何做游戏的,可以关注公众号:诗一样的代码,找我一起学习。